# HyperTwist Phase 4 dashboard live closure-recovery status and detail inspect surface packet

- bounded Phase `4` dashboard-consumer slice
- date: `2026-05-10`

## Intent

Stay on the deliberate live `UHyperTwistCoachDashboardWidget` guidance-consumer lane and expose the remaining live closure-recovery presentation state directly to gameplay and Blueprint callers.

## Why this packet exists

The dashboard already derived:

- the live closure-recovery status line
- the live closure-recovery detail line

But that state still only surfaced through widget text blocks. Callers still had to scrape dashboard text to inspect whether retained closure history is dominant, whether an active closure-history signal is currently promoted, and what policy/source detail is driving the current closure posture.

## What changed

- added `FHyperTwistTrainingCoachDashboardClosureRecoveryStatusInspectSurface`
- added `FHyperTwistTrainingCoachDashboardClosureRecoveryDetailInspectSurface`
- added `GetDisplayedClosureRecoveryStatusInspectSurface()`
- added `GetDisplayedClosureRecoveryDetailInspectSurface()`
- retained the exact displayed closure-recovery status and detail lines inside the widget so the new inspect surfaces report the same live strings the dashboard is already presenting
- kept the packet bounded to `UHyperTwistCoachDashboardWidget` plus shared surface types, with no dashboard redesign and no backend continuity changes

## Files

- `C:\HyperTwist\UnrealHyperTwist\Source\UnrealHyperTwist\Public\HyperTwistTraining\HyperTwistTrainingTypes.h`
- `C:\HyperTwist\UnrealHyperTwist\Source\UnrealHyperTwist\Public\HyperTwistTraining\HyperTwistCoachDashboardWidget.h`
- `C:\HyperTwist\UnrealHyperTwist\Source\UnrealHyperTwist\Private\HyperTwistTraining\HyperTwistCoachDashboardWidget.cpp`
- `C:\HyperTwist\docs\HYPERTWIST_ROADMAP_OVERHAUL_EXPANSION_GUIDE.md`

## Outcome

Gameplay and Blueprint callers can now inspect:

- the live closure-history dominance posture and whether an active closure-history signal exists
- the live closure-history signal id, headline, priority posture, and promoted-vs-background status
- the live closure policy line, retained keep-vs-suppress counts, guidance lane, and source/detail context

without scraping dashboard text blocks or reopening schedule/coach derivation.

## Validation

- full `Development Editor | Win64` MSBuild on `UnrealHyperTwist.sln`
  - passed with `0 Warning(s), 0 Error(s)`

## Next clean slice

Stay on the same live dashboard guidance-consumer lane and expose the remaining closure-recovery history navigation control surface over already-retained history state.
