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

## Purpose

This packet pushes the newly persisted at-launch template-signal decision-bias snapshot into repo-backed template analytics. Broader `TemplateScopedOutcomeSignal` launches can now be compared by whether the reinforced-vs-plain snapshot-guard lane was already `earned`, still `suppressed`, or not retained yet at launch time.

## Scope

- widen per-template launch scoped stats with decision-bias snapshot buckets for:
  - `earned`
  - `suppressed`
  - `no-retained`
- route broader template-signal dashboard analytics launches into those buckets from persisted selection provenance
- surface the new split through the shared dashboard analytics detail

## What landed

- `HyperTwistTrainingTypes.h`
  - added repo-backed scoped stats for:
    - `DashboardAnalyticsTieBreakTemplateScopedSignalSupportDecisionBiasSnapshotEarnedStats`
    - `DashboardAnalyticsTieBreakTemplateScopedSignalSupportDecisionBiasSnapshotSuppressedStats`
    - `DashboardAnalyticsTieBreakTemplateScopedSignalSupportDecisionBiasSnapshotNoRetainedStats`
- `HyperTwistTrainingRepositoryLibrary.cpp`
  - widened the template launch scoped accumulator with matching decision-bias snapshot buckets
  - routes broader `TemplateScopedOutcomeSignal` launches by persisted
    `TemplateSignalSupportDecisionBiasSnapshot.State`
  - treats older runs with no retained snapshot as `no-retained`
- `HyperTwistCoachDashboardWidget.cpp`
  - added shared `template-signal decision-bias snapshot` analytics detail
  - appends `earned-minus-suppressed` success and mistake deltas when both lanes have outcome history

## Product effect

- template analytics now show whether broader analytics picks launched with an already-earned reinforced-vs-plain guard are outperforming picks made while that lane was still suppressed
- history, recap, and live dashboard template analytics all inherit the same repo-backed split through the shared detail fragment

## Acceptance criteria

- repo-backed template analytics persist `earned`, `suppressed`, and `no-retained` buckets for at-launch decision-bias snapshot state
- broader `TemplateScopedOutcomeSignal` launches are routed by the stored snapshot state, not recomputed current guard state
- shared dashboard analytics detail shows the new `template-signal decision-bias snapshot` split

## Validation checklist

1. full `Development Editor|Win64` build succeeds
2. confirm repository analytics route broader template-signal launches by `TemplateSignalSupportDecisionBiasSnapshot.State`
3. confirm template scoped stats expose the three new decision-bias snapshot buckets
4. confirm shared analytics detail shows `template-signal decision-bias snapshot` with `earned`, `suppressed`, and `no-retained` lanes
