# HyperTwist Phase 4 template launch tie-break confidence guard packet

Created on `2026-05-07`

Status:

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

## Purpose

This packet stops sparse analytics tie-break history from reinforcing future dashboard template choices unless that tie-break lane has enough stored outcomes to outperform the same template's plain dashboard-priority lane.

The open tasks were:

- consume the new selector-split analytics back into launch selection rather than leaving them as display-only stats
- keep analytics tie-break selection conservative under sparse history
- require stored tie-break lane evidence to clear a real sample-and-outperformance guard before it can strengthen a future tie decision

It is not:

- a change to the primary review or recovery ranking rules
- a new repository aggregation packet
- a new selection provenance schema packet
- a dashboard history or recap redesign packet

## Scope

Bounded lane:

- reuse the existing stored outcome tie-break scorer for both whole-template and selector-lane analytics
- derive a small confidence bonus from selector-split stats only when the analytics tie-break lane has enough outcome runs
- require that tie-break lane to beat the same template's dashboard primary lane on stronger-than-noise outcome signal before awarding that bonus
- keep the bonus small so analytics confidence nudges tied selections instead of rewriting the launch model

Out of scope:

- changing which templates are eligible for dashboard launch
- changing how repo-backed selector split stats are stored
- persisting a new selector reason class
- changing non-dashboard template launch paths

## Why this was the right next packet

The previous packet made it possible to see whether analytics tie-break launches were outperforming plain priority launches.

That immediately exposed the next gap:

- the selector could now display that split
- but the selector itself still treated all stored outcome signal the same
- and a handful of analytics-tie-break wins could start reinforcing future tied selections without proving that the tie-break lane really outperformed the template's ordinary dashboard-priority lane

So the next honest move was:

- keep the current overall analytics tie-break intact
- let selector-split history contribute only as a small confidence nudge
- and gate that nudge behind both minimum sample size and meaningful lane outperformance

## What landed

Primary code changes:

- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp`
  - factored the outcome-signal scorer so whole-template and selector-lane analytics use the same bounded score math
  - added selector-lane outcome counters and a small confidence bonus path
  - requires the `AnalyticsTieBreak` lane to have enough stored outcome runs and to beat the same template's `PrimaryDashboardPriority` lane on meaningful success/mistake/score signal before that bonus is applied
  - folds that bonus into the existing equal-priority dashboard analytics tie-break without changing the primary launch ranking rules

## Product effect

Dashboard template tie-break selection is now more resistant to self-reinforcing noise:

- tied templates still use the same overall analytics tie-break path as before
- selector-split history only strengthens a template when the tie-break lane has enough actual outcome runs
- that tie-break lane must also outperform the template's own primary dashboard lane before it earns extra confidence
- sparse or inconclusive tie-break history no longer adds weight just because it exists

## Acceptance criteria

- existing primary dashboard template ranking rules stay unchanged
- selector-split analytics influence future tied selections only after clearing a minimum-sample guard
- tie-break lane confidence is only awarded when it meaningfully beats the same template's primary dashboard lane
- full product build succeeds

## Validation checklist

1. build `UnrealHyperTwist.sln` / `UnrealHyperTwistEditor`
2. confirm equal-priority template selection still uses the existing analytics tie-break path
3. confirm selector-split history only adds confidence when the analytics tie-break lane has enough outcome runs and outperforms the primary lane
4. confirm sparse selector-split history does not create extra preference on its own

That is the packet.
