# HyperTwist Phase 4 template-signal support-bias snapshot analytics packet

## Purpose

This packet pushes the new at-launch template-signal `support-bias earned/suppressed` snapshot back into repo-backed template analytics. The dashboard can now compare broader `TemplateScopedOutcomeSignal` outcomes that launched while support-bias was already earned against outcomes that launched while that lane was still suppressed, instead of only showing the current guard state.

## Scope

- add repo-backed broader template-signal snapshot buckets for:
  - `earned`
  - `suppressed`
  - `no-retained` for older launches before the new persisted snapshot existed
- route broader `TemplateScopedOutcomeSignal` launches into those buckets from stored selection provenance
- surface the split through shared template analytics detail used by live detail, template history, and recap
- report an `earned-minus-suppressed` success and mistake delta when both snapshot lanes have outcome history
- rename the existing live support split clause to `current support-bias` so it is not confused with the new at-launch snapshot analytics

## What landed

- `HyperTwistTrainingTypes.h`
  - added:
    - `DashboardAnalyticsTieBreakTemplateScopedSignalSupportBiasSnapshotEarnedStats`
    - `DashboardAnalyticsTieBreakTemplateScopedSignalSupportBiasSnapshotSuppressedStats`
    - `DashboardAnalyticsTieBreakTemplateScopedSignalSupportBiasSnapshotNoRetainedStats`
- `HyperTwistTrainingRepositoryLibrary.cpp`
  - widened the repo accumulator with matching support-bias snapshot buckets
  - broader template-signal launches now route by stored `TemplateSignalSupportBiasSnapshot.State`
  - older broader launches with no retained snapshot flow into `no-retained`
  - finalizes and persists all three snapshot buckets into repo-backed template analytics
- `HyperTwistCoachDashboardWidget.cpp`
  - added `BuildTemplateLaunchAnalyticsTieBreakTemplateSignalSupportBiasSnapshotFragment(...)`
  - shared analytics detail now appends a `template-signal support-bias snapshot` section
  - the older live guard summary inside the support-kind split now reads `current support-bias ...` to distinguish it from the stored at-launch split

## Product effect

- operators can now inspect whether broader analytics picks launched with an already-earned support-bias lane are actually outperforming broader picks launched while that lane was still suppressed
- older broader launches remain visible under `no-retained` instead of being silently folded into a fabricated earned or suppressed bucket
- live `[Template Launch]` detail, template history, and recap all inherit the new repo-backed snapshot split automatically

## Acceptance criteria

- repo-backed template analytics persist broader template-signal support-bias snapshot buckets for `earned`, `suppressed`, and `no-retained`
- broader launches route by stored `TemplateSignalSupportBiasSnapshot.State`
- shared analytics detail shows the new snapshot split
- when both earned and suppressed lanes have outcome history, shared analytics detail reports `earned-minus-suppressed` success and mistake deltas

## Validation checklist

1. full `Development Editor|Win64` build succeeds
2. confirm repository analytics route broader template-signal launches by stored support-bias snapshot state
3. confirm older launches without a retained snapshot appear under `no-retained`
4. confirm live detail, template history, and recap all show the new `template-signal support-bias snapshot` split through shared analytics detail
