# HyperTwist Phase 4 template-signal support snapshot-guard provenance packet

## Purpose

This packet persists when the new earned-vs-non-earned support-bias snapshot guard actually changes a tied broader template-signal winner. That keeps selector audits precise: dashboard detail, template history, and recap can now distinguish plain legacy `confidence-lane-bias` wins from newer wins that were specifically broken by the historical support-bias snapshot guard.

## Scope

- add a compact template-signal support decision enum under template launch selection provenance
- stamp that field only when the earned-vs-non-earned support-bias snapshot guard decides a broader template-signal tie
- update broader template-signal decision summary wording so it explicitly names the snapshot guard when it decides the winner
- append the stored decision kind through the shared selector-detail formatter used by live detail, template history, and recap
- tighten internal naming so the runtime decision flag matches the actual snapshot-guard semantics

## What landed

- `HyperTwistTrainingTypes.h`
  - added `EHyperTwistTrainingTemplateLaunchSelectionTemplateSignalSupportDecisionKind`
  - nested `TemplateSignalSupportDecisionKind` under `FHyperTwistTrainingTemplateLaunchSelectionProvenance`
- `HyperTwistCoachDashboardWidget.cpp`
  - added `ResolveTemplateLaunchSelectionTemplateSignalSupportDecisionKindLabel(...)`
  - broader analytics provenance now stamps:
    - `SupportBiasSnapshotGuard` when the historical earned-vs-non-earned support-bias snapshot guard breaks the tie
  - broader analytics decision summaries now distinguish:
    - winner decided by the snapshot guard
    - winner chosen without that snapshot guard deciding the outcome
  - shared selector detail now appends `template-signal decision support-bias-snapshot-guard` for runs that used the new guard
  - renamed the local decision flag to `bCandidateUsedTemplateSignalSupportBiasSnapshotGuard`

## Product effect

- live `[Template Launch]` detail now explicitly shows when a broader template-signal winner came from the historical support-bias snapshot guard
- template history and recap preserve that same distinction from stored provenance
- older `confidence-lane-bias` runs without the new persisted decision kind remain distinguishable because they do not show the new snapshot-guard detail

## Acceptance criteria

- broader template-signal selection provenance persists a distinct decision kind when the support-bias snapshot guard changes the winner
- shared selector detail shows that stored decision kind in live detail, template history, and recap
- broader analytics decision summaries explicitly mention whether the snapshot guard decided the winner
- legacy `confidence-lane-bias` runs without the new field continue to render without fabricated snapshot-guard claims

## Validation checklist

1. full `Development Editor|Win64` build succeeds
2. confirm broader analytics provenance stamps `TemplateSignalSupportDecisionKind = SupportBiasSnapshotGuard` when the guard breaks the tie
3. confirm shared selector detail shows `template-signal decision support-bias-snapshot-guard`
4. confirm broader analytics decision summaries explicitly differentiate snapshot-guard wins from non-snapshot-guard wins
