Close stale completed review inspection
This commit is contained in:
parent
911d8b0f54
commit
9cb2e41c04
2 changed files with 110 additions and 1 deletions
|
|
@ -2291,7 +2291,10 @@ FHyperTwistTrainingCoachPanelState UHyperTwistTrainingSubsystem::GetActiveCoachP
|
|||
bCoachPrefersRecognitionReview ? TEXT("preferred") : TEXT("inactive")
|
||||
);
|
||||
const bool bHasActiveReviewPlan = ActiveReviewPlanState.IsStructurallyValid();
|
||||
const bool bHasReviewPolicyPreview = HasActiveRun();
|
||||
const bool bHasReviewPolicyPreview =
|
||||
HasActiveRun()
|
||||
&& ActiveRunState.Session.SessionState != EHyperTwistTrainingSessionState::Completed
|
||||
&& ActiveRunState.Session.SessionState != EHyperTwistTrainingSessionState::Aborted;
|
||||
FHyperTwistTrainingReviewPolicy DisplayedReviewPolicy;
|
||||
if (bHasActiveReviewPlan)
|
||||
{
|
||||
|
|
@ -5037,6 +5040,9 @@ void UHyperTwistTrainingSubsystem::RefreshRepositoryViews()
|
|||
RepositoryViewUserId,
|
||||
RepositoryViewReferenceUtc
|
||||
);
|
||||
const bool bRepositoryHasPendingReviewPlan =
|
||||
!ActiveReviewProgramSummary.CurrentPlanId.IsEmpty()
|
||||
|| !ActiveReviewProgramSummary.NextPlanId.IsEmpty();
|
||||
if (!bHasActiveRunContext)
|
||||
{
|
||||
const FString RepositoryReviewPlanId = !ActiveReviewProgramSummary.CurrentPlanId.IsEmpty()
|
||||
|
|
@ -5061,6 +5067,14 @@ void UHyperTwistTrainingSubsystem::RefreshRepositoryViews()
|
|||
ActiveReviewPlanState = FHyperTwistTrainingReviewPlanState();
|
||||
}
|
||||
}
|
||||
else if (
|
||||
(ActiveRunState.Session.SessionState == EHyperTwistTrainingSessionState::Completed
|
||||
|| ActiveRunState.Session.SessionState == EHyperTwistTrainingSessionState::Aborted)
|
||||
&& ActiveReviewPlanState.IsStructurallyValid()
|
||||
&& !bRepositoryHasPendingReviewPlan)
|
||||
{
|
||||
ActiveReviewPlanState = FHyperTwistTrainingReviewPlanState();
|
||||
}
|
||||
|
||||
const FString ResolvedDeckId = bHasActiveRunContext
|
||||
? ActiveRunState.Session.DeckId
|
||||
|
|
|
|||
|
|
@ -0,0 +1,95 @@
|
|||
# HyperTwist Phase 4 completed-review idle-closure packet
|
||||
|
||||
Created on `2026-05-06`
|
||||
|
||||
Status:
|
||||
|
||||
- first-party HyperTwist packet
|
||||
- bounded Phase `4` coach-to-review validation slice
|
||||
|
||||
## Purpose
|
||||
|
||||
This packet closes the remaining stale review-inspection seam at the end of the live recognition-assisted coach-to-review loop.
|
||||
|
||||
The open tasks are:
|
||||
|
||||
- stop treating a completed review plan as an active review plan once repository-backed review-program state has no pending successor
|
||||
- stop showing a delivery-mode review-policy preview merely because a completed run has not been cleared yet
|
||||
|
||||
It is not:
|
||||
|
||||
- a new review recommendation packet
|
||||
- a queue-recovery packet
|
||||
- a dashboard layout redesign
|
||||
- a recognition transport packet
|
||||
|
||||
## Scope
|
||||
|
||||
Bounded lane:
|
||||
|
||||
- clear `ActiveReviewPlanState` after run completion when repository-backed review-program state no longer exposes `CurrentPlanId` or `NextPlanId`
|
||||
- limit review-policy preview to genuinely live run states rather than completed/aborted inspection state
|
||||
- preserve the existing idle review-plan rehydration path when carryover still exists after `ClearActiveRun()`
|
||||
|
||||
Out of scope:
|
||||
|
||||
- new review-policy heuristics
|
||||
- queue prioritization changes
|
||||
- broader coach-memory retuning
|
||||
- structural cleanup outside the review-closure seam
|
||||
|
||||
## Why this was the right next packet
|
||||
|
||||
Before this slice:
|
||||
|
||||
- review finalization preserved carryover instead of force-closing it
|
||||
- clear-run repository-view continuity was landed
|
||||
- post-clear queue idle continuity was landed
|
||||
- idle review-plan continuity was landed
|
||||
|
||||
But one stale boundary still remained:
|
||||
|
||||
- when the last carryover plan was fully consumed, the repository summary could already be idle-clean while the subsystem still held the just-completed `ActiveReviewPlanState` in memory until `ClearActiveRun()`
|
||||
- review-policy inspection also still allowed delivery-mode preview on a completed run simply because the run had not been cleared yet
|
||||
|
||||
That meant:
|
||||
|
||||
- review inspection could still look active after the review program was already exhausted
|
||||
- the dashboard could keep showing review-policy materialization at a boundary that should already read as closed review pressure plus completed-run inspection
|
||||
|
||||
So the next honest move was:
|
||||
|
||||
- collapse completed review-plan inspection as soon as repository-backed review-program state confirms there is no pending successor, and suppress review-policy preview on completed/aborted runs
|
||||
|
||||
## What landed
|
||||
|
||||
Primary code changes:
|
||||
|
||||
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingSubsystem.cpp`
|
||||
- review-policy preview now requires a genuinely live run state, not merely an uncleared completed/aborted run
|
||||
- repository refresh now clears `ActiveReviewPlanState` after run completion when the review-program summary has no `CurrentPlanId` or `NextPlanId`
|
||||
|
||||
## Product effect
|
||||
|
||||
The final review boundary is now more truthful:
|
||||
|
||||
- completed review plans no longer linger as active review inspection after the last carryover work is already exhausted
|
||||
- dashboard review-policy inspection stops showing stale preview state on completed runs
|
||||
- carryover that still exists after `ClearActiveRun()` remains rehydratable through the already-landed idle review-plan continuity path
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- completed/aborted runs do not show review-policy preview solely because they remain uncleared
|
||||
- when repository-backed review-program state has no pending successor, completed review-plan state is cleared from runtime inspection
|
||||
- carryover-backed pending review plans still rehydrate correctly after `ClearActiveRun()`
|
||||
- full product build succeeds
|
||||
|
||||
## Validation checklist
|
||||
|
||||
1. build `UnrealHyperTwist.sln` / `UnrealHyperTwistEditor`
|
||||
2. confirm completed runs do not surface delivery-mode review-policy preview
|
||||
3. confirm exhausted review programs clear runtime active-review-plan inspection before `ClearActiveRun()`
|
||||
4. confirm idle review-plan rehydration still works when carryover remains open
|
||||
5. confirm no queue or review-policy redesign was reopened
|
||||
|
||||
That is the packet.
|
||||
Loading…
Add table
Reference in a new issue