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

## Purpose

This packet aggregates the newly persisted template-signal decision-bias provenance back into repo-backed template analytics. The dashboard can now compare plain `SupportBiasSnapshotGuard` launches against the stricter `DecisionSplitGuard`-reinforced subset instead of treating every snapshot-guard win as the same lane.

## Scope

- add repo-backed template-scoped stats buckets for `SupportBiasSnapshotGuard` runs with and without the persisted `DecisionSplitGuard` bias marker
- route stored `TemplateSignalSupportDecisionBiasKind` through template launch scoped analytics derivation
- extend the shared `template-signal decision` analytics fragment so live dashboard detail, template history, and recap expose the new nested snapshot-guard split
- report outcome deltas when both plain snapshot-guard and decision-split-guard lanes have outcome history

## What landed

- `HyperTwistTrainingTypes.h`
  - added `DashboardAnalyticsTieBreakTemplateScopedSignalSupportBiasSnapshotGuardNoDecisionBiasStats`
  - added `DashboardAnalyticsTieBreakTemplateScopedSignalSupportBiasSnapshotGuardDecisionSplitGuardStats`
- `HyperTwistTrainingRepositoryLibrary.cpp`
  - added matching scoped accumulators
  - `SupportBiasSnapshotGuard` runs with stored `TemplateSignalSupportDecisionBiasKind = DecisionSplitGuard` now flow into the reinforced bucket
  - `SupportBiasSnapshotGuard` runs without that retained bias kind, including older records, flow into the plain snapshot-guard bucket
- `HyperTwistCoachDashboardWidget.cpp`
  - extended `BuildTemplateLaunchAnalyticsTieBreakTemplateSignalDecisionSplitFragment(...)`
  - shared analytics detail now appends plain snapshot-guard vs decision-split-guard lane summaries under the existing decision split
  - nested split shows `decision-split-minus-plain` success and mistake deltas when both lanes have outcome history

## Product effect

- operators can now see whether the stricter `DecisionSplitGuard`-reinforced subset of snapshot-guard launches is actually outperforming plain snapshot-guard launches
- template launch history and recap inherit the same nested split automatically because they already reuse the shared analytics detail formatter
- older snapshot-guard runs remain analyzable without migration because missing decision-bias provenance is treated as plain snapshot-guard history

## Acceptance criteria

- repo-backed template launch scoped stats retain separate snapshot-guard buckets for plain wins and `DecisionSplitGuard`-reinforced wins
- shared dashboard analytics detail renders the nested snapshot-guard split anywhere template launch analytics are shown
- nested decision-bias deltas appear only when both snapshot-guard lanes have outcome history
- older snapshot-guard runs without retained `TemplateSignalSupportDecisionBiasKind` continue to participate in analytics through the plain snapshot-guard bucket

## Validation checklist

1. full `Development Editor|Win64` build succeeds
2. confirm scoped analytics route stored `TemplateSignalSupportDecisionBiasKind = DecisionSplitGuard` into the reinforced bucket
3. confirm shared analytics detail shows `plain-snapshot-guard ... | decision-split-guard ...`
4. confirm older snapshot-guard runs without retained decision-bias provenance still surface under `plain-snapshot-guard`
