From 5a208a670cb12cbab0551d577c029c097e7b139b Mon Sep 17 00:00:00 2001 From: axiomlogicnexus Date: Wed, 29 Apr 2026 20:38:08 +0200 Subject: [PATCH] Persist aligned drill recovery plan trust upstream --- .../HyperTwistCoachDashboardWidget.cpp | 60 +++- .../HyperTwistTrainingCoachLibrary.cpp | 16 +- .../HyperTwistTrainingRepositoryLibrary.cpp | 276 +++++++++++++++++- .../HyperTwistTrainingTypes.h | 18 ++ 4 files changed, 353 insertions(+), 17 deletions(-) diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp index ada7b32..7cb28f0 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp @@ -750,6 +750,10 @@ namespace HyperTwistCoachDashboardWidgetInternal { return TEXT("reliable trusted tight drill-recovery-plan history"); } + if (SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned")) + { + return TEXT("aligned reliable trusted tight drill-recovery-plan history"); + } if (SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-strong")) { return TEXT("successful retained drill-recovery-packet history"); @@ -786,6 +790,10 @@ namespace HyperTwistCoachDashboardWidgetInternal { return TEXT("reliable trusted broad drill-recovery-plan redirect history"); } + if (SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned")) + { + return TEXT("aligned reliable trusted broad drill-recovery-plan redirect history"); + } if (SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-weak")) { return TEXT("weak retained drill-recovery-packet history"); @@ -885,7 +893,8 @@ namespace HyperTwistCoachDashboardWidgetInternal const bool bTightMethodDrillRecoveryStructurePlanDriven = false, const bool bBroadMethodDrillRecoveryStructurePlanDriven = false, const bool bTrustedMethodDrillRecoveryStructurePlanDriven = false, - const bool bReliableTrustedMethodDrillRecoveryStructurePlanDriven = false) + const bool bReliableTrustedMethodDrillRecoveryStructurePlanDriven = false, + const bool bReliableTrustedMethodDrillRecoveryStructurePlanAlignmentDriven = false) { if (MethodDrillRecoveryMemoryBias == EMethodDrillRecoveryMemoryBias::Strong) { @@ -896,7 +905,9 @@ namespace HyperTwistCoachDashboardWidgetInternal { return bTrustedMethodDrillRecoveryStructurePlanDriven ? (bReliableTrustedMethodDrillRecoveryStructurePlanDriven - ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-queued") + ? (bReliableTrustedMethodDrillRecoveryStructurePlanAlignmentDriven + ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-queued") + : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-queued")) : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-queued")) : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-queued"); } @@ -916,7 +927,9 @@ namespace HyperTwistCoachDashboardWidgetInternal { return bTrustedMethodDrillRecoveryStructurePlanDriven ? (bReliableTrustedMethodDrillRecoveryStructurePlanDriven - ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-follow-up") + ? (bReliableTrustedMethodDrillRecoveryStructurePlanAlignmentDriven + ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-follow-up") + : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-follow-up")) : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-follow-up")) : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-follow-up"); } @@ -936,7 +949,9 @@ namespace HyperTwistCoachDashboardWidgetInternal { return bTrustedMethodDrillRecoveryStructurePlanDriven ? (bReliableTrustedMethodDrillRecoveryStructurePlanDriven - ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-recommended") + ? (bReliableTrustedMethodDrillRecoveryStructurePlanAlignmentDriven + ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-recommended") + : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-recommended")) : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-recommended")) : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended"); } @@ -964,7 +979,9 @@ namespace HyperTwistCoachDashboardWidgetInternal { return bTrustedMethodDrillRecoveryStructurePlanDriven ? (bReliableTrustedMethodDrillRecoveryStructurePlanDriven - ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-queued") + ? (bReliableTrustedMethodDrillRecoveryStructurePlanAlignmentDriven + ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-queued") + : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-queued")) : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-queued")) : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-queued"); } @@ -984,7 +1001,9 @@ namespace HyperTwistCoachDashboardWidgetInternal { return bTrustedMethodDrillRecoveryStructurePlanDriven ? (bReliableTrustedMethodDrillRecoveryStructurePlanDriven - ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-follow-up") + ? (bReliableTrustedMethodDrillRecoveryStructurePlanAlignmentDriven + ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-follow-up") + : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-follow-up")) : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-follow-up")) : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-follow-up"); } @@ -1004,7 +1023,9 @@ namespace HyperTwistCoachDashboardWidgetInternal { return bTrustedMethodDrillRecoveryStructurePlanDriven ? (bReliableTrustedMethodDrillRecoveryStructurePlanDriven - ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-recommended") + ? (bReliableTrustedMethodDrillRecoveryStructurePlanAlignmentDriven + ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-recommended") + : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-recommended")) : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-recommended")) : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended"); } @@ -2418,6 +2439,16 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() || (MethodDrillRecoveryPlanComparisonSummary.ReliableTrustedBroadPlanSourceCount > 0 && MethodDrillRecoveryPlanBroadTrust > 0 && MethodDrillRecoveryPlanBroadTrust >= MethodDrillRecoveryPlanTightTrust)); + const bool bUseReliableAlignedTrustedTightMethodDrillRecoveryStructurePlan = + bUseReliableTrustedTightMethodDrillRecoveryStructurePlan + && MethodDrillRecoveryPlanComparisonSummary.ReliableTrustedTightPlanSourceCount > 0 + && MethodDrillRecoveryPlanTightTrust > 0 + && MethodDrillRecoveryPlanTightTrust >= MethodDrillRecoveryPlanBroadTrust; + const bool bUseReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlan = + bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan + && MethodDrillRecoveryPlanComparisonSummary.ReliableTrustedBroadPlanSourceCount > 0 + && MethodDrillRecoveryPlanBroadTrust > 0 + && MethodDrillRecoveryPlanBroadTrust >= MethodDrillRecoveryPlanTightTrust; auto StartRunAndRefresh = [this](const FHyperTwistTrainingRunState& RunState) { @@ -2498,7 +2529,9 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() bUseTrustedTightMethodDrillRecoveryStructurePlan, bUseTrustedBroadMethodDrillRecoveryStructurePlan, bUseReliableTrustedTightMethodDrillRecoveryStructurePlan, - bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan + bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan, + bUseReliableAlignedTrustedTightMethodDrillRecoveryStructurePlan, + bUseReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlan ]( const EHyperTwistTrainingCoachHandoffKind HandoffKind) { @@ -2523,7 +2556,8 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() bUseTightMethodDrillRecoveryStructurePlan, false, bUseTrustedTightMethodDrillRecoveryStructurePlan, - bUseReliableTrustedTightMethodDrillRecoveryStructurePlan + bUseReliableTrustedTightMethodDrillRecoveryStructurePlan, + bUseReliableAlignedTrustedTightMethodDrillRecoveryStructurePlan ); } if (bUseMethodDrillRecoveryPacketSignal) @@ -2542,7 +2576,9 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() bUseTrustedTightMethodDrillRecoveryStructurePlan || bUseTrustedBroadMethodDrillRecoveryStructurePlan, bUseReliableTrustedTightMethodDrillRecoveryStructurePlan - || bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan + || bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan, + bUseReliableAlignedTrustedTightMethodDrillRecoveryStructurePlan + || bUseReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlan ); } if (bUseMethodDrillRecoverySignal) @@ -2568,7 +2604,9 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() bUseTrustedTightMethodDrillRecoveryStructurePlan || bUseTrustedBroadMethodDrillRecoveryStructurePlan, bUseReliableTrustedTightMethodDrillRecoveryStructurePlan - || bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan + || bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan, + bUseReliableAlignedTrustedTightMethodDrillRecoveryStructurePlan + || bUseReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlan ); } diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp index b8465d8..626be94 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp @@ -92,9 +92,11 @@ namespace HyperTwistTrainingCoachLibraryInternal || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight") || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted") || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable") + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned") || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad") || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted") || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable") + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned") || SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-")) || SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-")); } @@ -171,7 +173,8 @@ namespace HyperTwistTrainingCoachLibraryInternal || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-narrow") || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight") || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted") - || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable"); + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable") + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned"); } bool IsWeakMethodDrillRecoveryMemorySource(const FString& SourceLabel) @@ -206,7 +209,8 @@ namespace HyperTwistTrainingCoachLibraryInternal || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-broad") || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad") || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted") - || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable"); + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable") + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned"); } FString DescribeRetainedMethodDrillRecoveryStanceLabel(const FString& SourceLabel) @@ -744,6 +748,10 @@ namespace HyperTwistTrainingCoachLibraryInternal { return TEXT("reliable trusted tight drill-recovery-plan history"); } + if (SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned")) + { + return TEXT("aligned reliable trusted tight drill-recovery-plan history"); + } if (SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-strong")) { return TEXT("successful retained drill-recovery-packet history"); @@ -780,6 +788,10 @@ namespace HyperTwistTrainingCoachLibraryInternal { return TEXT("reliable trusted broad drill-recovery-plan redirect history"); } + if (SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned")) + { + return TEXT("aligned reliable trusted broad drill-recovery-plan redirect history"); + } if (SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-weak")) { return TEXT("weak retained drill-recovery-packet history"); diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp index 3f3bf02..bb7831f 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp @@ -102,24 +102,30 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-queued") + || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-follow-up") + || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-recommended") + || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-queued") + || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-follow-up") + || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-recommended") + || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-follow-up") @@ -140,12 +146,15 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-queued") + || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-follow-up") + || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-recommended") + || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-follow-up") @@ -179,12 +188,15 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-queued") + || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-follow-up") + || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-recommended") + || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-follow-up") @@ -214,18 +226,24 @@ namespace HyperTwistTrainingRepositoryLibraryInternal return SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-queued") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-follow-up") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-recommended") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-recommended"); } @@ -235,18 +253,24 @@ namespace HyperTwistTrainingRepositoryLibraryInternal return SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-queued") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-follow-up") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-recommended") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-recommended"); } @@ -256,14 +280,20 @@ namespace HyperTwistTrainingRepositoryLibraryInternal { return SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-queued") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-follow-up") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-recommended") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-recommended"); } @@ -273,14 +303,20 @@ namespace HyperTwistTrainingRepositoryLibraryInternal { return SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-queued") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-follow-up") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-recommended") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-recommended"); } @@ -290,10 +326,16 @@ namespace HyperTwistTrainingRepositoryLibraryInternal { return SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-queued") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-follow-up") || SourceLabel - == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-recommended"); + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-follow-up") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-recommended") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-recommended"); } bool IsReliableTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( @@ -301,10 +343,38 @@ namespace HyperTwistTrainingRepositoryLibraryInternal { return SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-queued") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-follow-up") || SourceLabel - == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-recommended"); + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-follow-up") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-recommended") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-recommended"); + } + + bool IsReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( + const FString& SourceLabel) + { + return SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-queued") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-follow-up") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-recommended"); + } + + bool IsReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( + const FString& SourceLabel) + { + return SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-queued") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-follow-up") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-recommended"); } bool IsWeakMethodDrillRecoveryPacketDashboardHandoffSource(const FString& SourceLabel) @@ -1125,6 +1195,30 @@ namespace HyperTwistTrainingRepositoryLibraryInternal ReliableTrustedBroadMethodDrillRecoveryStructurePlanStartedCount - ReliableTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount ); + const int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanStartedCount = + QueueExecutionSummary.StartedReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanPromotedCount = + QueueExecutionSummary.PromotedReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanCompletedCount = + QueueExecutionSummary.CompletedReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutstandingCount = + FMath::Max( + 0, + ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanStartedCount + - ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanCompletedCount + ); + const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanStartedCount = + QueueExecutionSummary.StartedReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount = + QueueExecutionSummary.PromotedReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount = + QueueExecutionSummary.CompletedReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount = + FMath::Max( + 0, + ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanStartedCount + - ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount + ); if (MethodDrillRecoveryStartedCount > 0) { Snapshot.MethodDrillRecoveryHistoryCount += MethodDrillRecoveryStartedCount; @@ -1388,6 +1482,40 @@ namespace HyperTwistTrainingRepositoryLibraryInternal 1, 3) : 0; + const bool bReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistory = + (ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanStartedCount + + ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanPromotedCount) + >= 2 + && ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanCompletedCount + >= ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutstandingCount; + const bool bReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistory = + (ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanStartedCount + + ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount) + >= 2 + && (ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount + + ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount) + >= ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount; + const int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanLaunchBias = + bReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistory + ? FMath::Clamp( + (ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanCompletedCount * 2) + - ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutstandingCount + - ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanPromotedCount + + 2, + 1, + 4) + : 0; + const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromoteBias = + bReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistory + ? FMath::Clamp( + ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount + + ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount + - ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount + + 2 + + (QueueExecutionSummary.bHasOutstandingDeferredWork ? 1 : 0), + 1, + 4) + : 0; const bool bStrongMethodDrillRecoveryPacketQueuedHandoff = QueueExecutionSummary.StartedStrongMethodDrillRecoveryPacketQueuedHandoffEventCount > 0; const bool bStrongMethodDrillRecoveryPacketFollowUpHandoff = @@ -1618,6 +1746,30 @@ namespace HyperTwistTrainingRepositoryLibraryInternal Snapshot.PreferredQueueRecoveryActionSourceLabel = TEXT("coach-memory-method-drill-recovery-packet-weak"); } + else if (Snapshot.PreferredQueueRecoveryAction + == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery + && ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanLaunchBias > 0 + && (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty() + || Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history")) + || HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillDashboardHandoffSource( + Snapshot.PreferredQueueRecoveryActionSourceLabel) + || HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillRecoveryCoachMemorySource( + Snapshot.PreferredQueueRecoveryActionSourceLabel))) + { + Snapshot.PreferredQueueRecoveryActionSourceLabel = + TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned"); + } + else if (Snapshot.PreferredQueueRecoveryAction + == EHyperTwistTrainingQueueRecoveryAction::PromoteDeferred + && ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromoteBias > 0 + && (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty() + || Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history")) + || HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillRecoveryCoachMemorySource( + Snapshot.PreferredQueueRecoveryActionSourceLabel))) + { + Snapshot.PreferredQueueRecoveryActionSourceLabel = + TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned"); + } else if (Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery && ReliableTrustedTightMethodDrillRecoveryStructurePlanLaunchBias > 0 @@ -1893,7 +2045,9 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted") || CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel - == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable"); + == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable") + || CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel + == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned"); const bool bReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffSource = HyperTwistTrainingRepositoryLibraryInternal::IsReliableTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( CoachMemorySnapshot.PreferredCoachHandoffSourceLabel @@ -1915,7 +2069,9 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted") || CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel - == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable"); + == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable") + || CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel + == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned"); const bool bReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffSource = HyperTwistTrainingRepositoryLibraryInternal::IsReliableTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( CoachMemorySnapshot.PreferredCoachHandoffSourceLabel @@ -8012,6 +8168,30 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der ReliableTrustedBroadMethodDrillRecoveryStructurePlanStartedCount - ReliableTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount ); + const int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanStartedCount = + QueueExecutionSummary.StartedReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanPromotedCount = + QueueExecutionSummary.PromotedReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanCompletedCount = + QueueExecutionSummary.CompletedReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutstandingCount = + FMath::Max( + 0, + ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanStartedCount + - ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanCompletedCount + ); + const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanStartedCount = + QueueExecutionSummary.StartedReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount = + QueueExecutionSummary.PromotedReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount = + QueueExecutionSummary.CompletedReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount = + FMath::Max( + 0, + ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanStartedCount + - ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount + ); if (MethodDrillRecoveryStartedCount > 0) { Snapshot.MethodDrillRecoveryHistoryCount += MethodDrillRecoveryStartedCount; @@ -8275,6 +8455,40 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der 1, 3) : 0; + const bool bReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistory = + (ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanStartedCount + + ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanPromotedCount) + >= 2 + && ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanCompletedCount + >= ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutstandingCount; + const bool bReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistory = + (ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanStartedCount + + ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount) + >= 2 + && (ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount + + ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount) + >= ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount; + const int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanLaunchBias = + bReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistory + ? FMath::Clamp( + (ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanCompletedCount * 2) + - ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutstandingCount + - ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanPromotedCount + + 2, + 1, + 4) + : 0; + const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromoteBias = + bReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistory + ? FMath::Clamp( + ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount + + ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount + - ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount + + 2 + + (QueueExecutionSummary.bHasOutstandingDeferredWork ? 1 : 0), + 1, + 4) + : 0; const int32 StrongMethodDrillFollowUpPacketStartedCount = QueueExecutionSummary.StartedStrongMethodDrillFollowUpPacketQueuedHandoffEventCount + QueueExecutionSummary.StartedStrongMethodDrillFollowUpPacketFollowUpHandoffEventCount @@ -8590,6 +8804,30 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der Snapshot.PreferredQueueRecoveryActionSourceLabel = TEXT("coach-memory-method-drill-recovery-packet-weak"); } + else if (Snapshot.PreferredQueueRecoveryAction + == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery + && ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanLaunchBias > 0 + && (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty() + || Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history")) + || HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillDashboardHandoffSource( + Snapshot.PreferredQueueRecoveryActionSourceLabel) + || HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillRecoveryCoachMemorySource( + Snapshot.PreferredQueueRecoveryActionSourceLabel))) + { + Snapshot.PreferredQueueRecoveryActionSourceLabel = + TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned"); + } + else if (Snapshot.PreferredQueueRecoveryAction + == EHyperTwistTrainingQueueRecoveryAction::PromoteDeferred + && ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromoteBias > 0 + && (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty() + || Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history")) + || HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillRecoveryCoachMemorySource( + Snapshot.PreferredQueueRecoveryActionSourceLabel))) + { + Snapshot.PreferredQueueRecoveryActionSourceLabel = + TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned"); + } else if (Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery && ReliableTrustedTightMethodDrillRecoveryStructurePlanLaunchBias > 0 @@ -10672,6 +10910,11 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.StartedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (HyperTwistTrainingRepositoryLibraryInternal::IsReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( + HistoryEntry.StartActionSourceLabel)) + { + Summary.StartedReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } if (bWeakMethodDrillRecoveryPacketDashboardHandoff) { Summary.StartedWeakMethodDrillRecoveryPacketQueuedHandoffEventCount += 1; @@ -10692,6 +10935,11 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.StartedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (HyperTwistTrainingRepositoryLibraryInternal::IsReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( + HistoryEntry.StartActionSourceLabel)) + { + Summary.StartedReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } } else if (DashboardHandoffKind == EHyperTwistTrainingCoachHandoffKind::FollowUp) { @@ -10893,6 +11141,11 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.PromotedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (HyperTwistTrainingRepositoryLibraryInternal::IsReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( + HistoryEntry.StartActionSourceLabel)) + { + Summary.PromotedReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } if (HyperTwistTrainingRepositoryLibraryInternal::IsBroadMethodDrillRecoveryStructureDashboardHandoffSource( HistoryEntry.StartActionSourceLabel)) { @@ -10913,6 +11166,11 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.PromotedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (HyperTwistTrainingRepositoryLibraryInternal::IsReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( + HistoryEntry.StartActionSourceLabel)) + { + Summary.PromotedReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } break; case EHyperTwistTrainingCoachSessionQueueEventKind::Completed: Summary.CompletedEventCount += 1; @@ -10998,6 +11256,11 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.CompletedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (HyperTwistTrainingRepositoryLibraryInternal::IsReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( + HistoryEntry.StartActionSourceLabel)) + { + Summary.CompletedReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } if (bWeakMethodDrillRecoveryDashboardHandoff) { Summary.CompletedWeakMethodDrillRecoveryMemoryHandoffEventCount += 1; @@ -11018,6 +11281,11 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.CompletedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (HyperTwistTrainingRepositoryLibraryInternal::IsReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( + HistoryEntry.StartActionSourceLabel)) + { + Summary.CompletedReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } if (bStrongRetainedMethodDrillRecoveryPostureDashboardHandoff) { Summary.CompletedStrongRetainedMethodDrillRecoveryPostureHandoffEventCount += 1; diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingTypes.h b/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingTypes.h index b5cfcc2..a696dfb 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingTypes.h +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingTypes.h @@ -3786,6 +3786,15 @@ struct FHyperTwistTrainingCoachSessionQueueExecutionSummary UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") int32 CompletedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") + int32 StartedReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") + int32 PromotedReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") + int32 CompletedReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") int32 StartedBroadMethodDrillRecoveryStructurePlanHandoffEventCount = 0; @@ -3813,6 +3822,15 @@ struct FHyperTwistTrainingCoachSessionQueueExecutionSummary UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") int32 CompletedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") + int32 StartedReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") + int32 PromotedReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") + int32 CompletedReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") int32 CompletedMethodDrillQueuedHandoffEventCount = 0;