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

## Purpose

This packet aggregates the newly persisted historical decision-bias snapshot guard provenance back into repo-backed template analytics. The dashboard can now compare plain `DecisionSplitGuard` launches against the subset where earned-vs-non-earned decision-bias snapshot history became the final winner instead of treating every decision-split win as the same lane.

## Scope

- add repo-backed template-scoped stats buckets for `DecisionSplitGuard` launches with and without the persisted `DecisionBiasSnapshotGuard` marker
- route stored `TemplateSignalSupportDecisionBiasSnapshotDecisionKind` 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 decision-split split
- report outcome deltas when both plain decision-split and history-reinforced decision-bias-snapshot-guard lanes have outcome history

## What landed

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

## Product effect

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

## Acceptance criteria

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

## Validation checklist

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