From 95f60229ee6de4b4bdd8ed7821913db2d873c15f Mon Sep 17 00:00:00 2001 From: axiomlogicnexus Date: Wed, 29 Apr 2026 18:47:51 +0200 Subject: [PATCH] Persist drill recovery plan trust upstream --- .../HyperTwistCoachDashboardWidget.cpp | 172 ++++++++++++++---- .../HyperTwistTrainingCoachLibrary.cpp | 68 ++++++- .../HyperTwistTrainingRepositoryLibrary.cpp | 106 ++++++++++- 3 files changed, 305 insertions(+), 41 deletions(-) diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp index 8c36f19..c8cb9b2 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp @@ -490,6 +490,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-queued")) + { + return TEXT("accepted trusted tight drill-recovery-plan queued dashboard handoff"); + } if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-strong-queued")) { return TEXT("accepted strong drill-recovery-packet queued dashboard handoff"); @@ -510,6 +514,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-follow-up")) + { + return TEXT("accepted trusted tight drill-recovery-plan follow-up dashboard handoff"); + } if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-strong-follow-up")) { return TEXT("accepted strong drill-recovery-packet follow-up dashboard handoff"); @@ -530,6 +538,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-recommended")) + { + return TEXT("accepted trusted tight drill-recovery-plan recommended dashboard handoff"); + } if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-strong-recommended")) { return TEXT("accepted strong drill-recovery-packet recommended dashboard handoff"); @@ -550,6 +562,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-queued")) + { + return TEXT("accepted trusted broad drill-recovery-plan queued dashboard handoff"); + } if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-queued")) { return TEXT("accepted weak drill-recovery-packet queued dashboard handoff"); @@ -570,6 +586,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-follow-up")) + { + return TEXT("accepted trusted broad drill-recovery-plan follow-up dashboard handoff"); + } if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-follow-up")) { return TEXT("accepted weak drill-recovery-packet follow-up dashboard handoff"); @@ -590,6 +610,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-recommended")) + { + return TEXT("accepted trusted broad drill-recovery-plan recommended dashboard handoff"); + } if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-recommended")) { return TEXT("accepted weak drill-recovery-packet recommended dashboard handoff"); @@ -666,6 +690,18 @@ namespace HyperTwistCoachDashboardWidgetInternal { return TEXT("successful tight drill-recovery-plan history"); } + if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-"))) + { + return TEXT("accepted trusted tight drill-recovery-plan dashboard handoff"); + } + if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-"))) + { + return TEXT("accepted tight drill-recovery-plan dashboard handoff"); + } + if (SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted")) + { + return TEXT("trusted tight drill-recovery-plan history"); + } if (SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-strong")) { return TEXT("successful retained drill-recovery-packet history"); @@ -686,6 +722,18 @@ namespace HyperTwistCoachDashboardWidgetInternal { return TEXT("successful broad drill-recovery-plan redirect history"); } + if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-trusted-"))) + { + return TEXT("accepted trusted broad drill-recovery-plan dashboard handoff"); + } + if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-"))) + { + return TEXT("accepted broad drill-recovery-plan dashboard handoff"); + } + if (SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted")) + { + return TEXT("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"); @@ -717,13 +765,31 @@ namespace HyperTwistCoachDashboardWidgetInternal return SourceLabel.Contains(TEXT("structure-plan-tight")); } + bool IsTrustedTightMethodDrillRecoveryPlanSourceLabel(const FString& SourceLabel) + { + return SourceLabel.Contains(TEXT("structure-plan-tight-trusted")); + } + bool IsBroadMethodDrillRecoveryPlanSourceLabel(const FString& SourceLabel) { return SourceLabel.Contains(TEXT("structure-plan-broad")); } + bool IsTrustedBroadMethodDrillRecoveryPlanSourceLabel(const FString& SourceLabel) + { + return SourceLabel.Contains(TEXT("structure-plan-broad-trusted")); + } + FString DescribeMethodDrillRecoveryPlanSourceLabel(const FString& SourceLabel) { + if (IsTrustedTightMethodDrillRecoveryPlanSourceLabel(SourceLabel)) + { + return TEXT("trusted tight retained drill-recovery plan"); + } + if (IsTrustedBroadMethodDrillRecoveryPlanSourceLabel(SourceLabel)) + { + return TEXT("trusted broad retained drill-recovery plan"); + } if (IsTightMethodDrillRecoveryPlanSourceLabel(SourceLabel)) { return TEXT("tight retained drill-recovery plan"); @@ -747,7 +813,8 @@ namespace HyperTwistCoachDashboardWidgetInternal const bool bNarrowMethodDrillRecoveryStructureDriven = false, const bool bBroadMethodDrillRecoveryStructureDriven = false, const bool bTightMethodDrillRecoveryStructurePlanDriven = false, - const bool bBroadMethodDrillRecoveryStructurePlanDriven = false) + const bool bBroadMethodDrillRecoveryStructurePlanDriven = false, + const bool bTrustedMethodDrillRecoveryStructurePlanDriven = false) { if (MethodDrillRecoveryMemoryBias == EMethodDrillRecoveryMemoryBias::Strong) { @@ -756,7 +823,9 @@ namespace HyperTwistCoachDashboardWidgetInternal case EHyperTwistTrainingCoachHandoffKind::Queue: if (bTightMethodDrillRecoveryStructurePlanDriven) { - return TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-queued"); + return bTrustedMethodDrillRecoveryStructurePlanDriven + ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-queued") + : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-queued"); } if (bNarrowMethodDrillRecoveryStructureDriven) { @@ -772,7 +841,9 @@ namespace HyperTwistCoachDashboardWidgetInternal case EHyperTwistTrainingCoachHandoffKind::FollowUp: if (bTightMethodDrillRecoveryStructurePlanDriven) { - return TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-follow-up"); + return bTrustedMethodDrillRecoveryStructurePlanDriven + ? 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) { @@ -788,7 +859,9 @@ namespace HyperTwistCoachDashboardWidgetInternal case EHyperTwistTrainingCoachHandoffKind::Recommended: if (bTightMethodDrillRecoveryStructurePlanDriven) { - return TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended"); + return bTrustedMethodDrillRecoveryStructurePlanDriven + ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-recommended") + : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended"); } if (bNarrowMethodDrillRecoveryStructureDriven) { @@ -812,7 +885,9 @@ namespace HyperTwistCoachDashboardWidgetInternal case EHyperTwistTrainingCoachHandoffKind::Queue: if (bBroadMethodDrillRecoveryStructurePlanDriven) { - return TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-queued"); + return bTrustedMethodDrillRecoveryStructurePlanDriven + ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-queued") + : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-queued"); } if (bBroadMethodDrillRecoveryStructureDriven) { @@ -828,7 +903,9 @@ namespace HyperTwistCoachDashboardWidgetInternal case EHyperTwistTrainingCoachHandoffKind::FollowUp: if (bBroadMethodDrillRecoveryStructurePlanDriven) { - return TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-follow-up"); + return bTrustedMethodDrillRecoveryStructurePlanDriven + ? 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) { @@ -844,7 +921,9 @@ namespace HyperTwistCoachDashboardWidgetInternal case EHyperTwistTrainingCoachHandoffKind::Recommended: if (bBroadMethodDrillRecoveryStructurePlanDriven) { - return TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended"); + return bTrustedMethodDrillRecoveryStructurePlanDriven + ? TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-recommended") + : TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended"); } if (bBroadMethodDrillRecoveryStructureDriven) { @@ -2059,22 +2138,39 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() const bool bUseBroadMethodDrillPacketStructureRecovery = CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel == TEXT("coach-memory-method-drill-follow-up-packet-structure-broad"); - const bool bUseTightMethodDrillRecoveryStructurePlan = - CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel - == TEXT("coach-memory-method-drill-recovery-structure-plan-tight") - || (MethodDrillRecoveryPacketLaunchBias + const bool bUseTightMethodDrillRecoveryStructurePlan = + HyperTwistCoachDashboardWidgetInternal::IsTightMethodDrillRecoveryPlanSourceLabel( + CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel) + || (MethodDrillRecoveryPacketLaunchBias == HyperTwistCoachDashboardWidgetInternal::EMethodDrillRecoveryMemoryBias::Strong && MethodDrillRecoveryPacketQueueBias.TightContinuationPlanCount > 0 && MethodDrillRecoveryPacketQueueBias.TightContinuationPlanCount >= MethodDrillRecoveryPacketQueueBias.BroadRedirectPlanCount); - const bool bUseBroadMethodDrillRecoveryStructurePlan = - CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel - == TEXT("coach-memory-method-drill-recovery-structure-plan-broad") - || (MethodDrillRecoveryPacketLaunchBias + const bool bUseBroadMethodDrillRecoveryStructurePlan = + HyperTwistCoachDashboardWidgetInternal::IsBroadMethodDrillRecoveryPlanSourceLabel( + CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel) + || (MethodDrillRecoveryPacketLaunchBias == HyperTwistCoachDashboardWidgetInternal::EMethodDrillRecoveryMemoryBias::Weak && MethodDrillRecoveryPacketQueueBias.BroadRedirectPlanCount > 0 - && MethodDrillRecoveryPacketQueueBias.BroadRedirectPlanCount - >= MethodDrillRecoveryPacketQueueBias.TightContinuationPlanCount); + && MethodDrillRecoveryPacketQueueBias.BroadRedirectPlanCount + >= MethodDrillRecoveryPacketQueueBias.TightContinuationPlanCount); + const HyperTwistCoachDashboardWidgetInternal::FMethodDrillRecoveryPlanComparisonSummary + MethodDrillRecoveryPlanComparisonSummary = + HyperTwistCoachDashboardWidgetInternal::DeriveMethodDrillRecoveryPlanComparisonSummary( + MethodDrillRecoveryMemoryHistoryEntries + ); + const bool bUseTrustedTightMethodDrillRecoveryStructurePlan = + bUseTightMethodDrillRecoveryStructurePlan + && (HyperTwistCoachDashboardWidgetInternal::IsTrustedTightMethodDrillRecoveryPlanSourceLabel( + CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel) + || HyperTwistCoachDashboardWidgetInternal::PrefersMethodDrillRecoveryPlanTightContinuation( + MethodDrillRecoveryPlanComparisonSummary)); + const bool bUseTrustedBroadMethodDrillRecoveryStructurePlan = + bUseBroadMethodDrillRecoveryStructurePlan + && (HyperTwistCoachDashboardWidgetInternal::IsTrustedBroadMethodDrillRecoveryPlanSourceLabel( + CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel) + || HyperTwistCoachDashboardWidgetInternal::PrefersMethodDrillRecoveryPlanBroadRedirect( + MethodDrillRecoveryPlanComparisonSummary)); auto StartRunAndRefresh = [this](const FHyperTwistTrainingRunState& RunState) { @@ -2139,12 +2235,14 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() RetainedMethodDrillRecoveryMemoryBias, MethodDrillRecoveryPacketLaunchBias, bUseStrongRetainedMethodDrillRecoveryPosture, - bUseMethodDrillRecoveryPacketSignal, - bUseNarrowMethodDrillPacketStructureRecovery, - bUseBroadMethodDrillPacketStructureRecovery, - bUseTightMethodDrillRecoveryStructurePlan, - bUseBroadMethodDrillRecoveryStructurePlan - ]( + bUseMethodDrillRecoveryPacketSignal, + bUseNarrowMethodDrillPacketStructureRecovery, + bUseBroadMethodDrillPacketStructureRecovery, + bUseTightMethodDrillRecoveryStructurePlan, + bUseBroadMethodDrillRecoveryStructurePlan, + bUseTrustedTightMethodDrillRecoveryStructurePlan, + bUseTrustedBroadMethodDrillRecoveryStructurePlan + ]( const EHyperTwistTrainingCoachHandoffKind HandoffKind) { if (bHasDeferredFirstSuppressionSignal) @@ -2166,7 +2264,8 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() bUseNarrowMethodDrillPacketStructureRecovery, false, bUseTightMethodDrillRecoveryStructurePlan, - false + false, + bUseTrustedTightMethodDrillRecoveryStructurePlan ); } if (bUseMethodDrillRecoveryPacketSignal) @@ -2181,7 +2280,9 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() bUseNarrowMethodDrillPacketStructureRecovery, bUseBroadMethodDrillPacketStructureRecovery, bUseTightMethodDrillRecoveryStructurePlan, - bUseBroadMethodDrillRecoveryStructurePlan + bUseBroadMethodDrillRecoveryStructurePlan, + bUseTrustedTightMethodDrillRecoveryStructurePlan + || bUseTrustedBroadMethodDrillRecoveryStructurePlan ); } if (bUseMethodDrillRecoverySignal) @@ -2203,7 +2304,9 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture() bUseNarrowMethodDrillPacketStructureRecovery, bUseBroadMethodDrillPacketStructureRecovery, bUseTightMethodDrillRecoveryStructurePlan, - bUseBroadMethodDrillRecoveryStructurePlan + bUseBroadMethodDrillRecoveryStructurePlan, + bUseTrustedTightMethodDrillRecoveryStructurePlan + || bUseTrustedBroadMethodDrillRecoveryStructurePlan ); } @@ -9023,8 +9126,8 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() && (bHandoffRecommendationUsedMethodDrillRecoveryMemory || bHandoffRecommendationUsedStrongRetainedMethodDrillRecoveryPosture || bHandoffRecommendationUsedMethodDrillRecoveryPacketHistory)) - || CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel - == TEXT("coach-memory-method-drill-recovery-structure-plan-tight")); + || HyperTwistCoachDashboardWidgetInternal::IsTightMethodDrillRecoveryPlanSourceLabel( + CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel)); const bool bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan = HandoffRecommendationKind != HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::None @@ -9036,8 +9139,8 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() && (bHandoffRecommendationUsedMethodDrillRecoveryMemory || bHandoffRecommendationUsedWeakRetainedMethodDrillRecoveryPosture || bHandoffRecommendationUsedMethodDrillRecoveryPacketHistory)) - || CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel - == TEXT("coach-memory-method-drill-recovery-structure-plan-broad")); + || HyperTwistCoachDashboardWidgetInternal::IsBroadMethodDrillRecoveryPlanSourceLabel( + CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel)); if (bHandoffRecommendationUsedStrongRetainedMethodDrillRecoveryPosture || bHandoffRecommendationUsedWeakRetainedMethodDrillRecoveryPosture) { @@ -9054,7 +9157,8 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() false, false, bHandoffRecommendationUsedTightMethodDrillRecoveryStructurePlan, - bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan + bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan, + bHandoffRecommendationUsedPlanComparisonHistory ); } else if (bHandoffRecommendationUsedMethodDrillRecoveryMemory @@ -9072,7 +9176,8 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() false, false, bHandoffRecommendationUsedTightMethodDrillRecoveryStructurePlan, - bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan + bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan, + bHandoffRecommendationUsedPlanComparisonHistory ); } else if (bHandoffRecommendationUsedMethodDrillRecoveryPacketHistory @@ -9090,7 +9195,8 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() false, false, bHandoffRecommendationUsedTightMethodDrillRecoveryStructurePlan, - bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan + bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan, + bHandoffRecommendationUsedPlanComparisonHistory ); } else if (bHandoffRecommendationUsedStrongMethodDrillFollowUpPacket diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp index fc27f20..8ea8d3d 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp @@ -90,7 +90,11 @@ namespace HyperTwistTrainingCoachLibraryInternal || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-narrow") || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-broad") || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight") - || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad"); + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted") + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad") + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted") + || SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-")) + || SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-")); } bool IsMethodDrillRecoveryPacketSource(const FString& SourceLabel) @@ -138,6 +142,7 @@ namespace HyperTwistTrainingCoachLibraryInternal return SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-strong-")) || SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-packet-strong-")) || SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-posture-strong-")) + || SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-")) || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-strong-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-strong-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-strong-recommended") @@ -148,15 +153,19 @@ 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-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-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-recommended") || SourceLabel == TEXT("coach-memory-method-drill-recovery-strong") || SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-strong") || SourceLabel == TEXT("coach-memory-method-drill-recovery-posture-strong") || SourceLabel == TEXT("coach-memory-method-drill-recovery-memory-strong") || IsNarrowMethodDrillFollowUpPacketStructureSource(SourceLabel) || 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") + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted"); } bool IsWeakMethodDrillRecoveryMemorySource(const FString& SourceLabel) @@ -164,6 +173,7 @@ namespace HyperTwistTrainingCoachLibraryInternal return SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-weak-")) || SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-packet-weak-")) || SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-posture-weak-")) + || SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-")) || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-recommended") @@ -174,15 +184,19 @@ 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-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-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-recommended") || SourceLabel == TEXT("coach-memory-method-drill-recovery-weak") || SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-weak") || SourceLabel == TEXT("coach-memory-method-drill-recovery-posture-weak") || SourceLabel == TEXT("coach-memory-method-drill-recovery-memory-weak") || IsBroadMethodDrillFollowUpPacketStructureSource(SourceLabel) || 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") + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted"); } FString DescribeRetainedMethodDrillRecoveryStanceLabel(const FString& SourceLabel) @@ -368,6 +382,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-queued")) + { + return TEXT("accepted trusted tight drill-recovery-plan queued handoff history"); + } + if (SourceLabel == TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-follow-up")) + { + return TEXT("accepted trusted tight drill-recovery-plan follow-up handoff history"); + } + if (SourceLabel == TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-recommended")) + { + return TEXT("accepted trusted tight drill-recovery-plan recommended handoff history"); + } if (SourceLabel == TEXT("coach-memory-dashboard-method-drill-recovery-weak-queued")) { return TEXT("accepted weak drill-recovery-memory queued handoff history"); @@ -404,6 +430,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-queued")) + { + return TEXT("accepted trusted broad drill-recovery-plan queued handoff history"); + } + if (SourceLabel == TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-trusted-follow-up")) + { + return TEXT("accepted trusted broad drill-recovery-plan follow-up handoff history"); + } + if (SourceLabel == TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-trusted-recommended")) + { + return TEXT("accepted trusted broad drill-recovery-plan recommended handoff history"); + } if (SourceLabel == TEXT("coach-memory-queue-follow-up")) { return TEXT("queue follow-up recovery memory"); @@ -652,6 +690,18 @@ namespace HyperTwistTrainingCoachLibraryInternal { return TEXT("successful tight drill-recovery-plan history"); } + if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-"))) + { + return TEXT("accepted trusted tight drill-recovery-plan dashboard handoff"); + } + if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-"))) + { + return TEXT("accepted tight drill-recovery-plan dashboard handoff"); + } + if (SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted")) + { + return TEXT("trusted tight drill-recovery-plan history"); + } if (SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-strong")) { return TEXT("successful retained drill-recovery-packet history"); @@ -668,6 +718,18 @@ 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-"))) + { + return TEXT("accepted trusted broad drill-recovery-plan dashboard handoff"); + } + if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-"))) + { + return TEXT("accepted broad drill-recovery-plan dashboard handoff"); + } + if (SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted")) + { + return TEXT("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 a680282..1b8a7ff 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp @@ -101,14 +101,20 @@ 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-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-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-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-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-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-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-recommended") @@ -127,8 +133,11 @@ 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-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-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-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-recommended"); @@ -160,8 +169,11 @@ 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-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-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-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-recommended"); @@ -188,19 +200,53 @@ 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-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-follow-up") || SourceLabel - == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended"); + == 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-recommended"); } 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-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-follow-up") || SourceLabel - == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended"); + == 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-recommended"); + } + + bool IsTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( + const FString& SourceLabel) + { + return SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-queued") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-follow-up") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-trusted-recommended"); + } + + bool IsTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( + const FString& SourceLabel) + { + return SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-queued") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-follow-up") + || SourceLabel + == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-recommended"); } bool IsWeakMethodDrillRecoveryPacketDashboardHandoffSource(const FString& SourceLabel) @@ -279,7 +325,11 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-narrow") || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-broad") || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight") - || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad"); + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted") + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad") + || SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted") + || SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-")) + || SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-")); } bool IsStrongMethodDrillRecoveryPacketCoachMemorySource(const FString& SourceLabel) @@ -314,8 +364,10 @@ 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-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-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-queued") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-queued") @@ -333,8 +385,10 @@ 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-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-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-follow-up") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-follow-up") @@ -352,8 +406,10 @@ 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-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-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-recommended") || SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-recommended") @@ -1291,6 +1347,24 @@ namespace HyperTwistTrainingRepositoryLibraryInternal Snapshot.PreferredQueueRecoveryActionSourceLabel = TEXT("coach-memory-method-drill-recovery-packet-weak"); } + else if (Snapshot.PreferredQueueRecoveryAction + == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery + && HyperTwistTrainingRepositoryLibraryInternal:: + IsTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( + Snapshot.PreferredCoachHandoffSourceLabel)) + { + Snapshot.PreferredQueueRecoveryActionSourceLabel = + TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted"); + } + else if (Snapshot.PreferredQueueRecoveryAction + == EHyperTwistTrainingQueueRecoveryAction::PromoteDeferred + && HyperTwistTrainingRepositoryLibraryInternal:: + IsTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( + Snapshot.PreferredCoachHandoffSourceLabel)) + { + Snapshot.PreferredQueueRecoveryActionSourceLabel = + TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted"); + } else if (Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery && TightMethodDrillRecoveryStructurePlanLaunchBias > 0 && (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty() @@ -1520,7 +1594,9 @@ namespace HyperTwistTrainingRepositoryLibraryInternal CoachMemorySnapshot.PreferredCoachHandoffSourceLabel ) || CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel - == TEXT("coach-memory-method-drill-recovery-structure-plan-tight"); + == TEXT("coach-memory-method-drill-recovery-structure-plan-tight") + || CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel + == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted"); const bool bBroadMethodDrillRecoveryStructureHandoffSource = HyperTwistTrainingRepositoryLibraryInternal::IsBroadMethodDrillRecoveryStructureDashboardHandoffSource( CoachMemorySnapshot.PreferredCoachHandoffSourceLabel @@ -1532,7 +1608,9 @@ namespace HyperTwistTrainingRepositoryLibraryInternal CoachMemorySnapshot.PreferredCoachHandoffSourceLabel ) || CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel - == TEXT("coach-memory-method-drill-recovery-structure-plan-broad"); + == TEXT("coach-memory-method-drill-recovery-structure-plan-broad") + || CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel + == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted"); const bool bStrongMethodDrillRecoveryMemoryHandoffSource = CoachMemorySnapshot.PreferredCoachHandoffSourceLabel.StartsWith( TEXT("coach-memory-dashboard-method-drill-recovery-strong-")) @@ -7952,6 +8030,24 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der Snapshot.PreferredQueueRecoveryActionSourceLabel = TEXT("coach-memory-method-drill-recovery-packet-weak"); } + else if (Snapshot.PreferredQueueRecoveryAction + == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery + && HyperTwistTrainingRepositoryLibraryInternal:: + IsTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource( + Snapshot.PreferredCoachHandoffSourceLabel)) + { + Snapshot.PreferredQueueRecoveryActionSourceLabel = + TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted"); + } + else if (Snapshot.PreferredQueueRecoveryAction + == EHyperTwistTrainingQueueRecoveryAction::PromoteDeferred + && HyperTwistTrainingRepositoryLibraryInternal:: + IsTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource( + Snapshot.PreferredCoachHandoffSourceLabel)) + { + Snapshot.PreferredQueueRecoveryActionSourceLabel = + TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted"); + } else if (Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery && TightMethodDrillRecoveryStructurePlanLaunchBias > 0