# HyperTwist Phase 4 dashboard live schedule horizon status and schedule policy / friction inspect surface packet

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

## Intent

Stay on the deliberate live `UHyperTwistCoachDashboardWidget` guidance-consumer lane and expose the remaining live schedule horizon and schedule policy / friction presentation state directly to gameplay and Blueprint callers.

## Why this packet exists

The dashboard already derived:

- the live schedule horizon status line
- the live schedule policy / friction line

But that state still only surfaced through widget text blocks. Callers still had to scrape dashboard text to inspect the current queue-window posture, reschedule pressure, deferral reason, and closure policy presentation.

## What changed

- added `FHyperTwistTrainingCoachDashboardScheduleHorizonStatusInspectSurface`
- added `FHyperTwistTrainingCoachDashboardSchedulePolicyFrictionInspectSurface`
- added `GetDisplayedScheduleHorizonStatusInspectSurface()`
- added `GetDisplayedSchedulePolicyFrictionInspectSurface()`
- retained the exact displayed schedule horizon and schedule policy lines inside the widget so the new inspect surfaces report the same live strings the dashboard is already presenting
- refreshed the roadmap docs to record the donor-portfolio phase taxonomy, including where deep donor source audit, selective restrictive clean-room work, and phase-specific donor implementation belong in the live roadmap
- 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 schedule horizon label, queue-window posture, active/next entry routing, and horizon counts
- the live schedule policy / friction line, reschedule pressure, deferred-window posture, dominant deferral reason, and closure-policy context

without scraping dashboard text blocks or reopening schedule 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 land the closure-recovery live status and closure-recovery detail inspect surface pair.
