diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp index f5b5232..66a4152 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp @@ -29651,7 +29651,13 @@ FHyperTwistTrainingReviewFlowStatus UHyperTwistTrainingRepositoryLibrary::Derive } } - if (ReviewPlan.Policy.PolicyKind == EHyperTwistTrainingReviewPolicyKind::CoachReview && FlowStatus.RepeatCount > 0) + const bool bCoachFacingRepeatPressure = + FlowStatus.RepeatCount > 0 + && ( + ReviewPlan.Policy.PolicyKind == EHyperTwistTrainingReviewPolicyKind::CoachReview + || ReviewPlan.Policy.bPreferRecognitionReplayReview + ); + if (bCoachFacingRepeatPressure) { FlowStatus.bNeedsCoachIntervention = true; } diff --git a/docs/arch/HYPERTWIST_PHASE4_RECOGNITION_REVIEW_INTERVENTION_CONTINUITY_PACKET_2026-05-06.md b/docs/arch/HYPERTWIST_PHASE4_RECOGNITION_REVIEW_INTERVENTION_CONTINUITY_PACKET_2026-05-06.md new file mode 100644 index 0000000..4e969bd --- /dev/null +++ b/docs/arch/HYPERTWIST_PHASE4_RECOGNITION_REVIEW_INTERVENTION_CONTINUITY_PACKET_2026-05-06.md @@ -0,0 +1,93 @@ +# HyperTwist Phase 4 recognition review intervention continuity packet + +Created on `2026-05-06` + +Status: + +- first-party HyperTwist packet +- bounded Phase `4` coach-to-review runtime validation slice + +## Purpose + +This packet closes a review-flow continuity gap inside the now-live recognition-assisted coach-to-review loop. + +The open task is: + +- make recognition-biased review plans escalate into the same coach-intervention lane as explicit coach-review plans when repeat pressure appears + +It is not: + +- a new recognition transport packet +- a new queue persistence packet +- a new dashboard packet +- a broad review-system rewrite + +## Scope + +Bounded lane: + +- adjust review-flow derivation so repeat pressure triggers coach intervention when the active review policy is either: + - explicit `CoachReview` + - recognition-biased through `bPreferRecognitionReplayReview` +- let existing review-program summary, coach brief, and dashboard inspection derive the corrected state through the already-landed continuity path + +Out of scope: + +- new review-plan schema +- new coach-signal heuristics +- replay scoring changes +- broader UI changes + +## Why this was the right next packet + +Before this slice: + +- recognition replay pressure already flowed into coach signals and briefs +- recognition-review preference already persisted through queue materialization and active review policy +- dashboard inspection already surfaced active review policy and intervention state + +But one live derivation still lagged behind: + +- review-flow intervention treated repeat pressure as coach-facing only when policy kind was explicit `CoachReview` + +That meant a recognition-biased review plan could: + +- carry recognition-review preference correctly +- accumulate repeat pressure correctly +- still fail to trip the same coach-intervention lane unless it also used the explicit `CoachReview` kind + +So the next honest move was: + +- align review-flow intervention semantics with the already-landed recognition-review continuity path + +## What landed + +Primary code changes: + +- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp` + - review-flow derivation now treats recognition-biased repeat pressure as coach-facing intervention pressure alongside explicit `CoachReview` + +## Product effect + +The coach-to-review loop is now more coherent under recognition-assisted review: + +- recognition-biased review plans with repeats now surface `coach-review-needed` +- review-program summaries now inherit that intervention pressure through the existing derivation path +- coach brief generation now sees the same intervention state without needing a new heuristic packet +- dashboard inspection remains truthful because it already renders the derived intervention flag + +## Acceptance criteria + +- a recognition-biased review plan with repeat pressure sets `bNeedsCoachIntervention` +- `NextActionLabel` resolves to `coach-review-needed` for that case +- review-program summary inherits the corrected intervention state without schema changes +- full product build succeeds + +## Validation checklist + +1. build `UnrealHyperTwist.sln` / `UnrealHyperTwistEditor` +2. confirm review-flow derivation treats recognition-biased repeat pressure as coach-facing +3. confirm the derived intervention state continues through review-program summary and coach brief generation without reopening a broader packet +4. confirm dashboard inspection remains aligned because it reads the existing derived flow state + +That is the packet.