# HyperTwist Phase 4 dashboard queue scheduling recovery band inspect surface packet

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

## Intent

Deliberately choose another adjacent live dashboard consumer band and expose the queue counts, schedule horizon, schedule policy, and queue-recovery cluster as one inspectable gameplay and Blueprint seam.

## Why this packet exists

`UHyperTwistCoachDashboardWidget` already exposed five adjacent queue/scheduling/recovery surfaces:

- `GetDisplayedQueueCountsStatusInspectSurface()`
- `GetDisplayedScheduleHorizonStatusInspectSurface()`
- `GetDisplayedSchedulePolicyFrictionInspectSurface()`
- `GetDisplayedQueueRecoveryStatusInspectSurface()`
- `GetDisplayedQueueRecoveryDetailInspectSurface()`

But callers that wanted to reason about that whole scheduling-and-recovery dashboard cluster still had to stitch those adjacent getters together manually.

## What changed

- added `FHyperTwistTrainingCoachDashboardQueueSchedulingRecoveryBandInspectSurface`
- added `GetDisplayedQueueSchedulingRecoveryBandInspectSurface()`
- composed the new surface entirely over the already-landed queue counts/status, schedule horizon, schedule policy/friction, and queue recovery live status/detail surfaces
- kept the packet bounded by avoiding any new backend derivation or new widget-state caching

## 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 whole adjacent queue scheduling / recovery dashboard band through one surface
- queue counts/status, queue execution, schedule horizon, schedule policy/friction, and queue recovery status/detail lines together
- queue id, active queue entry id, focus deck/method context, current horizon label, dominant deferral reason, recovery lane, and recovery source context
- queue totals, ready/deferred/manual/follow-up counts, reschedule pressure, outstanding deferred/completion-gap posture, archive-window posture, and queue-recovery actionability posture

without stitching five separate adjacent getters together manually.

## Validation

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

## Next clean slice

Treat the retained-history text-band lane, the template-launch / preview action-control band, the execution-action-control band, the verification / recognition / review-policy status band, the selected-queue band, and the queue scheduling / recovery band as landed baseline, then deliberately choose another adjacent live dashboard consumer band instead of reopening already-landed surfaces by drift.
