# HyperTwist Phase 4 template-signal decision-bias selection split guard packet

## Purpose

This packet tightens the stricter `DecisionSplitGuard` reinforcement rule so tied broader template-signal selection no longer compares that reinforced lane against all non-snapshot-guard history. It now compares reinforced `decision-split-guard` outcomes against plain snapshot-guard history, which is the actual lane the stricter guard is supposed to outperform before it gets extra preference.

## Scope

- retarget the existing template-signal decision-bias helper to compare:
  - `decision-split-guard`
  - vs `plain-snapshot-guard`
- keep the existing minimum-sample and score/success/mistake thresholds, but apply them to the new nested snapshot-guard split
- update shared analytics wording so the current decision-bias state reports reinforced and plain snapshot-guard outcome counts instead of broader guard vs no-guard counts

## What landed

- `HyperTwistCoachDashboardWidget.cpp`
  - `HasTemplateLaunchTemplateSignalSupportDecisionBias(...)` now uses:
    - `DashboardAnalyticsTieBreakTemplateScopedSignalSupportBiasSnapshotGuardDecisionSplitGuardStats`
    - `DashboardAnalyticsTieBreakTemplateScopedSignalSupportBiasSnapshotGuardNoDecisionBiasStats`
  - tied broader analytics selection still gates the stricter reinforcement through the same helper, but the helper now only earns when reinforced outcomes are actually beating plain snapshot-guard history
  - shared `template-signal decision` analytics detail now reports:
    - `decision-bias earned/suppressed reinforced outcomes ... | plain outcomes ...`

## Product effect

- the stricter `DecisionSplitGuard` lane now has to outperform plain snapshot-guard history, not merely broader no-snapshot-guard history, before it can reinforce future tied broader selections
- operators see the current gate in the same terms the selector now uses, which makes the analytics readout match the actual decision policy

## Acceptance criteria

- `HasTemplateLaunchTemplateSignalSupportDecisionBias(...)` compares reinforced `decision-split-guard` history against plain snapshot-guard history
- tied broader `TemplateScopedOutcomeSignal` selection only gets the stricter reinforcement when that reinforced-vs-plain comparison clears the existing thresholds
- shared analytics detail reports reinforced and plain snapshot-guard outcome counts for the current decision-bias state

## Validation checklist

1. full `Development Editor|Win64` build succeeds
2. confirm the decision-bias helper reads the nested snapshot-guard split instead of the older snapshot-guard vs no-snapshot-guard split
3. confirm shared analytics detail shows `decision-bias earned/suppressed reinforced outcomes ... | plain outcomes ...`
4. confirm tied broader analytics selection still flows through the same decision-bias helper after the comparison target change
