# HyperTwist Phase 4 template-signal decision-bias provenance packet

## Purpose

This packet persists when the new decision-split guard is what actually changes a tied broader template-signal winner. That keeps selector audits precise: dashboard detail, template history, and recap can now distinguish plain `SupportBiasSnapshotGuard` wins from wins that were specifically reinforced by the stricter decision-split guard.

## Scope

- add a compact template-signal decision-bias enum under template launch selection provenance
- stamp that field only when the stricter decision-split guard is what separates two otherwise equal snapshot-guard candidates
- update broader template-signal decision summary wording so it explicitly names the decision-split guard when it specifically breaks the remaining tie
- append the stored decision-bias marker through the shared selector-detail formatter used by live detail, template history, and recap

## What landed

- `HyperTwistTrainingTypes.h`
  - added `EHyperTwistTrainingTemplateLaunchSelectionTemplateSignalSupportDecisionBiasKind`
  - nested `TemplateSignalSupportDecisionBiasKind` under `FHyperTwistTrainingTemplateLaunchSelectionProvenance`
- `HyperTwistCoachDashboardWidget.cpp`
  - added `ResolveTemplateLaunchSelectionTemplateSignalSupportDecisionBiasKindLabel(...)`
  - broader analytics provenance now stamps:
    - `DecisionSplitGuard` when the stricter decision-split guard specifically breaks the remaining tie between snapshot-guard candidates
  - broader analytics decision summaries now explicitly call out that decision-split guard when it changes the winner
  - shared selector detail now appends `template-signal decision-bias decision-split-guard` for runs that were specifically reinforced by the new guard
  - widened the analytics tie-break decision struct so the winner path can distinguish:
    - plain `SupportBiasSnapshotGuard` wins
    - `SupportBiasSnapshotGuard` wins that required the stricter decision-split guard

## Product effect

- live `[Template Launch]` detail now explicitly shows when a broader template-signal winner was not just a plain snapshot-guard win, but one specifically reinforced by the decision-split guard
- template history and recap preserve that same distinction from stored provenance
- plain snapshot-guard wins remain distinguishable because they do not show the new decision-bias detail

## Acceptance criteria

- broader template-signal selection provenance persists a distinct decision-bias kind when the decision-split guard changes the winner
- shared selector detail shows that stored decision-bias kind in live detail, template history, and recap
- broader analytics decision summaries explicitly mention when the decision-split guard specifically breaks the remaining tie
- plain `SupportBiasSnapshotGuard` wins continue to render without fabricated decision-split reinforcement claims

## Validation checklist

1. full `Development Editor|Win64` build succeeds
2. confirm broader analytics provenance stamps `TemplateSignalSupportDecisionBiasKind = DecisionSplitGuard` only when the stricter decision-split guard changes the winner
3. confirm shared selector detail shows `template-signal decision-bias decision-split-guard`
4. confirm plain snapshot-guard wins continue to render without the new decision-bias detail
