From b30a7ee4882000ce73f922cd3a6e82d824ff939e Mon Sep 17 00:00:00 2001 From: axiomlogicnexus Date: Wed, 6 May 2026 03:17:51 +0200 Subject: [PATCH] Converge dashboard generated-mode flow onto panel surface --- .../HyperTwistCoachDashboardWidget.cpp | 7 +- ...DASHBOARD_CONVERGENCE_PACKET_2026-05-06.md | 83 +++++++++++++++++++ 2 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 docs/arch/HYPERTWIST_THIN_GENERATED_MODE_DASHBOARD_CONVERGENCE_PACKET_2026-05-06.md diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp index b38d3da..0e78fc4 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp @@ -10,7 +10,6 @@ #include "Components/VerticalBox.h" #include "Components/VerticalBoxSlot.h" #include "HAL/PlatformTime.h" -#include "HyperTwistTraining/HyperTwistTrainingRuntimeLibrary.h" namespace HyperTwistCoachDashboardWidgetInternal { @@ -3674,11 +3673,7 @@ bool UHyperTwistCoachDashboardWidget::ContinueCurrentRunFlow() { FHyperTwistTrainingRunState RunState; FString BlockedReason; - bSucceeded = UHyperTwistTrainingRuntimeLibrary::TryExecuteActiveImportedGeneratedModeLaunchRequest( - this, - RunState, - BlockedReason - ); + bSucceeded = TryExecuteActiveImportedGeneratedModeLaunchRequest(RunState, BlockedReason); if (bSucceeded) { LastStepResult = FHyperTwistTrainingRunStepResult(); diff --git a/docs/arch/HYPERTWIST_THIN_GENERATED_MODE_DASHBOARD_CONVERGENCE_PACKET_2026-05-06.md b/docs/arch/HYPERTWIST_THIN_GENERATED_MODE_DASHBOARD_CONVERGENCE_PACKET_2026-05-06.md new file mode 100644 index 0000000..e873b7a --- /dev/null +++ b/docs/arch/HYPERTWIST_THIN_GENERATED_MODE_DASHBOARD_CONVERGENCE_PACKET_2026-05-06.md @@ -0,0 +1,83 @@ +# HyperTwist thin generated-mode dashboard convergence packet + +Created on `2026-05-06` + +Status: + +- first-party HyperTwist packet +- bounded thin runtime-consumer completion slice + +## Purpose + +This packet closes the last remaining first-party generated-mode consumer leak after the panel widget and session actor packet landed. + +The open task is: + +- converge the coach dashboard widget onto the already-landed panel consumer surface so it stops bypassing that surface for generated-mode execution + +It is not: + +- a new generated-mode backend packet +- a dashboard redesign +- a new consumer family +- a broad runtime-library rewrite + +## Scope + +Bounded lane: + +- `UHyperTwistCoachDashboardWidget` should use the inherited `UHyperTwistTrainingPanelWidget` generated-mode consumer method instead of calling the runtime library directly + +Required result: + +- the dashboard widget executes generated-mode launch requests through `TryExecuteActiveImportedGeneratedModeLaunchRequest(...)` inherited from the panel widget +- the dashboard widget keeps consuming the same refreshed cached run state and blocked-reason surfaces after execution +- the dashboard file no longer carries a direct generated-mode runtime-library bypass + +Out of scope: + +- changing generated-mode readiness heuristics +- changing generated-mode request creation behavior +- adding new dashboard UX +- widening into later-phase orchestration work + +## Current owned product truth + +These pieces are already live in first-party code: + +- bounded generated-mode execution in the training subsystem and runtime library +- dashboard continue-flow support for generated-mode launch decks +- panel widget and session actor wrappers for selector application, request creation, and request execution + +What was still missing: + +- the dashboard widget was still calling the runtime library directly for generated-mode execution even though it already inherits the panel surface that now owns that consumer lane + +## Implementation target + +The slice should do the following: + +1. replace the direct runtime-library execute call in `ContinueCurrentRunFlow()` +2. route that execution through the inherited panel method +3. preserve the same dashboard refresh and transition-update flow after execution + +## Suggested file ownership + +Primary edit surfaces: + +- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp` +- `docs/arch/HYPERTWIST_THIN_GENERATED_MODE_DASHBOARD_CONVERGENCE_PACKET_2026-05-06.md` + +## Acceptance criteria + +- the dashboard widget no longer directly calls the runtime library for generated-mode execution +- generated-mode dashboard continue flow now goes through the same panel consumer surface as the other thin consumers +- full UE build still succeeds + +## Validation checklist + +1. build `UnrealHyperTwist.sln` +2. confirm `ContinueCurrentRunFlow()` now uses the inherited panel method +3. confirm no direct generated-mode runtime-library execute call remains in the dashboard widget + +That is the packet.