# HyperTwist Phase 4 template-signal decision split analytics packet

## Purpose

This packet aggregates the newly persisted template-signal support decision kind back into repo-backed template analytics. The dashboard can now compare broader template-signal launches that did not need the historical support-bias snapshot guard against launches where that guard explicitly decided the winner.

## Scope

- add repo-backed template-scoped stats buckets for broader template-signal launches with and without the `SupportBiasSnapshotGuard` decision
- route stored `TemplateSignalSupportDecisionKind` through template launch scoped analytics derivation
- append a shared `template-signal decision` analytics fragment so the live dashboard launch row, template history, and recap all expose the new split
- report outcome deltas when both decision lanes have meaningful outcome history

## What landed

- `HyperTwistTrainingTypes.h`
  - added `DashboardAnalyticsTieBreakTemplateScopedSignalNoSupportBiasSnapshotGuardStats`
  - added `DashboardAnalyticsTieBreakTemplateScopedSignalSupportBiasSnapshotGuardStats`
- `HyperTwistTrainingRepositoryLibrary.cpp`
  - added matching scoped accumulators
  - broader `TemplateScopedOutcomeSignal` runs with `TemplateSignalSupportDecisionKind = SupportBiasSnapshotGuard` now flow into the guard bucket
  - all other broader template-signal runs, including older records with no retained decision kind, flow into the `no-support-bias-snapshot-guard` bucket
- `HyperTwistCoachDashboardWidget.cpp`
  - added `BuildTemplateLaunchAnalyticsTieBreakTemplateSignalDecisionSplitFragment(...)`
  - shared analytics detail now appends `template-signal decision ...`
  - decision split shows both lanes plus `snapshot-guard-minus-no-guard` success and mistake deltas when both lanes have outcome history

## Product effect

- operators can now see whether broader template-signal launches that were explicitly decided by the historical support-bias snapshot guard are outperforming the broader template-signal launches that were selected without that guard
- template launch history and recap inherit the same decision split automatically because they already reuse the shared analytics detail formatter
- older runs remain analyzable without migration because missing decision-kind provenance is treated as `no-snapshot-guard`

## Acceptance criteria

- repo-backed template launch scoped stats retain separate broader template-signal buckets for `SupportBiasSnapshotGuard` and `no-snapshot-guard`
- shared dashboard analytics detail renders the new `template-signal decision` fragment anywhere template launch analytics are shown
- decision split deltas appear only when both decision lanes have outcome history
- older runs without retained `TemplateSignalSupportDecisionKind` continue to participate in analytics through the `no-snapshot-guard` bucket

## Validation checklist

1. full `Development Editor|Win64` build succeeds
2. confirm template launch scoped analytics route stored `TemplateSignalSupportDecisionKind = SupportBiasSnapshotGuard` into the new guard bucket
3. confirm shared analytics detail shows `template-signal decision no-snapshot-guard ... | support-bias-snapshot-guard ...`
4. confirm older broader template-signal runs without retained decision kind still surface under `no-snapshot-guard`
