From bb13fa4afaefab56f3d78525a5fc358ac8fd9c0c Mon Sep 17 00:00:00 2001 From: axiomlogicnexus Date: Wed, 29 Apr 2026 20:02:58 +0200 Subject: [PATCH] Persist reliable drill recovery plan sources upstream --- .../HyperTwistCoachDashboardWidget.cpp | 90 +++++- .../HyperTwistTrainingCoachLibrary.cpp | 38 +++ .../HyperTwistTrainingRepositoryLibrary.cpp | 280 +++++++++++++++++- .../HyperTwistTrainingTypes.h | 18 ++ 4 files changed, 399 insertions(+), 27 deletions(-) diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp index b97fc3a..dab6965 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp @@ -510,6 +510,10 @@ namespace HyperTwistCoachDashboardWidgetInternal { return TEXT("accepted tight drill-recovery-plan queued dashboard handoff"); } + if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-queued")) + { + return TEXT("accepted reliable trusted tight drill-recovery-plan queued dashboard handoff"); + } if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-queued")) { return TEXT("accepted trusted tight drill-recovery-plan queued dashboard handoff"); @@ -534,6 +538,10 @@ namespace HyperTwistCoachDashboardWidgetInternal { return TEXT("accepted tight drill-recovery-plan follow-up dashboard handoff"); } + if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-follow-up")) + { + return TEXT("accepted reliable trusted tight drill-recovery-plan follow-up dashboard handoff"); + } if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-follow-up")) { return TEXT("accepted trusted tight drill-recovery-plan follow-up dashboard handoff"); @@ -558,6 +566,10 @@ namespace HyperTwistCoachDashboardWidgetInternal { return TEXT("accepted tight drill-recovery-plan recommended dashboard handoff"); } + if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-recommended")) + { + return TEXT("accepted reliable trusted tight drill-recovery-plan recommended dashboard handoff"); + } if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-recommended")) { return TEXT("accepted trusted tight drill-recovery-plan recommended dashboard handoff"); @@ -582,6 +594,10 @@ namespace HyperTwistCoachDashboardWidgetInternal { return TEXT("accepted broad drill-recovery-plan queued dashboard handoff"); } + if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-queued")) + { + return TEXT("accepted reliable trusted broad drill-recovery-plan queued dashboard handoff"); + } if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-queued")) { return TEXT("accepted trusted broad drill-recovery-plan queued dashboard handoff"); @@ -606,6 +622,10 @@ namespace HyperTwistCoachDashboardWidgetInternal { return TEXT("accepted broad drill-recovery-plan follow-up dashboard handoff"); } + if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-follow-up")) + { + return TEXT("accepted reliable trusted broad drill-recovery-plan follow-up dashboard handoff"); + } if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-follow-up")) { return TEXT("accepted trusted broad drill-recovery-plan follow-up dashboard handoff"); @@ -630,6 +650,10 @@ namespace HyperTwistCoachDashboardWidgetInternal { return TEXT("accepted broad drill-recovery-plan recommended dashboard handoff"); } + if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-recommended")) + { + return TEXT("accepted reliable trusted broad drill-recovery-plan recommended dashboard handoff"); + } if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-recommended")) { return TEXT("accepted trusted broad drill-recovery-plan recommended dashboard handoff"); @@ -860,7 +884,8 @@ namespace HyperTwistCoachDashboardWidgetInternal const bool bBroadMethodDrillRecoveryStructureDriven = false, const bool bTightMethodDrillRecoveryStructurePlanDriven = false, const bool bBroadMethodDrillRecoveryStructurePlanDriven = false, - const bool bTrustedMethodDrillRecoveryStructurePlanDriven = false) + const bool bTrustedMethodDrillRecoveryStructurePlanDriven = false, + const bool bReliableTrustedMethodDrillRecoveryStructurePlanDriven = false) { if (MethodDrillRecoveryMemoryBias == EMethodDrillRecoveryMemoryBias::Strong) { @@ -870,7 +895,9 @@ namespace HyperTwistCoachDashboardWidgetInternal if (bTightMethodDrillRecoveryStructurePlanDriven) { return bTrustedMethodDrillRecoveryStructurePlanDriven - ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-queued") + ? (bReliableTrustedMethodDrillRecoveryStructurePlanDriven + ? 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"); } if (bNarrowMethodDrillRecoveryStructureDriven) @@ -888,7 +915,9 @@ namespace HyperTwistCoachDashboardWidgetInternal if (bTightMethodDrillRecoveryStructurePlanDriven) { return bTrustedMethodDrillRecoveryStructurePlanDriven - ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-follow-up") + ? (bReliableTrustedMethodDrillRecoveryStructurePlanDriven + ? 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"); } if (bNarrowMethodDrillRecoveryStructureDriven) @@ -906,7 +935,9 @@ namespace HyperTwistCoachDashboardWidgetInternal if (bTightMethodDrillRecoveryStructurePlanDriven) { return bTrustedMethodDrillRecoveryStructurePlanDriven - ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-recommended") + ? (bReliableTrustedMethodDrillRecoveryStructurePlanDriven + ? 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"); } if (bNarrowMethodDrillRecoveryStructureDriven) @@ -932,7 +963,9 @@ namespace HyperTwistCoachDashboardWidgetInternal if (bBroadMethodDrillRecoveryStructurePlanDriven) { return bTrustedMethodDrillRecoveryStructurePlanDriven - ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-queued") + ? (bReliableTrustedMethodDrillRecoveryStructurePlanDriven + ? 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"); } if (bBroadMethodDrillRecoveryStructureDriven) @@ -950,7 +983,9 @@ namespace HyperTwistCoachDashboardWidgetInternal if (bBroadMethodDrillRecoveryStructurePlanDriven) { return bTrustedMethodDrillRecoveryStructurePlanDriven - ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-follow-up") + ? (bReliableTrustedMethodDrillRecoveryStructurePlanDriven + ? 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"); } if (bBroadMethodDrillRecoveryStructureDriven) @@ -968,7 +1003,9 @@ namespace HyperTwistCoachDashboardWidgetInternal if (bBroadMethodDrillRecoveryStructurePlanDriven) { return bTrustedMethodDrillRecoveryStructurePlanDriven - ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-recommended") + ? (bReliableTrustedMethodDrillRecoveryStructurePlanDriven + ? 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"); } if (bBroadMethodDrillRecoveryStructureDriven) @@ -2437,7 +2474,9 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() bUseTightMethodDrillRecoveryStructurePlan, bUseBroadMethodDrillRecoveryStructurePlan, bUseTrustedTightMethodDrillRecoveryStructurePlan, - bUseTrustedBroadMethodDrillRecoveryStructurePlan + bUseTrustedBroadMethodDrillRecoveryStructurePlan, + bUseReliableTrustedTightMethodDrillRecoveryStructurePlan, + bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan ]( const EHyperTwistTrainingCoachHandoffKind HandoffKind) { @@ -2461,7 +2500,8 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() false, bUseTightMethodDrillRecoveryStructurePlan, false, - bUseTrustedTightMethodDrillRecoveryStructurePlan + bUseTrustedTightMethodDrillRecoveryStructurePlan, + bUseReliableTrustedTightMethodDrillRecoveryStructurePlan ); } if (bUseMethodDrillRecoveryPacketSignal) @@ -2478,7 +2518,9 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() bUseTightMethodDrillRecoveryStructurePlan, bUseBroadMethodDrillRecoveryStructurePlan, bUseTrustedTightMethodDrillRecoveryStructurePlan - || bUseTrustedBroadMethodDrillRecoveryStructurePlan + || bUseTrustedBroadMethodDrillRecoveryStructurePlan, + bUseReliableTrustedTightMethodDrillRecoveryStructurePlan + || bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan ); } if (bUseMethodDrillRecoverySignal) @@ -2502,7 +2544,9 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() bUseTightMethodDrillRecoveryStructurePlan, bUseBroadMethodDrillRecoveryStructurePlan, bUseTrustedTightMethodDrillRecoveryStructurePlan - || bUseTrustedBroadMethodDrillRecoveryStructurePlan + || bUseTrustedBroadMethodDrillRecoveryStructurePlan, + bUseReliableTrustedTightMethodDrillRecoveryStructurePlan + || bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan ); } @@ -9497,7 +9541,13 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() false, bHandoffRecommendationUsedTightMethodDrillRecoveryStructurePlan, bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan, - bHandoffRecommendationUsedPlanComparisonHistory + bHandoffRecommendationUsedPlanComparisonHistory, + (bHandoffRecommendationUsedPlanComparisonHistory + && bPlanComparisonPrefersTightContinuation + && bHasReliableTrustedTightPlanComparisonHistory) + || (bHandoffRecommendationUsedPlanComparisonHistory + && bPlanComparisonPrefersBroadRedirect + && bHasReliableTrustedBroadPlanComparisonHistory) ); } else if (bHandoffRecommendationUsedMethodDrillRecoveryMemory @@ -9516,7 +9566,13 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() false, bHandoffRecommendationUsedTightMethodDrillRecoveryStructurePlan, bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan, - bHandoffRecommendationUsedPlanComparisonHistory + bHandoffRecommendationUsedPlanComparisonHistory, + (bHandoffRecommendationUsedPlanComparisonHistory + && bPlanComparisonPrefersTightContinuation + && bHasReliableTrustedTightPlanComparisonHistory) + || (bHandoffRecommendationUsedPlanComparisonHistory + && bPlanComparisonPrefersBroadRedirect + && bHasReliableTrustedBroadPlanComparisonHistory) ); } else if (bHandoffRecommendationUsedMethodDrillRecoveryPacketHistory @@ -9535,7 +9591,13 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() false, bHandoffRecommendationUsedTightMethodDrillRecoveryStructurePlan, bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan, - bHandoffRecommendationUsedPlanComparisonHistory + bHandoffRecommendationUsedPlanComparisonHistory, + (bHandoffRecommendationUsedPlanComparisonHistory + && bPlanComparisonPrefersTightContinuation + && bHasReliableTrustedTightPlanComparisonHistory) + || (bHandoffRecommendationUsedPlanComparisonHistory + && bPlanComparisonPrefersBroadRedirect + && bHasReliableTrustedBroadPlanComparisonHistory) ); } else if (bHandoffRecommendationUsedStrongMethodDrillFollowUpPacket diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp index 085f736..b8465d8 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp @@ -155,10 +155,13 @@ namespace HyperTwistTrainingCoachLibraryInternal || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-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-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-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-recommended") || SourceLabel == TEXT("coach-memory-method-drill-recovery-strong") || SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-strong") @@ -187,10 +190,13 @@ namespace HyperTwistTrainingCoachLibraryInternal || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-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-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-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-recommended") || SourceLabel == TEXT("coach-memory-method-drill-recovery-weak") || SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-weak") @@ -386,6 +392,18 @@ namespace HyperTwistTrainingCoachLibraryInternal { return TEXT("accepted strong retained drill-recovery-posture recommended handoff history"); } + if (SourceLabel == TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-reliable-queued")) + { + return TEXT("accepted reliable trusted tight drill-recovery-plan queued handoff history"); + } + if (SourceLabel == TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-reliable-follow-up")) + { + return TEXT("accepted reliable trusted tight drill-recovery-plan follow-up handoff history"); + } + if (SourceLabel == TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-reliable-recommended")) + { + return TEXT("accepted reliable trusted tight drill-recovery-plan recommended handoff history"); + } if (SourceLabel == TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-queued")) { return TEXT("accepted trusted tight drill-recovery-plan queued handoff history"); @@ -434,6 +452,18 @@ namespace HyperTwistTrainingCoachLibraryInternal { return TEXT("accepted weak retained drill-recovery-posture recommended handoff history"); } + if (SourceLabel == TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-trusted-reliable-queued")) + { + return TEXT("accepted reliable trusted broad drill-recovery-plan queued handoff history"); + } + if (SourceLabel == TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-trusted-reliable-follow-up")) + { + return TEXT("accepted reliable trusted broad drill-recovery-plan follow-up handoff history"); + } + if (SourceLabel == TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-trusted-reliable-recommended")) + { + return TEXT("accepted reliable trusted broad drill-recovery-plan recommended handoff history"); + } if (SourceLabel == TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-trusted-queued")) { return TEXT("accepted trusted broad drill-recovery-plan queued handoff history"); @@ -694,6 +724,10 @@ namespace HyperTwistTrainingCoachLibraryInternal { return TEXT("successful tight drill-recovery-plan history"); } + if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-reliable-"))) + { + return TEXT("accepted reliable trusted tight drill-recovery-plan dashboard handoff"); + } if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-"))) { return TEXT("accepted trusted tight drill-recovery-plan dashboard handoff"); @@ -726,6 +760,10 @@ namespace HyperTwistTrainingCoachLibraryInternal { return TEXT("successful broad drill-recovery-plan redirect history"); } + if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-trusted-reliable-"))) + { + return TEXT("accepted reliable trusted broad drill-recovery-plan dashboard handoff"); + } if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-trusted-"))) { return TEXT("accepted trusted broad drill-recovery-plan dashboard handoff"); diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp index 19a9cd3..f297c20 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp @@ -101,19 +101,25 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-follow-up") || 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-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-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-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-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-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-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-follow-up") @@ -133,10 +139,13 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-follow-up") || 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-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-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-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-follow-up") @@ -169,10 +178,13 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || 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-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-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-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-follow-up") @@ -200,14 +212,20 @@ namespace HyperTwistTrainingRepositoryLibraryInternal bool IsTightMethodDrillRecoveryStructurePlanDashboardHandoffSource(const FString& SourceLabel) { 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-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-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-recommended"); } @@ -215,14 +233,20 @@ namespace HyperTwistTrainingRepositoryLibraryInternal bool IsBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource(const FString& SourceLabel) { 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-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-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-recommended"); } @@ -231,9 +255,15 @@ namespace HyperTwistTrainingRepositoryLibraryInternal const FString& SourceLabel) { 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-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-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-recommended"); } @@ -242,13 +272,41 @@ namespace HyperTwistTrainingRepositoryLibraryInternal const FString& SourceLabel) { 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-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-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-recommended"); } + bool IsReliableTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( + const FString& SourceLabel) + { + 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-follow-up") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-reliable-recommended"); + } + + bool IsReliableTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( + const FString& SourceLabel) + { + 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-follow-up") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-recommended"); + } + bool IsWeakMethodDrillRecoveryPacketDashboardHandoffSource(const FString& SourceLabel) { return SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-queued") @@ -366,9 +424,11 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-strong-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-queued") || 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-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-queued") || 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-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-queued") @@ -387,9 +447,11 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-strong-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-follow-up") || 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-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-follow-up") || 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-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-follow-up") @@ -408,9 +470,11 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-strong-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-recommended") || 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-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-recommended") || 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-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-recommended") @@ -1039,6 +1103,28 @@ namespace HyperTwistTrainingRepositoryLibraryInternal TrustedBroadMethodDrillRecoveryStructurePlanStartedCount - TrustedBroadMethodDrillRecoveryStructurePlanCompletedCount ); + const int32 ReliableTrustedTightMethodDrillRecoveryStructurePlanStartedCount = + QueueExecutionSummary.StartedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableTrustedTightMethodDrillRecoveryStructurePlanPromotedCount = + QueueExecutionSummary.PromotedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableTrustedTightMethodDrillRecoveryStructurePlanCompletedCount = + QueueExecutionSummary.CompletedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableTrustedTightMethodDrillRecoveryStructurePlanOutstandingCount = FMath::Max( + 0, + ReliableTrustedTightMethodDrillRecoveryStructurePlanStartedCount + - ReliableTrustedTightMethodDrillRecoveryStructurePlanCompletedCount + ); + const int32 ReliableTrustedBroadMethodDrillRecoveryStructurePlanStartedCount = + QueueExecutionSummary.StartedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount = + QueueExecutionSummary.PromotedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount = + QueueExecutionSummary.CompletedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount = FMath::Max( + 0, + ReliableTrustedBroadMethodDrillRecoveryStructurePlanStartedCount + - ReliableTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount + ); if (MethodDrillRecoveryStartedCount > 0) { Snapshot.MethodDrillRecoveryHistoryCount += MethodDrillRecoveryStartedCount; @@ -1229,6 +1315,40 @@ namespace HyperTwistTrainingRepositoryLibraryInternal 1, 3) : 0; + const bool bReliableTrustedTightMethodDrillRecoveryStructurePlanHistory = + (ReliableTrustedTightMethodDrillRecoveryStructurePlanStartedCount + + ReliableTrustedTightMethodDrillRecoveryStructurePlanPromotedCount) + >= 2 + && ReliableTrustedTightMethodDrillRecoveryStructurePlanCompletedCount + >= ReliableTrustedTightMethodDrillRecoveryStructurePlanOutstandingCount; + const bool bReliableTrustedBroadMethodDrillRecoveryStructurePlanHistory = + (ReliableTrustedBroadMethodDrillRecoveryStructurePlanStartedCount + + ReliableTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount) + >= 2 + && (ReliableTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount + + ReliableTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount) + >= ReliableTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount; + const int32 ReliableTrustedTightMethodDrillRecoveryStructurePlanLaunchBias = + bReliableTrustedTightMethodDrillRecoveryStructurePlanHistory + ? FMath::Clamp( + (ReliableTrustedTightMethodDrillRecoveryStructurePlanCompletedCount * 2) + - ReliableTrustedTightMethodDrillRecoveryStructurePlanOutstandingCount + - ReliableTrustedTightMethodDrillRecoveryStructurePlanPromotedCount + + 1, + 1, + 3) + : 0; + const int32 ReliableTrustedBroadMethodDrillRecoveryStructurePlanPromoteBias = + bReliableTrustedBroadMethodDrillRecoveryStructurePlanHistory + ? FMath::Clamp( + ReliableTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount + + ReliableTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount + - ReliableTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount + + 1 + + (QueueExecutionSummary.bHasOutstandingDeferredWork ? 1 : 0), + 1, + 3) + : 0; const bool bStrongMethodDrillRecoveryPacketQueuedHandoff = QueueExecutionSummary.StartedStrongMethodDrillRecoveryPacketQueuedHandoffEventCount > 0; const bool bStrongMethodDrillRecoveryPacketFollowUpHandoff = @@ -1264,6 +1384,10 @@ namespace HyperTwistTrainingRepositoryLibraryInternal ? TEXT("coach-memory-dashboard-method-drill-recovery-packet-strong-queued") : (bWeakMethodDrillRecoveryPacketQueuedHandoff ? TEXT("coach-memory-dashboard-method-drill-recovery-packet-weak-queued") + : (MethodDrillRecoveryMemoryBias + == EMethodDrillRecoveryMemoryBias::Strong + && ReliableTrustedTightMethodDrillRecoveryStructurePlanStartedCount > 0 + ? TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-reliable-queued") : HyperTwistTrainingRepositoryLibraryInternal::CoachMemoryDashboardSourceLabel( EHyperTwistTrainingCoachHandoffKind::Queue, ExplicitDeferredOverflowQueuedHandoffSignal > 0, @@ -1271,7 +1395,7 @@ namespace HyperTwistTrainingRepositoryLibraryInternal ExplicitMethodDrillQueuedHandoffSignal > 0, MethodDrillRecoveryMemoryBias, bRetainedMethodDrillRecoveryPostureDriven - )); + ))); } else if (ExplicitFollowUpHandoffSignal >= ExplicitRecommendedHandoffSignal) { @@ -1291,6 +1415,10 @@ namespace HyperTwistTrainingRepositoryLibraryInternal ? TEXT("coach-memory-dashboard-method-drill-recovery-packet-strong-follow-up") : (bWeakMethodDrillRecoveryPacketFollowUpHandoff ? TEXT("coach-memory-dashboard-method-drill-recovery-packet-weak-follow-up") + : (MethodDrillRecoveryMemoryBias + == EMethodDrillRecoveryMemoryBias::Strong + && ReliableTrustedTightMethodDrillRecoveryStructurePlanStartedCount > 0 + ? TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-reliable-follow-up") : HyperTwistTrainingRepositoryLibraryInternal::CoachMemoryDashboardSourceLabel( EHyperTwistTrainingCoachHandoffKind::FollowUp, ExplicitDeferredOverflowFollowUpHandoffSignal > 0, @@ -1298,7 +1426,7 @@ namespace HyperTwistTrainingRepositoryLibraryInternal ExplicitMethodDrillFollowUpHandoffSignal > 0, MethodDrillRecoveryMemoryBias, bRetainedMethodDrillRecoveryPostureDriven - )); + ))); } else { @@ -1318,6 +1446,10 @@ namespace HyperTwistTrainingRepositoryLibraryInternal ? TEXT("coach-memory-dashboard-method-drill-recovery-packet-strong-recommended") : (bWeakMethodDrillRecoveryPacketRecommendedHandoff ? TEXT("coach-memory-dashboard-method-drill-recovery-packet-weak-recommended") + : (MethodDrillRecoveryMemoryBias + == EMethodDrillRecoveryMemoryBias::Weak + && ReliableTrustedBroadMethodDrillRecoveryStructurePlanStartedCount > 0 + ? TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-trusted-reliable-recommended") : HyperTwistTrainingRepositoryLibraryInternal::CoachMemoryDashboardSourceLabel( EHyperTwistTrainingCoachHandoffKind::Recommended, ExplicitDeferredOverflowRecommendedHandoffSignal > 0, @@ -1325,7 +1457,7 @@ namespace HyperTwistTrainingRepositoryLibraryInternal ExplicitMethodDrillRecommendedHandoffSignal > 0, MethodDrillRecoveryMemoryBias, bRetainedMethodDrillRecoveryPostureDriven - )); + ))); } } const int32 WeightedFollowUpRecoverySignal = @@ -1449,7 +1581,7 @@ namespace HyperTwistTrainingRepositoryLibraryInternal } else if (Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery - && TrustedTightMethodDrillRecoveryStructurePlanLaunchBias > 0 + && ReliableTrustedTightMethodDrillRecoveryStructurePlanLaunchBias > 0 && (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty() || Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history")) || HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillDashboardHandoffSource( @@ -1462,7 +1594,7 @@ namespace HyperTwistTrainingRepositoryLibraryInternal } else if (Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::PromoteDeferred - && TrustedBroadMethodDrillRecoveryStructurePlanPromoteBias > 0 + && ReliableTrustedBroadMethodDrillRecoveryStructurePlanPromoteBias > 0 && (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty() || Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history")) || HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillRecoveryCoachMemorySource( @@ -7763,6 +7895,28 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der TrustedBroadMethodDrillRecoveryStructurePlanStartedCount - TrustedBroadMethodDrillRecoveryStructurePlanCompletedCount ); + const int32 ReliableTrustedTightMethodDrillRecoveryStructurePlanStartedCount = + QueueExecutionSummary.StartedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableTrustedTightMethodDrillRecoveryStructurePlanPromotedCount = + QueueExecutionSummary.PromotedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableTrustedTightMethodDrillRecoveryStructurePlanCompletedCount = + QueueExecutionSummary.CompletedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableTrustedTightMethodDrillRecoveryStructurePlanOutstandingCount = FMath::Max( + 0, + ReliableTrustedTightMethodDrillRecoveryStructurePlanStartedCount + - ReliableTrustedTightMethodDrillRecoveryStructurePlanCompletedCount + ); + const int32 ReliableTrustedBroadMethodDrillRecoveryStructurePlanStartedCount = + QueueExecutionSummary.StartedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount = + QueueExecutionSummary.PromotedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount = + QueueExecutionSummary.CompletedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount; + const int32 ReliableTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount = FMath::Max( + 0, + ReliableTrustedBroadMethodDrillRecoveryStructurePlanStartedCount + - ReliableTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount + ); if (MethodDrillRecoveryStartedCount > 0) { Snapshot.MethodDrillRecoveryHistoryCount += MethodDrillRecoveryStartedCount; @@ -7953,6 +8107,40 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der 1, 3) : 0; + const bool bReliableTrustedTightMethodDrillRecoveryStructurePlanHistory = + (ReliableTrustedTightMethodDrillRecoveryStructurePlanStartedCount + + ReliableTrustedTightMethodDrillRecoveryStructurePlanPromotedCount) + >= 2 + && ReliableTrustedTightMethodDrillRecoveryStructurePlanCompletedCount + >= ReliableTrustedTightMethodDrillRecoveryStructurePlanOutstandingCount; + const bool bReliableTrustedBroadMethodDrillRecoveryStructurePlanHistory = + (ReliableTrustedBroadMethodDrillRecoveryStructurePlanStartedCount + + ReliableTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount) + >= 2 + && (ReliableTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount + + ReliableTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount) + >= ReliableTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount; + const int32 ReliableTrustedTightMethodDrillRecoveryStructurePlanLaunchBias = + bReliableTrustedTightMethodDrillRecoveryStructurePlanHistory + ? FMath::Clamp( + (ReliableTrustedTightMethodDrillRecoveryStructurePlanCompletedCount * 2) + - ReliableTrustedTightMethodDrillRecoveryStructurePlanOutstandingCount + - ReliableTrustedTightMethodDrillRecoveryStructurePlanPromotedCount + + 1, + 1, + 3) + : 0; + const int32 ReliableTrustedBroadMethodDrillRecoveryStructurePlanPromoteBias = + bReliableTrustedBroadMethodDrillRecoveryStructurePlanHistory + ? FMath::Clamp( + ReliableTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount + + ReliableTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount + - ReliableTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount + + 1 + + (QueueExecutionSummary.bHasOutstandingDeferredWork ? 1 : 0), + 1, + 3) + : 0; const int32 StrongMethodDrillFollowUpPacketStartedCount = QueueExecutionSummary.StartedStrongMethodDrillFollowUpPacketQueuedHandoffEventCount + QueueExecutionSummary.StartedStrongMethodDrillFollowUpPacketFollowUpHandoffEventCount @@ -8063,14 +8251,18 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der ? TEXT("coach-memory-dashboard-method-drill-recovery-packet-strong-queued") : (bWeakMethodDrillRecoveryPacketQueuedHandoff ? TEXT("coach-memory-dashboard-method-drill-recovery-packet-weak-queued") - : HyperTwistTrainingRepositoryLibraryInternal::CoachMemoryDashboardSourceLabel( + : (MethodDrillRecoveryMemoryBias + == HyperTwistTrainingRepositoryLibraryInternal::EMethodDrillRecoveryMemoryBias::Strong + && ReliableTrustedTightMethodDrillRecoveryStructurePlanStartedCount > 0 + ? TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-reliable-queued") + : HyperTwistTrainingRepositoryLibraryInternal::CoachMemoryDashboardSourceLabel( EHyperTwistTrainingCoachHandoffKind::Queue, ExplicitDeferredOverflowQueuedHandoffSignal > 0, ExplicitDeferredFirstQueuedHandoffSignal > 0, ExplicitMethodDrillQueuedHandoffSignal > 0, MethodDrillRecoveryMemoryBias, bRetainedMethodDrillRecoveryPostureDriven - )))); + ))))); } else if (ExplicitFollowUpHandoffSignal >= ExplicitRecommendedHandoffSignal) { @@ -8095,14 +8287,18 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der ? TEXT("coach-memory-dashboard-method-drill-recovery-packet-strong-follow-up") : (bWeakMethodDrillRecoveryPacketFollowUpHandoff ? TEXT("coach-memory-dashboard-method-drill-recovery-packet-weak-follow-up") - : HyperTwistTrainingRepositoryLibraryInternal::CoachMemoryDashboardSourceLabel( + : (MethodDrillRecoveryMemoryBias + == HyperTwistTrainingRepositoryLibraryInternal::EMethodDrillRecoveryMemoryBias::Strong + && ReliableTrustedTightMethodDrillRecoveryStructurePlanStartedCount > 0 + ? TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-reliable-follow-up") + : HyperTwistTrainingRepositoryLibraryInternal::CoachMemoryDashboardSourceLabel( EHyperTwistTrainingCoachHandoffKind::FollowUp, ExplicitDeferredOverflowFollowUpHandoffSignal > 0, ExplicitDeferredFirstFollowUpHandoffSignal > 0, ExplicitMethodDrillFollowUpHandoffSignal > 0, MethodDrillRecoveryMemoryBias, bRetainedMethodDrillRecoveryPostureDriven - )))); + ))))); } else { @@ -8127,14 +8323,18 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der ? TEXT("coach-memory-dashboard-method-drill-recovery-packet-strong-recommended") : (bWeakMethodDrillRecoveryPacketRecommendedHandoff ? TEXT("coach-memory-dashboard-method-drill-recovery-packet-weak-recommended") - : HyperTwistTrainingRepositoryLibraryInternal::CoachMemoryDashboardSourceLabel( + : (MethodDrillRecoveryMemoryBias + == HyperTwistTrainingRepositoryLibraryInternal::EMethodDrillRecoveryMemoryBias::Weak + && ReliableTrustedBroadMethodDrillRecoveryStructurePlanStartedCount > 0 + ? TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-trusted-reliable-recommended") + : HyperTwistTrainingRepositoryLibraryInternal::CoachMemoryDashboardSourceLabel( EHyperTwistTrainingCoachHandoffKind::Recommended, ExplicitDeferredOverflowRecommendedHandoffSignal > 0, ExplicitDeferredFirstRecommendedHandoffSignal > 0, ExplicitMethodDrillRecommendedHandoffSignal > 0, MethodDrillRecoveryMemoryBias, bRetainedMethodDrillRecoveryPostureDriven - )))); + ))))); } } const int32 WeightedFollowUpRecoverySignal = @@ -8258,7 +8458,7 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der } else if (Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery - && TrustedTightMethodDrillRecoveryStructurePlanLaunchBias > 0 + && ReliableTrustedTightMethodDrillRecoveryStructurePlanLaunchBias > 0 && (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty() || Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history")) || HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillDashboardHandoffSource( @@ -8271,7 +8471,7 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der } else if (Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::PromoteDeferred - && TrustedBroadMethodDrillRecoveryStructurePlanPromoteBias > 0 + && ReliableTrustedBroadMethodDrillRecoveryStructurePlanPromoteBias > 0 && (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty() || Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history")) || HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillRecoveryCoachMemorySource( @@ -10265,6 +10465,9 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito const bool bTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoff = HyperTwistTrainingRepositoryLibraryInternal::IsTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( HistoryEntry.StartActionSourceLabel); + const bool bReliableTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoff = + HyperTwistTrainingRepositoryLibraryInternal::IsReliableTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( + HistoryEntry.StartActionSourceLabel); const bool bWeakMethodDrillRecoveryDashboardHandoff = HyperTwistTrainingRepositoryLibraryInternal::IsWeakMethodDrillRecoveryDashboardHandoffSource( HistoryEntry.StartActionSourceLabel); @@ -10283,6 +10486,9 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito const bool bTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoff = HyperTwistTrainingRepositoryLibraryInternal::IsTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( HistoryEntry.StartActionSourceLabel); + const bool bReliableTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoff = + HyperTwistTrainingRepositoryLibraryInternal::IsReliableTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( + HistoryEntry.StartActionSourceLabel); const bool bStrongRetainedMethodDrillRecoveryPostureDashboardHandoff = HyperTwistTrainingRepositoryLibraryInternal::IsStrongRetainedMethodDrillRecoveryPostureDashboardHandoffSource( HistoryEntry.StartActionSourceLabel); @@ -10328,6 +10534,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.StartedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (bReliableTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoff) + { + Summary.StartedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } if (bWeakMethodDrillRecoveryPacketDashboardHandoff) { Summary.StartedWeakMethodDrillRecoveryPacketQueuedHandoffEventCount += 1; @@ -10344,6 +10554,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.StartedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (bReliableTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoff) + { + Summary.StartedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } } else if (DashboardHandoffKind == EHyperTwistTrainingCoachHandoffKind::FollowUp) { @@ -10384,6 +10598,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.StartedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (bReliableTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoff) + { + Summary.StartedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } if (bWeakMethodDrillRecoveryPacketDashboardHandoff) { Summary.StartedWeakMethodDrillRecoveryPacketFollowUpHandoffEventCount += 1; @@ -10400,6 +10618,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.StartedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (bReliableTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoff) + { + Summary.StartedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } } else if (DashboardHandoffKind == EHyperTwistTrainingCoachHandoffKind::Recommended) { @@ -10440,6 +10662,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.StartedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (bReliableTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoff) + { + Summary.StartedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } if (bWeakMethodDrillRecoveryPacketDashboardHandoff) { Summary.StartedWeakMethodDrillRecoveryPacketRecommendedHandoffEventCount += 1; @@ -10456,6 +10682,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.StartedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (bReliableTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoff) + { + Summary.StartedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } } if (bStrongMethodDrillRecoveryDashboardHandoff) { @@ -10524,6 +10754,11 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.PromotedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (HyperTwistTrainingRepositoryLibraryInternal::IsReliableTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( + HistoryEntry.StartActionSourceLabel)) + { + Summary.PromotedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } if (HyperTwistTrainingRepositoryLibraryInternal::IsBroadMethodDrillRecoveryStructureDashboardHandoffSource( HistoryEntry.StartActionSourceLabel)) { @@ -10539,6 +10774,11 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.PromotedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (HyperTwistTrainingRepositoryLibraryInternal::IsReliableTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( + HistoryEntry.StartActionSourceLabel)) + { + Summary.PromotedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } break; case EHyperTwistTrainingCoachSessionQueueEventKind::Completed: Summary.CompletedEventCount += 1; @@ -10565,6 +10805,9 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito const bool bTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoff = HyperTwistTrainingRepositoryLibraryInternal::IsTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( HistoryEntry.StartActionSourceLabel); + const bool bReliableTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoff = + HyperTwistTrainingRepositoryLibraryInternal::IsReliableTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( + HistoryEntry.StartActionSourceLabel); const bool bWeakMethodDrillRecoveryDashboardHandoff = HyperTwistTrainingRepositoryLibraryInternal::IsWeakMethodDrillRecoveryDashboardHandoffSource( HistoryEntry.StartActionSourceLabel); @@ -10577,6 +10820,9 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito const bool bTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoff = HyperTwistTrainingRepositoryLibraryInternal::IsTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( HistoryEntry.StartActionSourceLabel); + const bool bReliableTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoff = + HyperTwistTrainingRepositoryLibraryInternal::IsReliableTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( + HistoryEntry.StartActionSourceLabel); const bool bStrongRetainedMethodDrillRecoveryPostureDashboardHandoff = HyperTwistTrainingRepositoryLibraryInternal::IsStrongRetainedMethodDrillRecoveryPostureDashboardHandoffSource( HistoryEntry.StartActionSourceLabel); @@ -10614,6 +10860,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.CompletedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (bReliableTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoff) + { + Summary.CompletedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1; + } if (bWeakMethodDrillRecoveryDashboardHandoff) { Summary.CompletedWeakMethodDrillRecoveryMemoryHandoffEventCount += 1; @@ -10630,6 +10880,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito { Summary.CompletedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1; } + if (bReliableTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoff) + { + Summary.CompletedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 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 ab34b03..179924a 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingTypes.h +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingTypes.h @@ -3765,6 +3765,15 @@ struct FHyperTwistTrainingCoachSessionQueueExecutionSummary UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") int32 CompletedTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") + int32 StartedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") + int32 PromotedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") + int32 CompletedReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") int32 StartedBroadMethodDrillRecoveryStructurePlanHandoffEventCount = 0; @@ -3783,6 +3792,15 @@ struct FHyperTwistTrainingCoachSessionQueueExecutionSummary UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") int32 CompletedTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") + int32 StartedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") + int32 PromotedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") + int32 CompletedReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffEventCount = 0; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist") int32 CompletedMethodDrillQueuedHandoffEventCount = 0;