diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp index 5a4722f..4e75dc8 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistCoachDashboardWidget.cpp @@ -44,6 +44,8 @@ namespace HyperTwistCoachDashboardWidgetInternal int32 AlignedBroadRecommendedOutcomeAcceptedDeltaCount = 0; int32 AlignedTightFollowUpPacketAcceptedDeltaCount = 0; int32 AlignedBroadRecommendedPacketAcceptedDeltaCount = 0; + int32 ReliableAcceptedAlignedTightFollowUpPacketAcceptedDeltaCount = 0; + int32 ReliableAcceptedAlignedBroadRecommendedPacketAcceptedDeltaCount = 0; int32 DeferredOverflowQueueAcceptedDeltaCount = 0; int32 DeferredOverflowFollowUpAcceptedDeltaCount = 0; int32 DeferredOverflowRecommendedAcceptedDeltaCount = 0; @@ -412,6 +414,13 @@ namespace HyperTwistCoachDashboardWidgetInternal } if (IsAlignedTightFollowUpGuidanceSourceLabel(SourceLabel)) { + if (SourceLabel.StartsWith( + TEXT("coach-memory-dashboard-accepted-aligned-follow-up-packet-tight-reliable-outcome-")) + || SourceLabel.StartsWith( + TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-reliable-outcome-"))) + { + return TEXT("reliable accepted aligned tight follow-up-packet launched-plan outcome"); + } if (SourceLabel.StartsWith( TEXT("coach-memory-dashboard-accepted-aligned-follow-up-packet-tight-reliable-")) || SourceLabel.StartsWith( @@ -442,6 +451,13 @@ namespace HyperTwistCoachDashboardWidgetInternal } if (IsAlignedBroadRecommendedGuidanceSourceLabel(SourceLabel)) { + if (SourceLabel.StartsWith( + TEXT("coach-memory-dashboard-accepted-aligned-follow-up-packet-broad-reliable-outcome-")) + || SourceLabel.StartsWith( + TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-reliable-outcome-"))) + { + return TEXT("reliable accepted aligned broad recommended-packet launched-plan outcome"); + } if (SourceLabel.StartsWith( TEXT("coach-memory-dashboard-accepted-aligned-follow-up-packet-broad-reliable-")) || SourceLabel.StartsWith( @@ -1060,8 +1076,38 @@ namespace HyperTwistCoachDashboardWidgetInternal const bool bAcceptedAlignedTightFollowUpPacketOutcomeDriven = false, const bool bAcceptedAlignedBroadRecommendedPacketOutcomeDriven = false, const bool bReliableAcceptedAlignedTightFollowUpPacketOutcomeDriven = false, - const bool bReliableAcceptedAlignedBroadRecommendedPacketOutcomeDriven = false) + const bool bReliableAcceptedAlignedBroadRecommendedPacketOutcomeDriven = false, + const bool bReliableAcceptedAlignedTightFollowUpPacketOutcomeHistoryDriven = false, + const bool bReliableAcceptedAlignedBroadRecommendedPacketOutcomeHistoryDriven = false) { + if (bReliableAcceptedAlignedTightFollowUpPacketOutcomeHistoryDriven) + { + switch (HandoffKind) + { + case EHyperTwistTrainingCoachHandoffKind::Queue: + return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-reliable-outcome-queued"); + case EHyperTwistTrainingCoachHandoffKind::FollowUp: + return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-reliable-outcome-follow-up"); + case EHyperTwistTrainingCoachHandoffKind::Recommended: + return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-reliable-outcome-recommended"); + default: + return FString(); + } + } + if (bReliableAcceptedAlignedBroadRecommendedPacketOutcomeHistoryDriven) + { + switch (HandoffKind) + { + case EHyperTwistTrainingCoachHandoffKind::Queue: + return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-reliable-outcome-queued"); + case EHyperTwistTrainingCoachHandoffKind::FollowUp: + return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-reliable-outcome-follow-up"); + case EHyperTwistTrainingCoachHandoffKind::Recommended: + return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-reliable-outcome-recommended"); + default: + return FString(); + } + } if (bReliableAcceptedAlignedTightFollowUpPacketOutcomeDriven) { switch (HandoffKind) @@ -1595,6 +1641,14 @@ namespace HyperTwistCoachDashboardWidgetInternal bHasPreviousEntry ? PreviousEntry.AcceptedAlignedTightFollowUpPacketHandoffCount : 0; const int32 PreviousAlignedBroadRecommendedPacketCount = bHasPreviousEntry ? PreviousEntry.AcceptedAlignedBroadRecommendedPacketHandoffCount : 0; + const int32 PreviousReliableAcceptedAlignedTightPacketCount = + bHasPreviousEntry + ? PreviousEntry.ReliableAcceptedAlignedTightFollowUpPacketOutcomeHandoffCount + : 0; + const int32 PreviousReliableAcceptedAlignedBroadPacketCount = + bHasPreviousEntry + ? PreviousEntry.ReliableAcceptedAlignedBroadRecommendedPacketOutcomeHandoffCount + : 0; const int32 QueuedDelta = FMath::Max(0, Entry.AcceptedQueuedHandoffCount - PreviousQueuedCount); @@ -1647,6 +1701,16 @@ namespace HyperTwistCoachDashboardWidgetInternal Entry.AcceptedAlignedBroadRecommendedPacketHandoffCount - PreviousAlignedBroadRecommendedPacketCount ); + const int32 ReliableAcceptedAlignedTightPacketDelta = FMath::Max( + 0, + Entry.ReliableAcceptedAlignedTightFollowUpPacketOutcomeHandoffCount + - PreviousReliableAcceptedAlignedTightPacketCount + ); + const int32 ReliableAcceptedAlignedBroadPacketDelta = FMath::Max( + 0, + Entry.ReliableAcceptedAlignedBroadRecommendedPacketOutcomeHandoffCount + - PreviousReliableAcceptedAlignedBroadPacketCount + ); if (QueuedDelta > 0) { @@ -1697,6 +1761,13 @@ namespace HyperTwistCoachDashboardWidgetInternal Bias.FollowUpScore += AlignedTightFollowUpPacketDelta * 4; Bias.bHasAlignedPacketAcceptedSignal = true; } + if (ReliableAcceptedAlignedTightPacketDelta > 0) + { + Bias.ReliableAcceptedAlignedTightFollowUpPacketAcceptedDeltaCount += + ReliableAcceptedAlignedTightPacketDelta; + Bias.FollowUpScore += ReliableAcceptedAlignedTightPacketDelta * 5; + Bias.bHasAlignedPacketAcceptedSignal = true; + } if (Entry.bUsedReliableTrustedTightStructurePlanHistory) { Bias.ReliableTrustedTightFollowUpAcceptedDeltaCount += FollowUpDelta; @@ -1741,6 +1812,13 @@ namespace HyperTwistCoachDashboardWidgetInternal Bias.RecommendedScore += AlignedBroadRecommendedPacketDelta * 4; Bias.bHasAlignedPacketAcceptedSignal = true; } + if (ReliableAcceptedAlignedBroadPacketDelta > 0) + { + Bias.ReliableAcceptedAlignedBroadRecommendedPacketAcceptedDeltaCount += + ReliableAcceptedAlignedBroadPacketDelta; + Bias.RecommendedScore += ReliableAcceptedAlignedBroadPacketDelta * 5; + Bias.bHasAlignedPacketAcceptedSignal = true; + } if (Entry.bUsedReliableTrustedTightStructurePlanHistory) { Bias.ReliableTrustedTightRecommendedAcceptedDeltaCount += RecommendedDelta; @@ -6586,6 +6664,12 @@ FString UHyperTwistCoachDashboardWidget::ResolveDashboardHandoffStartActionSourc const bool bUseReliableAcceptedAlignedBroadPacketOutcomeLabel = bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedBroadPacketOutcomeTrust && DisplayedCoachHandoffRecommendationKind == HandoffKind; + const bool bUseReliableAcceptedAlignedTightPacketOutcomeHistoryLabel = + bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedTightPacketOutcomeHistory + && DisplayedCoachHandoffRecommendationKind == HandoffKind; + const bool bUseReliableAcceptedAlignedBroadPacketOutcomeHistoryLabel = + bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedBroadPacketOutcomeHistory + && DisplayedCoachHandoffRecommendationKind == HandoffKind; return HyperTwistCoachDashboardWidgetInternal::DashboardHandoffSourceLabel( HandoffKind, bUseDeferredFirstSuppressionLabel, @@ -6604,7 +6688,9 @@ FString UHyperTwistCoachDashboardWidget::ResolveDashboardHandoffStartActionSourc bUseAcceptedAlignedTightPacketOutcomeLabel, bUseAcceptedAlignedBroadPacketOutcomeLabel, bUseReliableAcceptedAlignedTightPacketOutcomeLabel, - bUseReliableAcceptedAlignedBroadPacketOutcomeLabel + bUseReliableAcceptedAlignedBroadPacketOutcomeLabel, + bUseReliableAcceptedAlignedTightPacketOutcomeHistoryLabel, + bUseReliableAcceptedAlignedBroadPacketOutcomeHistoryLabel ); } @@ -8527,7 +8613,9 @@ void UHyperTwistCoachDashboardWidget::RecordCoachHandoffHistorySnapshot( const bool bUsedReliableAlignedTrustedTightStructurePlanHistory, const bool bUsedReliableAlignedTrustedBroadStructurePlanHistory, const bool bUsedReliableAlignedTrustedTightStructurePlanOutcomeHistory, - const bool bUsedReliableAlignedTrustedBroadStructurePlanOutcomeHistory) + const bool bUsedReliableAlignedTrustedBroadStructurePlanOutcomeHistory, + const bool bUsedReliableAcceptedAlignedTightPacketOutcomeHistory, + const bool bUsedReliableAcceptedAlignedBroadPacketOutcomeHistory) { FHyperTwistCoachDashboardHandoffHistoryEntry Entry; Entry.RecordedAtUtc = FDateTime::UtcNow().ToIso8601(); @@ -8581,6 +8669,14 @@ void UHyperTwistCoachDashboardWidget::RecordCoachHandoffHistorySnapshot( HandoffHistoryEntries.Num() > 0 ? HandoffHistoryEntries.Last().AcceptedAlignedBroadRecommendedPacketHandoffCount : 0; + const int32 PreviousReliableAcceptedAlignedTightFollowUpPacketOutcomeHandoffCount = + HandoffHistoryEntries.Num() > 0 + ? HandoffHistoryEntries.Last().ReliableAcceptedAlignedTightFollowUpPacketOutcomeHandoffCount + : 0; + const int32 PreviousReliableAcceptedAlignedBroadRecommendedPacketOutcomeHandoffCount = + HandoffHistoryEntries.Num() > 0 + ? HandoffHistoryEntries.Last().ReliableAcceptedAlignedBroadRecommendedPacketOutcomeHandoffCount + : 0; const int32 AcceptedFollowUpHandoffDelta = FMath::Max( 0, Entry.AcceptedFollowUpHandoffCount - PreviousAcceptedFollowUpHandoffCount @@ -8613,6 +8709,12 @@ void UHyperTwistCoachDashboardWidget::RecordCoachHandoffHistorySnapshot( Entry.AcceptedAlignedBroadRecommendedPacketHandoffCount = PreviousAcceptedAlignedBroadRecommendedPacketHandoffCount + (bAlignedBroadRecommendedPacketSource ? AcceptedRecommendedHandoffDelta : 0); + Entry.ReliableAcceptedAlignedTightFollowUpPacketOutcomeHandoffCount = + PreviousReliableAcceptedAlignedTightFollowUpPacketOutcomeHandoffCount + + (bUsedReliableAcceptedAlignedTightPacketOutcomeHistory ? AcceptedFollowUpHandoffDelta : 0); + Entry.ReliableAcceptedAlignedBroadRecommendedPacketOutcomeHandoffCount = + PreviousReliableAcceptedAlignedBroadRecommendedPacketOutcomeHandoffCount + + (bUsedReliableAcceptedAlignedBroadPacketOutcomeHistory ? AcceptedRecommendedHandoffDelta : 0); Entry.ReliableAlignedTrustedTightPlanOutcomeHistoryCount = CachedCoachPanelState .ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount; @@ -8694,6 +8796,10 @@ void UHyperTwistCoachDashboardWidget::RecordCoachHandoffHistorySnapshot( == Entry.AcceptedAlignedTightFollowUpPacketHandoffCount && HandoffHistoryEntries.Last().AcceptedAlignedBroadRecommendedPacketHandoffCount == Entry.AcceptedAlignedBroadRecommendedPacketHandoffCount + && HandoffHistoryEntries.Last().ReliableAcceptedAlignedTightFollowUpPacketOutcomeHandoffCount + == Entry.ReliableAcceptedAlignedTightFollowUpPacketOutcomeHandoffCount + && HandoffHistoryEntries.Last().ReliableAcceptedAlignedBroadRecommendedPacketOutcomeHandoffCount + == Entry.ReliableAcceptedAlignedBroadRecommendedPacketOutcomeHandoffCount && HandoffHistoryEntries.Last().ReliableAlignedTrustedTightPlanOutcomeHistoryCount == Entry.ReliableAlignedTrustedTightPlanOutcomeHistoryCount && HandoffHistoryEntries.Last().ReliableAlignedTrustedBroadPlanOutcomeHistoryCount @@ -10107,6 +10213,8 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedBroadPacketOutcomeTrust = false; bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedTightPacketOutcomeTrust = false; bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedBroadPacketOutcomeTrust = false; + bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedTightPacketOutcomeHistory = false; + bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedBroadPacketOutcomeHistory = false; DisplayedCoachHandoffMethodDrillRecoveryMemoryStartActionSourceLabel.Reset(); FString CoachHandoffRecommendationStatusLine; FString CoachHandoffRecommendationDetailLine; @@ -11128,6 +11236,26 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() || (DisplayedCoachHandoffRecommendationKind == EHyperTwistTrainingCoachHandoffKind::Queue && bQueueLooksRecommendedOrPrimary)); + bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedTightPacketOutcomeHistory = + AcceptedAlignedTightPacketReliableOutcomeBias + > AcceptedAlignedBroadPacketReliableOutcomeBias + && AcceptedAlignedTightPacketReliableOutcomeBias + >= AcceptedAlignedTightPacketReliableTrustBias + && (DisplayedCoachHandoffRecommendationKind + == EHyperTwistTrainingCoachHandoffKind::FollowUp + || (DisplayedCoachHandoffRecommendationKind + == EHyperTwistTrainingCoachHandoffKind::Queue + && bQueueLooksFollowUpOrRecovery)); + bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedBroadPacketOutcomeHistory = + AcceptedAlignedBroadPacketReliableOutcomeBias + > AcceptedAlignedTightPacketReliableOutcomeBias + && AcceptedAlignedBroadPacketReliableOutcomeBias + >= AcceptedAlignedBroadPacketReliableTrustBias + && (DisplayedCoachHandoffRecommendationKind + == EHyperTwistTrainingCoachHandoffKind::Recommended + || (DisplayedCoachHandoffRecommendationKind + == EHyperTwistTrainingCoachHandoffKind::Queue + && bQueueLooksRecommendedOrPrimary)); const bool bHandoffRecommendationUsedStrongMethodDrillFollowUpPacket = bHandoffRecommendationUsedMethodDrillWeighting && HandoffRecommendationKind @@ -11360,6 +11488,11 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketTrustReliableOutcomeAverageScore, CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketTrustReliableOutcomeAverageScore ); + CoachHandoffRecommendationDetailLine += FString::Printf( + TEXT(" | reliable accepted aligned packet handoff history follow-up/recommended %d/%d"), + HandoffHistoryBias.ReliableAcceptedAlignedTightFollowUpPacketAcceptedDeltaCount, + HandoffHistoryBias.ReliableAcceptedAlignedBroadRecommendedPacketAcceptedDeltaCount + ); if (HandoffHistoryBias.AlignedTightFollowUpOutcomeAcceptedDeltaCount > 0 && HandoffHistoryBias.PreferredKind == HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::FollowUp) @@ -11410,6 +11543,17 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() CoachHandoffRecommendationDetailLine += TEXT(" | Accepted aligned broad packet outcome trust is tipping this handoff back toward broader redirect."); } + if (bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedTightPacketOutcomeHistory) + { + CoachHandoffRecommendationDetailLine += + TEXT(" | Reliable accepted aligned tight launched-plan outcomes are reinforcing accepted narrow continuation."); + } + else if ( + bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedBroadPacketOutcomeHistory) + { + CoachHandoffRecommendationDetailLine += + TEXT(" | Reliable accepted aligned broad launched-plan outcomes are reinforcing accepted broader redirect."); + } CoachHandoffRecommendationDetailLine += FString::Printf( TEXT(" | upstream drill recovery strong/weak/history %d/%d/%d avg %.1f"), CachedCoachPanelState.StrongMethodDrillRecoveryHistoryCount, @@ -11617,7 +11761,9 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() bHandoffRecommendationUsedReliableAlignedTrustedTightPlanHistory, bHandoffRecommendationUsedReliableAlignedTrustedBroadPlanHistory, bHandoffRecommendationUsedReliableAlignedTrustedTightPlanOutcomeHistory, - bHandoffRecommendationUsedReliableAlignedTrustedBroadPlanOutcomeHistory + bHandoffRecommendationUsedReliableAlignedTrustedBroadPlanOutcomeHistory, + bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedTightPacketOutcomeHistory, + bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedBroadPacketOutcomeHistory ); FString QueuedRunLabel = CachedCoachPanelState.NextQueueSourceLabel.IsEmpty() ? TEXT("Start Queue") @@ -11730,7 +11876,7 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() const FString HandoffHistoryDetailLine = SelectedHandoffHistoryEntry != nullptr ? FString::Printf( - TEXT("Accepted queued/follow-up/recommended: %d/%d/%d | aligned guidance accepted follow-up/recommended: %d/%d | aligned packet accepted follow-up/recommended: %d/%d | deferred-overflow queued/follow-up/recommended: %d/%d/%d | drill-driven queued/follow-up/recommended: %d/%d/%d | aligned reliable handoff outcomes tight/broad %d/%d avg %.1f/%.1f | deferred-first suppression recommendation used: %s | drill weighting used: %s | reliable trusted plan: %s | retained posture: %s | queue source: %s | preferred lane: %s | memory source: %s | recovery action: %s | recovery source: %s | closure continuation bias %d | closure suppression bias %d | readiness queue/follow-up/recommended: %s/%s/%s || %s"), + TEXT("Accepted queued/follow-up/recommended: %d/%d/%d | aligned guidance accepted follow-up/recommended: %d/%d | aligned packet accepted follow-up/recommended: %d/%d | reliable accepted aligned packet handoff follow-up/recommended: %d/%d | deferred-overflow queued/follow-up/recommended: %d/%d/%d | drill-driven queued/follow-up/recommended: %d/%d/%d | aligned reliable handoff outcomes tight/broad %d/%d avg %.1f/%.1f | deferred-first suppression recommendation used: %s | drill weighting used: %s | reliable trusted plan: %s | retained posture: %s | queue source: %s | preferred lane: %s | memory source: %s | recovery action: %s | recovery source: %s | closure continuation bias %d | closure suppression bias %d | readiness queue/follow-up/recommended: %s/%s/%s || %s"), SelectedHandoffHistoryEntry->AcceptedQueuedHandoffCount, SelectedHandoffHistoryEntry->AcceptedFollowUpHandoffCount, SelectedHandoffHistoryEntry->AcceptedRecommendedHandoffCount, @@ -11738,6 +11884,8 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation() SelectedHandoffHistoryEntry->AcceptedAlignedBroadRecommendedOutcomeHandoffCount, SelectedHandoffHistoryEntry->AcceptedAlignedTightFollowUpPacketHandoffCount, SelectedHandoffHistoryEntry->AcceptedAlignedBroadRecommendedPacketHandoffCount, + SelectedHandoffHistoryEntry->ReliableAcceptedAlignedTightFollowUpPacketOutcomeHandoffCount, + SelectedHandoffHistoryEntry->ReliableAcceptedAlignedBroadRecommendedPacketOutcomeHandoffCount, SelectedHandoffHistoryEntry->AcceptedDeferredOverflowQueuedHandoffCount, SelectedHandoffHistoryEntry->AcceptedDeferredOverflowFollowUpHandoffCount, SelectedHandoffHistoryEntry->AcceptedDeferredOverflowRecommendedHandoffCount, diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistCoachDashboardWidget.h b/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistCoachDashboardWidget.h index 8ef92e7..2dacdea 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistCoachDashboardWidget.h +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistCoachDashboardWidget.h @@ -342,6 +342,8 @@ struct FHyperTwistCoachDashboardHandoffHistoryEntry int32 AcceptedAlignedBroadRecommendedOutcomeHandoffCount = 0; int32 AcceptedAlignedTightFollowUpPacketHandoffCount = 0; int32 AcceptedAlignedBroadRecommendedPacketHandoffCount = 0; + int32 ReliableAcceptedAlignedTightFollowUpPacketOutcomeHandoffCount = 0; + int32 ReliableAcceptedAlignedBroadRecommendedPacketOutcomeHandoffCount = 0; int32 ReliableAlignedTrustedTightPlanOutcomeHistoryCount = 0; int32 ReliableAlignedTrustedBroadPlanOutcomeHistoryCount = 0; float ReliableAlignedTrustedTightPlanOutcomeAverageScore = 0.0f; @@ -1536,7 +1538,9 @@ private: bool bUsedReliableAlignedTrustedTightStructurePlanHistory, bool bUsedReliableAlignedTrustedBroadStructurePlanHistory, bool bUsedReliableAlignedTrustedTightStructurePlanOutcomeHistory, - bool bUsedReliableAlignedTrustedBroadStructurePlanOutcomeHistory + bool bUsedReliableAlignedTrustedBroadStructurePlanOutcomeHistory, + bool bUsedReliableAcceptedAlignedTightPacketOutcomeHistory, + bool bUsedReliableAcceptedAlignedBroadPacketOutcomeHistory ); void RecordQueueSuppressionSnapshot(); void RecordClosureRecoverySnapshot(); @@ -1622,6 +1626,8 @@ private: bool bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedBroadPacketOutcomeTrust = false; bool bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedTightPacketOutcomeTrust = false; bool bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedBroadPacketOutcomeTrust = false; + bool bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedTightPacketOutcomeHistory = false; + bool bDisplayedCoachHandoffRecommendationUsedReliableAcceptedAlignedBroadPacketOutcomeHistory = false; FString DisplayedCoachHandoffMethodDrillRecoveryMemoryStartActionSourceLabel; EHyperTwistCoachDashboardGuidancePreviewLane ActiveGuidancePreviewLane = EHyperTwistCoachDashboardGuidancePreviewLane::None;