Retain reliable accepted packet handoff history on dashboard

This commit is contained in:
axiomlogicnexus 2026-04-30 02:25:46 +02:00
parent 9754238021
commit 9b6352e728
2 changed files with 160 additions and 6 deletions

View file

@ -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,

View file

@ -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;