# HyperTwist Phase 4 template launch analytics support split packet

Created on `2026-05-07`

Status:

- first-party HyperTwist packet
- bounded Phase `4` dashboard template analytics refinement slice

## Purpose

This packet aggregates analytics tie-break outcomes by persisted support kind so the dashboard can compare tie-break launches backed by selector-split confidence against tie-break launches decided by broader template-scoped outcome signal alone.

The open tasks were:

- stop leaving the new analytics support provenance as run-by-run audit detail only
- derive repo-backed per-template support-kind outcome splits inside the existing template launch analytics lane
- surface that support-kind comparison back into the dashboard without creating a new screen

It is not:

- another selector math packet
- a new template launch history packet
- a new repository API surface beyond scoped stat derivation
- a non-dashboard analytics consumer packet

## Scope

Bounded lane:

- extend selection-scoped template stats to carry analytics support identity
- derive per-template analytics-tie-break support-kind aggregates from stored run provenance
- persist two repo-backed support buckets for dashboard analytics tie-break launches: broader template-scoped signal and selector-split confidence
- append the new support-kind split comparison to the shared dashboard template analytics detail fragment already used by live launch, template history, and recap

Out of scope:

- changing the current analytics support provenance schema
- changing selector confidence thresholds
- feeding the new support-kind split back into selector behavior
- adding separate support-kind navigation or controls

## Why this was the right next packet

The previous packet made it possible to audit whether a single analytics tie-break win carried selector-split confidence support.

That still left the obvious aggregate gap:

- operators could inspect support kind on an individual launch
- but they still could not tell whether selector-split-confidence-backed tie-breaks were actually outperforming broader template-signal tie-breaks over time
- and the repo-backed template analytics lane still treated all analytics tie-break launches as one bucket

So the next honest move was:

- keep the existing repo-backed template launch scoped stats as the aggregation home
- split analytics tie-break outcomes by support kind inside that same structure
- and surface that comparison through the dashboard’s existing shared analytics detail path

## What landed

Primary code changes:

- `UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingTypes.h`
  - added analytics-support identity to `FHyperTwistTrainingTemplateLaunchSelectionScopedStats`
  - added per-template support-kind analytics tie-break stat buckets for template-scoped signal and selector-split confidence
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp`
  - derives repo-backed support-kind aggregates for dashboard analytics tie-break launches from stored selection provenance
  - computes launch counts, outcome counts, success rate, and average mistakes separately for each support kind
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp`
  - adds a shared support-kind split formatter for template analytics detail
  - appends the new repo-backed support-kind comparison to the live template launch detail, template launch history, and template-backed recap through the existing analytics detail fragment

## Product effect

Dashboard template analytics can now compare two different kinds of analytics tie-break wins for the same template:

- broader template-scoped outcome signal tie-break launches
- selector-split-confidence-backed tie-break launches

Those support-kind splits are now visible anywhere the dashboard already shows shared template analytics detail, and they are derived from stored run provenance rather than widget-retained state.

## Acceptance criteria

- repo-backed template launch scoped stats split analytics tie-break outcomes by support kind
- dashboard template analytics detail shows the new support-kind comparison when data exists
- live template launch detail, template launch history, and template-backed recap all inherit that comparison through the shared analytics detail formatter
- full product build succeeds

## Validation checklist

1. build `UnrealHyperTwist.sln` / `UnrealHyperTwistEditor`
2. confirm repo-backed template stats derive separate support-kind buckets for analytics tie-break launches
3. confirm the dashboard analytics detail fragment shows the support-kind split comparison on live launch, history, and recap surfaces
4. confirm templates with no support-kind tie-break history show the explicit empty-state message

That is the packet.
