Learn aligned drill recovery plan trust history

This commit is contained in:
axiomlogicnexus 2026-04-29 20:57:10 +02:00
parent 5a208a670c
commit 4348129d42
4 changed files with 565 additions and 67 deletions

View file

@ -126,12 +126,18 @@ namespace HyperTwistCoachDashboardWidgetInternal
int32 ReliableTrustedTightPlanSourceCount = 0;
int32 ReliableTrustedTightPlanAlignedCount = 0;
int32 ReliableTrustedTightPlanDivergedCount = 0;
int32 ReliableAlignedTrustedTightPlanSourceCount = 0;
int32 ReliableAlignedTrustedTightPlanAlignedCount = 0;
int32 ReliableAlignedTrustedTightPlanDivergedCount = 0;
int32 BroadPlanSourceCount = 0;
int32 BroadPlanAlignedCount = 0;
int32 BroadPlanDivergedCount = 0;
int32 ReliableTrustedBroadPlanSourceCount = 0;
int32 ReliableTrustedBroadPlanAlignedCount = 0;
int32 ReliableTrustedBroadPlanDivergedCount = 0;
int32 ReliableAlignedTrustedBroadPlanSourceCount = 0;
int32 ReliableAlignedTrustedBroadPlanAlignedCount = 0;
int32 ReliableAlignedTrustedBroadPlanDivergedCount = 0;
bool bHasSignal = false;
};
@ -835,6 +841,11 @@ namespace HyperTwistCoachDashboardWidgetInternal
return SourceLabel.Contains(TEXT("structure-plan-tight-trusted-reliable"));
}
bool IsReliableAlignedTrustedTightMethodDrillRecoveryPlanSourceLabel(const FString& SourceLabel)
{
return SourceLabel.Contains(TEXT("structure-plan-tight-trusted-reliable-aligned"));
}
bool IsBroadMethodDrillRecoveryPlanSourceLabel(const FString& SourceLabel)
{
return SourceLabel.Contains(TEXT("structure-plan-broad"));
@ -850,8 +861,21 @@ namespace HyperTwistCoachDashboardWidgetInternal
return SourceLabel.Contains(TEXT("structure-plan-broad-trusted-reliable"));
}
bool IsReliableAlignedTrustedBroadMethodDrillRecoveryPlanSourceLabel(const FString& SourceLabel)
{
return SourceLabel.Contains(TEXT("structure-plan-broad-trusted-reliable-aligned"));
}
FString DescribeMethodDrillRecoveryPlanSourceLabel(const FString& SourceLabel)
{
if (IsReliableAlignedTrustedTightMethodDrillRecoveryPlanSourceLabel(SourceLabel))
{
return TEXT("aligned reliable trusted tight retained drill-recovery plan");
}
if (IsReliableAlignedTrustedBroadMethodDrillRecoveryPlanSourceLabel(SourceLabel))
{
return TEXT("aligned reliable trusted broad retained drill-recovery plan");
}
if (IsReliableTrustedTightMethodDrillRecoveryPlanSourceLabel(SourceLabel))
{
return TEXT("reliable trusted tight retained drill-recovery plan");
@ -1946,6 +1970,19 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
++Summary.ReliableTrustedTightPlanDivergedCount;
}
if (IsReliableAlignedTrustedTightMethodDrillRecoveryPlanSourceLabel(
Entry.PreferredRecoveryActionSourceLabel))
{
++Summary.ReliableAlignedTrustedTightPlanSourceCount;
if (Entry.bGeneratedPlanUsedReliableAlignedTrustedTightStructureContinuationPosture)
{
++Summary.ReliableAlignedTrustedTightPlanAlignedCount;
}
else
{
++Summary.ReliableAlignedTrustedTightPlanDivergedCount;
}
}
}
}
else if (IsBroadMethodDrillRecoveryPlanSourceLabel(
@ -1973,6 +2010,19 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
++Summary.ReliableTrustedBroadPlanDivergedCount;
}
if (IsReliableAlignedTrustedBroadMethodDrillRecoveryPlanSourceLabel(
Entry.PreferredRecoveryActionSourceLabel))
{
++Summary.ReliableAlignedTrustedBroadPlanSourceCount;
if (Entry.bGeneratedPlanUsedReliableAlignedTrustedBroadStructureRedirectPosture)
{
++Summary.ReliableAlignedTrustedBroadPlanAlignedCount;
}
else
{
++Summary.ReliableAlignedTrustedBroadPlanDivergedCount;
}
}
}
}
}
@ -1985,6 +2035,17 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
if (IsTightMethodDrillRecoveryPlanSourceLabel(Entry.PreferredRecoveryActionSourceLabel))
{
if (IsReliableAlignedTrustedTightMethodDrillRecoveryPlanSourceLabel(
Entry.PreferredRecoveryActionSourceLabel))
{
return Entry.bGeneratedPlanUsedReliableAlignedTrustedTightStructureContinuationPosture
? TEXT("aligned reliable-tight continuation")
: (Entry.bGeneratedPlanUsedReliableAlignedTrustedBroadStructureRedirectPosture
? TEXT("diverged to aligned reliable-broad redirect")
: (Entry.bGeneratedPlanUsedReliableTrustedBroadStructureRedirectPosture
? TEXT("diverged to reliable broad redirect")
: TEXT("aligned reliable-tight source, plan unresolved")));
}
if (IsReliableTrustedTightMethodDrillRecoveryPlanSourceLabel(
Entry.PreferredRecoveryActionSourceLabel))
{
@ -2004,6 +2065,17 @@ namespace HyperTwistCoachDashboardWidgetInternal
}
if (IsBroadMethodDrillRecoveryPlanSourceLabel(Entry.PreferredRecoveryActionSourceLabel))
{
if (IsReliableAlignedTrustedBroadMethodDrillRecoveryPlanSourceLabel(
Entry.PreferredRecoveryActionSourceLabel))
{
return Entry.bGeneratedPlanUsedReliableAlignedTrustedBroadStructureRedirectPosture
? TEXT("aligned reliable-broad redirect")
: (Entry.bGeneratedPlanUsedReliableAlignedTrustedTightStructureContinuationPosture
? TEXT("diverged to aligned reliable-tight continuation")
: (Entry.bGeneratedPlanUsedReliableTrustedTightStructureContinuationPosture
? TEXT("diverged to reliable tight continuation")
: TEXT("aligned reliable-broad source, plan unresolved")));
}
if (IsReliableTrustedBroadMethodDrillRecoveryPlanSourceLabel(
Entry.PreferredRecoveryActionSourceLabel))
{
@ -2036,6 +2108,24 @@ namespace HyperTwistCoachDashboardWidgetInternal
const int32 ReliableBroadScore =
Summary.ReliableTrustedBroadPlanAlignedCount
- Summary.ReliableTrustedBroadPlanDivergedCount;
const int32 ReliableAlignedTightScore =
Summary.ReliableAlignedTrustedTightPlanAlignedCount
- Summary.ReliableAlignedTrustedTightPlanDivergedCount;
const int32 ReliableAlignedBroadScore =
Summary.ReliableAlignedTrustedBroadPlanAlignedCount
- Summary.ReliableAlignedTrustedBroadPlanDivergedCount;
if (ReliableAlignedTightScore > ReliableAlignedBroadScore
&& ReliableAlignedTightScore > 0
&& Summary.ReliableAlignedTrustedTightPlanSourceCount > 0)
{
return TEXT("aligned reliable tight continuation");
}
if (ReliableAlignedBroadScore > ReliableAlignedTightScore
&& ReliableAlignedBroadScore > 0
&& Summary.ReliableAlignedTrustedBroadPlanSourceCount > 0)
{
return TEXT("aligned reliable broad redirect");
}
if (ReliableTightScore > ReliableBroadScore
&& ReliableTightScore > 0
&& Summary.ReliableTrustedTightPlanSourceCount > 0)
@ -2069,7 +2159,9 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
return Summary.TightPlanAlignedCount - Summary.TightPlanDivergedCount
+ Summary.ReliableTrustedTightPlanAlignedCount
- Summary.ReliableTrustedTightPlanDivergedCount;
- Summary.ReliableTrustedTightPlanDivergedCount
+ (Summary.ReliableAlignedTrustedTightPlanAlignedCount * 2)
- Summary.ReliableAlignedTrustedTightPlanDivergedCount;
}
int32 DeriveMethodDrillRecoveryPlanBroadTrust(
@ -2077,7 +2169,9 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
return Summary.BroadPlanAlignedCount - Summary.BroadPlanDivergedCount
+ Summary.ReliableTrustedBroadPlanAlignedCount
- Summary.ReliableTrustedBroadPlanDivergedCount;
- Summary.ReliableTrustedBroadPlanDivergedCount
+ (Summary.ReliableAlignedTrustedBroadPlanAlignedCount * 2)
- Summary.ReliableAlignedTrustedBroadPlanDivergedCount;
}
bool PrefersMethodDrillRecoveryPlanTightContinuation(
@ -2441,12 +2535,12 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture()
&& MethodDrillRecoveryPlanBroadTrust >= MethodDrillRecoveryPlanTightTrust));
const bool bUseReliableAlignedTrustedTightMethodDrillRecoveryStructurePlan =
bUseReliableTrustedTightMethodDrillRecoveryStructurePlan
&& MethodDrillRecoveryPlanComparisonSummary.ReliableTrustedTightPlanSourceCount > 0
&& MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedTightPlanSourceCount > 0
&& MethodDrillRecoveryPlanTightTrust > 0
&& MethodDrillRecoveryPlanTightTrust >= MethodDrillRecoveryPlanBroadTrust;
const bool bUseReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlan =
bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan
&& MethodDrillRecoveryPlanComparisonSummary.ReliableTrustedBroadPlanSourceCount > 0
&& MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedBroadPlanSourceCount > 0
&& MethodDrillRecoveryPlanBroadTrust > 0
&& MethodDrillRecoveryPlanBroadTrust >= MethodDrillRecoveryPlanTightTrust;
@ -2474,7 +2568,9 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture()
bUseStrongRetainedMethodDrillRecoveryPosture,
bUseWeakRetainedMethodDrillRecoveryPosture,
bUseReliableTrustedTightMethodDrillRecoveryStructurePlan,
bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan
bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan,
bUseReliableAlignedTrustedTightMethodDrillRecoveryStructurePlan,
bUseReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlan
](
const TCHAR* AppliedActionLabel,
const FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind ActionKind,
@ -2509,6 +2605,12 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture()
bUseReliableTrustedBroadMethodDrillRecoveryStructurePlan
&& ActionKind
== FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::PromoteDeferred,
bUseReliableAlignedTrustedTightMethodDrillRecoveryStructurePlan
&& ActionKind
== FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::LaunchRecovery,
bUseReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlan
&& ActionKind
== FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::PromoteDeferred,
bSucceeded
);
UpdateDashboardPresentation();
@ -6728,6 +6830,15 @@ FHyperTwistCoachDashboardQueueRecoveryWeighting UHyperTwistCoachDashboardWidget:
++Weighting.ReliableTrustedBroadPlanPromoteReducedCount;
}
}
if (Outcome.bUsedReliableAlignedTrustedBroadStructurePlanRecovery)
{
++Weighting.ReliableAlignedTrustedBroadPlanPromoteCount;
Weighting.bHasReliableAlignedTrustedPlanOutcomeSignal = true;
if (Outcome.bReducedFriction)
{
++Weighting.ReliableAlignedTrustedBroadPlanPromoteReducedCount;
}
}
break;
case FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::LaunchRecovery:
++Weighting.LaunchCount;
@ -6788,6 +6899,15 @@ FHyperTwistCoachDashboardQueueRecoveryWeighting UHyperTwistCoachDashboardWidget:
++Weighting.ReliableTrustedTightPlanLaunchReducedCount;
}
}
if (Outcome.bUsedReliableAlignedTrustedTightStructurePlanRecovery)
{
++Weighting.ReliableAlignedTrustedTightPlanLaunchCount;
Weighting.bHasReliableAlignedTrustedPlanOutcomeSignal = true;
if (Outcome.bReducedFriction)
{
++Weighting.ReliableAlignedTrustedTightPlanLaunchReducedCount;
}
}
break;
default:
break;
@ -6846,6 +6966,16 @@ FHyperTwistCoachDashboardQueueRecoveryWeighting UHyperTwistCoachDashboardWidget:
CachedCoachPanelState.ReliableTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore;
Weighting.ReliableTrustedBroadPlanAverageOutcomeScore =
CachedCoachPanelState.ReliableTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore;
Weighting.ReliableAlignedTrustedTightPlanHistoryCount =
CachedCoachPanelState.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount;
Weighting.ReliableAlignedTrustedBroadPlanHistoryCount =
CachedCoachPanelState.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount;
Weighting.ReliableAlignedTrustedTightPlanAverageOutcomeScore =
CachedCoachPanelState
.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore;
Weighting.ReliableAlignedTrustedBroadPlanAverageOutcomeScore =
CachedCoachPanelState
.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore;
const bool bStrongMethodDrillRecoveryMemory =
Weighting.MethodDrillUpstreamHistoryCount >= 2
&& Weighting.MethodDrillUpstreamStrongCount >= Weighting.MethodDrillUpstreamWeakCount
@ -6873,6 +7003,30 @@ FHyperTwistCoachDashboardQueueRecoveryWeighting UHyperTwistCoachDashboardWidget:
);
Weighting.bHasMethodDrillMemorySignal = true;
}
const int32 ReliableAlignedTrustedTightPlanSignalScore =
(HyperTwistCoachDashboardWidgetInternal::IsReliableAlignedTrustedTightMethodDrillRecoveryPlanSourceLabel(
CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel)
|| (Weighting.ReliableAlignedTrustedTightPlanHistoryCount >= 2
&& Weighting.ReliableAlignedTrustedTightPlanAverageOutcomeScore >= 60.0f))
? FMath::Clamp(
Weighting.ReliableAlignedTrustedTightPlanHistoryCount
- Weighting.ReliableAlignedTrustedBroadPlanHistoryCount
+ (Weighting.ReliableAlignedTrustedTightPlanAverageOutcomeScore >= 80.0f ? 1 : 0),
1,
4)
: 0;
const int32 ReliableAlignedTrustedBroadPlanSignalScore =
(HyperTwistCoachDashboardWidgetInternal::IsReliableAlignedTrustedBroadMethodDrillRecoveryPlanSourceLabel(
CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel)
|| (Weighting.ReliableAlignedTrustedBroadPlanHistoryCount >= 2
&& Weighting.ReliableAlignedTrustedBroadPlanAverageOutcomeScore >= 60.0f))
? FMath::Clamp(
Weighting.ReliableAlignedTrustedBroadPlanHistoryCount
- Weighting.ReliableAlignedTrustedTightPlanHistoryCount
+ (Weighting.ReliableAlignedTrustedBroadPlanAverageOutcomeScore >= 80.0f ? 1 : 0),
1,
4)
: 0;
const int32 ReliableTrustedTightPlanSignalScore =
(HyperTwistCoachDashboardWidgetInternal::IsReliableTrustedTightMethodDrillRecoveryPlanSourceLabel(
CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel)
@ -6897,7 +7051,22 @@ FHyperTwistCoachDashboardQueueRecoveryWeighting UHyperTwistCoachDashboardWidget:
1,
3)
: 0;
if (ReliableTrustedTightPlanSignalScore > ReliableTrustedBroadPlanSignalScore)
if (ReliableAlignedTrustedTightPlanSignalScore > ReliableAlignedTrustedBroadPlanSignalScore)
{
Weighting.ReliableAlignedTrustedTightPlanBiasCount =
ReliableAlignedTrustedTightPlanSignalScore;
Weighting.MethodDrillLaunchBiasCount += ReliableAlignedTrustedTightPlanSignalScore;
Weighting.bHasReliableAlignedTrustedPlanSignal = true;
}
else if (ReliableAlignedTrustedBroadPlanSignalScore
> ReliableAlignedTrustedTightPlanSignalScore)
{
Weighting.ReliableAlignedTrustedBroadPlanBiasCount =
ReliableAlignedTrustedBroadPlanSignalScore;
Weighting.MethodDrillPromoteBiasCount += ReliableAlignedTrustedBroadPlanSignalScore;
Weighting.bHasReliableAlignedTrustedPlanSignal = true;
}
else if (ReliableTrustedTightPlanSignalScore > ReliableTrustedBroadPlanSignalScore)
{
Weighting.ReliableTrustedTightPlanBiasCount = ReliableTrustedTightPlanSignalScore;
Weighting.MethodDrillLaunchBiasCount += ReliableTrustedTightPlanSignalScore;
@ -7419,6 +7588,8 @@ void UHyperTwistCoachDashboardWidget::RecordQueueRecoveryOutcome(
const bool bUsedWeakRetainedMethodDrillRecoveryPosture,
const bool bUsedReliableTrustedTightStructurePlanRecovery,
const bool bUsedReliableTrustedBroadStructurePlanRecovery,
const bool bUsedReliableAlignedTrustedTightStructurePlanRecovery,
const bool bUsedReliableAlignedTrustedBroadStructurePlanRecovery,
const bool bSucceeded)
{
QueueRecoveryOutcome.RecordedAtUtc = FDateTime::UtcNow().ToIso8601();
@ -7467,6 +7638,10 @@ void UHyperTwistCoachDashboardWidget::RecordQueueRecoveryOutcome(
bUsedReliableTrustedTightStructurePlanRecovery;
QueueRecoveryOutcome.bUsedReliableTrustedBroadStructurePlanRecovery =
bUsedReliableTrustedBroadStructurePlanRecovery;
QueueRecoveryOutcome.bUsedReliableAlignedTrustedTightStructurePlanRecovery =
bUsedReliableAlignedTrustedTightStructurePlanRecovery;
QueueRecoveryOutcome.bUsedReliableAlignedTrustedBroadStructurePlanRecovery =
bUsedReliableAlignedTrustedBroadStructurePlanRecovery;
bHasQueueRecoveryOutcome = QueueRecoveryOutcome.IsStructurallyValid();
if (bHasQueueRecoveryOutcome)
{
@ -7496,7 +7671,9 @@ void UHyperTwistCoachDashboardWidget::RecordCoachHandoffHistorySnapshot(
const bool bUsedStrongRetainedMethodDrillRecoveryPosture,
const bool bUsedWeakRetainedMethodDrillRecoveryPosture,
const bool bUsedReliableTrustedTightStructurePlanHistory,
const bool bUsedReliableTrustedBroadStructurePlanHistory)
const bool bUsedReliableTrustedBroadStructurePlanHistory,
const bool bUsedReliableAlignedTrustedTightStructurePlanHistory,
const bool bUsedReliableAlignedTrustedBroadStructurePlanHistory)
{
FHyperTwistCoachDashboardHandoffHistoryEntry Entry;
Entry.RecordedAtUtc = FDateTime::UtcNow().ToIso8601();
@ -7543,6 +7720,10 @@ void UHyperTwistCoachDashboardWidget::RecordCoachHandoffHistorySnapshot(
bUsedReliableTrustedTightStructurePlanHistory;
Entry.bUsedReliableTrustedBroadStructurePlanHistory =
bUsedReliableTrustedBroadStructurePlanHistory;
Entry.bUsedReliableAlignedTrustedTightStructurePlanHistory =
bUsedReliableAlignedTrustedTightStructurePlanHistory;
Entry.bUsedReliableAlignedTrustedBroadStructurePlanHistory =
bUsedReliableAlignedTrustedBroadStructurePlanHistory;
if (!Entry.IsStructurallyValid())
{
return;
@ -7599,7 +7780,11 @@ void UHyperTwistCoachDashboardWidget::RecordCoachHandoffHistorySnapshot(
&& HandoffHistoryEntries.Last().bUsedReliableTrustedTightStructurePlanHistory
== Entry.bUsedReliableTrustedTightStructurePlanHistory
&& HandoffHistoryEntries.Last().bUsedReliableTrustedBroadStructurePlanHistory
== Entry.bUsedReliableTrustedBroadStructurePlanHistory;
== Entry.bUsedReliableTrustedBroadStructurePlanHistory
&& HandoffHistoryEntries.Last().bUsedReliableAlignedTrustedTightStructurePlanHistory
== Entry.bUsedReliableAlignedTrustedTightStructurePlanHistory
&& HandoffHistoryEntries.Last().bUsedReliableAlignedTrustedBroadStructurePlanHistory
== Entry.bUsedReliableAlignedTrustedBroadStructurePlanHistory;
if (bMatchesLastEntry)
{
return;
@ -7848,13 +8033,20 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel)
|| HyperTwistCoachDashboardWidgetInternal::IsReliableTrustedBroadMethodDrillRecoveryPlanSourceLabel(
CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel);
const bool bReliableAlignedTrustedPlanRecoverySourceActive =
HyperTwistCoachDashboardWidgetInternal::IsReliableAlignedTrustedTightMethodDrillRecoveryPlanSourceLabel(
CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel)
|| HyperTwistCoachDashboardWidgetInternal::IsReliableAlignedTrustedBroadMethodDrillRecoveryPlanSourceLabel(
CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel);
if (!bHasMethodDrillRecoveryHistory
&& !QueueRecoveryWeighting.bHasMethodDrillMemorySignal
&& !QueueRecoveryWeighting.bHasReliableTrustedPlanSignal
&& !QueueRecoveryWeighting.bHasReliableAlignedTrustedPlanSignal
&& !bUsedMethodDrillRecoveryMemoryForHandoff
&& !bDrillRecoverySourceActive
&& !bPacketStructureRecoverySourceActive
&& !bReliableTrustedPlanRecoverySourceActive
&& !bReliableAlignedTrustedPlanRecoverySourceActive
&& QueueRecoveryWeighting.NarrowMethodDrillPacketStructureLaunchCount <= 0
&& QueueRecoveryWeighting.BroadMethodDrillPacketStructurePromoteCount <= 0)
{
@ -7902,6 +8094,16 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
CachedCoachPanelState.ReliableTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore;
Entry.ReliableTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore =
CachedCoachPanelState.ReliableTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore;
Entry.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount =
CachedCoachPanelState.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount;
Entry.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount =
CachedCoachPanelState.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount;
Entry.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore =
CachedCoachPanelState
.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore;
Entry.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore =
CachedCoachPanelState
.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore;
Entry.bStrongPressureDominant =
Entry.MethodDrillRecoveryHistoryCount >= 2
&& Entry.StrongMethodDrillRecoveryHistoryCount
@ -7934,6 +8136,18 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
&& Entry.ReliableTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore >= 60.0f
&& Entry.ReliableTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount
>= Entry.ReliableTrustedTightMethodDrillRecoveryStructurePlanHistoryCount;
Entry.bReliableAlignedTrustedTightStructurePlanDominant =
Entry.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount >= 2
&& Entry.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore
>= 60.0f
&& Entry.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount
>= Entry.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount;
Entry.bReliableAlignedTrustedBroadStructurePlanDominant =
Entry.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount >= 2
&& Entry.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore
>= 60.0f
&& Entry.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount
>= Entry.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount;
Entry.bUsedMethodDrillRecoveryMemoryForRecovery =
QueueRecoveryWeighting.bHasMethodDrillMemorySignal;
Entry.bUsedMethodDrillRecoveryMemoryForHandoff =
@ -7958,6 +8172,8 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
const FString GuidanceSourceLabel = CachedCoachPanelState.PreferredGuidanceSourceLabel;
const auto ApplyGeneratedPlanSnapshot =
[&Entry](
const bool bUseReliableAlignedTrustedTightPlanSource,
const bool bUseReliableAlignedTrustedBroadPlanSource,
const bool bUseReliableTrustedTightPlanSource,
const bool bUseReliableTrustedBroadPlanSource,
const EHyperTwistTrainingDeliveryMode SuggestedMode,
@ -7989,6 +8205,16 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
&& HyperTwistCoachDashboardWidgetInternal::IsBroadCoachPlanPosture(
SuggestedMode,
SuggestedSelectionPolicy);
Entry.bGeneratedPlanUsedReliableAlignedTrustedTightStructureContinuationPosture =
bUseReliableAlignedTrustedTightPlanSource
&& HyperTwistCoachDashboardWidgetInternal::IsTightCoachPlanPosture(
SuggestedMode,
SuggestedSelectionPolicy);
Entry.bGeneratedPlanUsedReliableAlignedTrustedBroadStructureRedirectPosture =
bUseReliableAlignedTrustedBroadPlanSource
&& HyperTwistCoachDashboardWidgetInternal::IsBroadCoachPlanPosture(
SuggestedMode,
SuggestedSelectionPolicy);
};
const bool bStrongPacketPosture =
SourceUsesStrongRetainedMethodDrillRecoveryPosture(GuidanceSourceLabel)
@ -8014,11 +8240,21 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
GuidanceSourceLabel)
|| HyperTwistCoachDashboardWidgetInternal::IsReliableTrustedTightMethodDrillRecoveryPlanSourceLabel(
Entry.PreferredRecoveryActionSourceLabel);
const bool bReliableAlignedTrustedTightPlanSource =
HyperTwistCoachDashboardWidgetInternal::IsReliableAlignedTrustedTightMethodDrillRecoveryPlanSourceLabel(
GuidanceSourceLabel)
|| HyperTwistCoachDashboardWidgetInternal::IsReliableAlignedTrustedTightMethodDrillRecoveryPlanSourceLabel(
Entry.PreferredRecoveryActionSourceLabel);
const bool bReliableTrustedBroadPlanSource =
HyperTwistCoachDashboardWidgetInternal::IsReliableTrustedBroadMethodDrillRecoveryPlanSourceLabel(
GuidanceSourceLabel)
|| HyperTwistCoachDashboardWidgetInternal::IsReliableTrustedBroadMethodDrillRecoveryPlanSourceLabel(
Entry.PreferredRecoveryActionSourceLabel);
const bool bReliableAlignedTrustedBroadPlanSource =
HyperTwistCoachDashboardWidgetInternal::IsReliableAlignedTrustedBroadMethodDrillRecoveryPlanSourceLabel(
GuidanceSourceLabel)
|| HyperTwistCoachDashboardWidgetInternal::IsReliableAlignedTrustedBroadMethodDrillRecoveryPlanSourceLabel(
Entry.PreferredRecoveryActionSourceLabel);
Entry.bGeneratedPacketUsedStrongRetainedMethodDrillRecoveryPosture = bStrongPacketPosture;
Entry.bGeneratedPacketUsedWeakRetainedMethodDrillRecoveryPosture = bWeakPacketPosture;
Entry.bGeneratedPacketUsedGenericMethodDrillRecoveryMemory = bGenericRecoveryPacket;
@ -8036,6 +8272,8 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
: SelectedQueueEntry->Headline;
Entry.GeneratedGuidancePacketFocusCaseCount = SelectedQueueEntry->FocusCaseIds.Num();
ApplyGeneratedPlanSnapshot(
bReliableAlignedTrustedTightPlanSource,
bReliableAlignedTrustedBroadPlanSource,
bReliableTrustedTightPlanSource,
bReliableTrustedBroadPlanSource,
SelectedQueueEntry->SuggestedMode,
@ -8050,6 +8288,8 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
Entry.GeneratedGuidancePacketActionLabel = CachedCoachFollowUpBrief.PrimaryActionLabel;
Entry.GeneratedGuidancePacketFocusCaseCount = CachedCoachFollowUpBrief.FocusCaseIds.Num();
ApplyGeneratedPlanSnapshot(
bReliableAlignedTrustedTightPlanSource,
bReliableAlignedTrustedBroadPlanSource,
bReliableTrustedTightPlanSource,
bReliableTrustedBroadPlanSource,
CachedCoachFollowUpBrief.SuggestedMode,
@ -8063,6 +8303,8 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
Entry.GeneratedGuidancePacketActionLabel = CachedCoachBrief.PrimaryActionLabel;
Entry.GeneratedGuidancePacketFocusCaseCount = CachedCoachBrief.FocusCaseIds.Num();
ApplyGeneratedPlanSnapshot(
bReliableAlignedTrustedTightPlanSource,
bReliableAlignedTrustedBroadPlanSource,
bReliableTrustedTightPlanSource,
bReliableTrustedBroadPlanSource,
CachedCoachBrief.SuggestedMode,
@ -8080,6 +8322,8 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
Entry.GeneratedGuidancePacketActionLabel = CachedCoachFollowUpBrief.PrimaryActionLabel;
Entry.GeneratedGuidancePacketFocusCaseCount = CachedCoachFollowUpBrief.FocusCaseIds.Num();
ApplyGeneratedPlanSnapshot(
bReliableAlignedTrustedTightPlanSource,
bReliableAlignedTrustedBroadPlanSource,
bReliableTrustedTightPlanSource,
bReliableTrustedBroadPlanSource,
CachedCoachFollowUpBrief.SuggestedMode,
@ -8097,6 +8341,8 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
: SelectedQueueEntry->Headline;
Entry.GeneratedGuidancePacketFocusCaseCount = SelectedQueueEntry->FocusCaseIds.Num();
ApplyGeneratedPlanSnapshot(
bReliableAlignedTrustedTightPlanSource,
bReliableAlignedTrustedBroadPlanSource,
bReliableTrustedTightPlanSource,
bReliableTrustedBroadPlanSource,
SelectedQueueEntry->SuggestedMode,
@ -8112,6 +8358,8 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
Entry.GeneratedGuidancePacketActionLabel = CachedCoachBrief.PrimaryActionLabel;
Entry.GeneratedGuidancePacketFocusCaseCount = CachedCoachBrief.FocusCaseIds.Num();
ApplyGeneratedPlanSnapshot(
bReliableAlignedTrustedTightPlanSource,
bReliableAlignedTrustedBroadPlanSource,
bReliableTrustedTightPlanSource,
bReliableTrustedBroadPlanSource,
CachedCoachBrief.SuggestedMode,
@ -8156,6 +8404,10 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
== Entry.ReliableTrustedTightMethodDrillRecoveryStructurePlanHistoryCount
&& MethodDrillRecoveryMemoryHistoryEntries.Last().ReliableTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount
== Entry.ReliableTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount
&& MethodDrillRecoveryMemoryHistoryEntries.Last().ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount
== Entry.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount
&& MethodDrillRecoveryMemoryHistoryEntries.Last().ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount
== Entry.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount
&& FMath::IsNearlyEqual(
MethodDrillRecoveryMemoryHistoryEntries.Last().MethodDrillRecoveryAverageOutcomeScore,
Entry.MethodDrillRecoveryAverageOutcomeScore)
@ -8171,6 +8423,12 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
&& FMath::IsNearlyEqual(
MethodDrillRecoveryMemoryHistoryEntries.Last().ReliableTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore,
Entry.ReliableTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore)
&& FMath::IsNearlyEqual(
MethodDrillRecoveryMemoryHistoryEntries.Last().ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore,
Entry.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore)
&& FMath::IsNearlyEqual(
MethodDrillRecoveryMemoryHistoryEntries.Last().ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore,
Entry.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore)
&& MethodDrillRecoveryMemoryHistoryEntries.Last().bStrongPressureDominant
== Entry.bStrongPressureDominant
&& MethodDrillRecoveryMemoryHistoryEntries.Last().bWeakPressureDominant
@ -8183,6 +8441,10 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
== Entry.bReliableTrustedTightStructurePlanDominant
&& MethodDrillRecoveryMemoryHistoryEntries.Last().bReliableTrustedBroadStructurePlanDominant
== Entry.bReliableTrustedBroadStructurePlanDominant
&& MethodDrillRecoveryMemoryHistoryEntries.Last().bReliableAlignedTrustedTightStructurePlanDominant
== Entry.bReliableAlignedTrustedTightStructurePlanDominant
&& MethodDrillRecoveryMemoryHistoryEntries.Last().bReliableAlignedTrustedBroadStructurePlanDominant
== Entry.bReliableAlignedTrustedBroadStructurePlanDominant
&& MethodDrillRecoveryMemoryHistoryEntries.Last().GeneratedGuidancePacketKindLabel
== Entry.GeneratedGuidancePacketKindLabel
&& MethodDrillRecoveryMemoryHistoryEntries.Last().GeneratedGuidancePacketSourceLabel
@ -8213,6 +8475,10 @@ void UHyperTwistCoachDashboardWidget::RecordMethodDrillRecoveryMemoryHistorySnap
== Entry.bGeneratedPlanUsedReliableTrustedTightStructureContinuationPosture
&& MethodDrillRecoveryMemoryHistoryEntries.Last().bGeneratedPlanUsedReliableTrustedBroadStructureRedirectPosture
== Entry.bGeneratedPlanUsedReliableTrustedBroadStructureRedirectPosture
&& MethodDrillRecoveryMemoryHistoryEntries.Last().bGeneratedPlanUsedReliableAlignedTrustedTightStructureContinuationPosture
== Entry.bGeneratedPlanUsedReliableAlignedTrustedTightStructureContinuationPosture
&& MethodDrillRecoveryMemoryHistoryEntries.Last().bGeneratedPlanUsedReliableAlignedTrustedBroadStructureRedirectPosture
== Entry.bGeneratedPlanUsedReliableAlignedTrustedBroadStructureRedirectPosture
&& MethodDrillRecoveryMemoryHistoryEntries.Last().bUsedMethodDrillRecoveryMemoryForRecovery
== Entry.bUsedMethodDrillRecoveryMemoryForRecovery
&& MethodDrillRecoveryMemoryHistoryEntries.Last().bUsedMethodDrillRecoveryMemoryForHandoff
@ -9851,6 +10117,15 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
CachedCoachPanelState.ReliableTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore,
CachedCoachPanelState.ReliableTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore
);
CoachHandoffRecommendationDetailLine += FString::Printf(
TEXT(" | aligned reliable plan history tight/broad %d/%d avg %.1f/%.1f"),
CachedCoachPanelState.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount,
CachedCoachPanelState.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount,
CachedCoachPanelState
.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore,
CachedCoachPanelState
.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore
);
CoachHandoffRecommendationDetailLine += FString::Printf(
TEXT(" | reliable trusted tight accepted q/f/r %d/%d/%d, broad accepted q/f/r %d/%d/%d"),
HandoffHistoryBias.ReliableTrustedTightQueueAcceptedDeltaCount,
@ -9918,6 +10193,14 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
bHandoffRecommendationUsedPlanComparisonHistory
&& bPlanComparisonPrefersBroadRedirect
&& bHasReliableTrustedBroadPlanComparisonHistory;
const bool bHandoffRecommendationUsedReliableAlignedTrustedTightPlanHistory =
bHandoffRecommendationUsedPlanComparisonHistory
&& bPlanComparisonPrefersTightContinuation
&& MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedTightPlanSourceCount > 0;
const bool bHandoffRecommendationUsedReliableAlignedTrustedBroadPlanHistory =
bHandoffRecommendationUsedPlanComparisonHistory
&& bPlanComparisonPrefersBroadRedirect
&& MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedBroadPlanSourceCount > 0;
RecordCoachHandoffHistorySnapshot(
HyperTwistCoachDashboardWidgetInternal::DescribeHandoffRecommendationKind(
HandoffRecommendationKind),
@ -9934,7 +10217,9 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
bHandoffRecommendationUsedStrongRetainedMethodDrillRecoveryPosture,
bHandoffRecommendationUsedWeakRetainedMethodDrillRecoveryPosture,
bHandoffRecommendationUsedReliableTrustedTightPlanHistory,
bHandoffRecommendationUsedReliableTrustedBroadPlanHistory
bHandoffRecommendationUsedReliableTrustedBroadPlanHistory,
bHandoffRecommendationUsedReliableAlignedTrustedTightPlanHistory,
bHandoffRecommendationUsedReliableAlignedTrustedBroadPlanHistory
);
FString QueuedRunLabel = CachedCoachPanelState.NextQueueSourceLabel.IsEmpty()
? TEXT("Start Queue")
@ -9977,11 +10262,15 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
*HyperTwistCoachDashboardWidgetInternal::DescribeRetainedMethodDrillRecoveryPosture(
SelectedHandoffHistoryEntry->bUsedStrongRetainedMethodDrillRecoveryPosture,
SelectedHandoffHistoryEntry->bUsedWeakRetainedMethodDrillRecoveryPosture),
SelectedHandoffHistoryEntry->bUsedReliableTrustedTightStructurePlanHistory
? TEXT("trusted tight continuation")
: (SelectedHandoffHistoryEntry->bUsedReliableTrustedBroadStructurePlanHistory
? TEXT("trusted broad redirect")
: TEXT("none")),
SelectedHandoffHistoryEntry->bUsedReliableAlignedTrustedTightStructurePlanHistory
? TEXT("aligned trusted tight continuation")
: (SelectedHandoffHistoryEntry->bUsedReliableAlignedTrustedBroadStructurePlanHistory
? TEXT("aligned trusted broad redirect")
: (SelectedHandoffHistoryEntry->bUsedReliableTrustedTightStructurePlanHistory
? TEXT("trusted tight continuation")
: (SelectedHandoffHistoryEntry->bUsedReliableTrustedBroadStructurePlanHistory
? TEXT("trusted broad redirect")
: TEXT("none")))),
*SelectedHandoffHistoryEntry->RecordedAtUtc
)
: TEXT("Handoff history: no retained handoff-pattern shifts recorded yet.");
@ -10003,11 +10292,15 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
*HyperTwistCoachDashboardWidgetInternal::DescribeRetainedMethodDrillRecoveryPosture(
SelectedHandoffHistoryEntry->bUsedStrongRetainedMethodDrillRecoveryPosture,
SelectedHandoffHistoryEntry->bUsedWeakRetainedMethodDrillRecoveryPosture),
SelectedHandoffHistoryEntry->bUsedReliableTrustedTightStructurePlanHistory
? TEXT("trusted tight continuation")
: (SelectedHandoffHistoryEntry->bUsedReliableTrustedBroadStructurePlanHistory
? TEXT("trusted broad redirect")
: TEXT("none")),
SelectedHandoffHistoryEntry->bUsedReliableAlignedTrustedTightStructurePlanHistory
? TEXT("aligned trusted tight continuation")
: (SelectedHandoffHistoryEntry->bUsedReliableAlignedTrustedBroadStructurePlanHistory
? TEXT("aligned trusted broad redirect")
: (SelectedHandoffHistoryEntry->bUsedReliableTrustedTightStructurePlanHistory
? TEXT("trusted tight continuation")
: (SelectedHandoffHistoryEntry->bUsedReliableTrustedBroadStructurePlanHistory
? TEXT("trusted broad redirect")
: TEXT("none")))),
SelectedHandoffHistoryEntry->QueueSourceLabel.IsEmpty()
? TEXT("n/a")
: *SelectedHandoffHistoryEntry->QueueSourceLabel,
@ -10234,42 +10527,73 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
: (bUpstreamPrefersLaunchRecovery
? TEXT("prefer launch-recovery")
: TEXT("no upstream preference"));
const FString QueueRecoveryMethodDrillStatus =
MethodDrillRecoveryPacketQueueBias.bHasSignal
? (MethodDrillRecoveryPacketQueueBias.LaunchRecoveryBias
const FString QueueRecoveryMethodDrillStatus = [&]() -> FString
{
if (MethodDrillRecoveryPacketQueueBias.bHasSignal)
{
return MethodDrillRecoveryPacketQueueBias.LaunchRecoveryBias
>= MethodDrillRecoveryPacketQueueBias.PromoteRecoveryBias
? TEXT(" | Retained drill-recovery packet history is reinforcing launch recovery.")
: TEXT(" | Retained drill-recovery packet history is reinforcing promote-deferred recovery."))
: (QueueRecoveryWeighting.bHasReliableTrustedPlanOutcomeSignal
? (QueueRecoveryWeighting.PreferredActionKind
: TEXT(" | Retained drill-recovery packet history is reinforcing promote-deferred recovery.");
}
if (QueueRecoveryWeighting.bHasReliableAlignedTrustedPlanOutcomeSignal)
{
return QueueRecoveryWeighting.PreferredActionKind
== FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::LaunchRecovery
? TEXT(" | Prior reliable trusted tight plan recovery outcomes are reinforcing launch recovery.")
: TEXT(" | Prior reliable trusted broad plan recovery outcomes are reinforcing promote-deferred recovery."))
: (bQueueRecoveryUsedPlanComparisonHistory
? (QueueRecoveryWeighting.PreferredActionKind
? TEXT(" | Prior aligned reliable trusted tight plan recovery outcomes are reinforcing launch recovery.")
: TEXT(" | Prior aligned reliable trusted broad plan recovery outcomes are reinforcing promote-deferred recovery.");
}
if (QueueRecoveryWeighting.bHasReliableTrustedPlanOutcomeSignal)
{
return QueueRecoveryWeighting.PreferredActionKind
== FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::LaunchRecovery
? (bHasReliableTrustedPlanComparisonHistory
? TEXT(" | Reliable retained plan-alignment history is reinforcing trusted tight continuation recovery.")
: TEXT(" | Retained plan-alignment history is reinforcing trusted tight continuation recovery."))
: (bHasReliableTrustedPlanComparisonHistory
? TEXT(" | Reliable retained plan-alignment history is reinforcing trusted broad redirect recovery.")
: TEXT(" | Retained plan-alignment history is reinforcing trusted broad redirect recovery.")))
: (QueueRecoveryWeighting.bHasMethodDrillMemorySignal
? (QueueRecoveryWeighting.PreferredActionKind
== FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::LaunchRecovery
? TEXT(" | Upstream drill-driven recovery memory is reinforcing launch recovery.")
: TEXT(" | Upstream drill-driven recovery memory is reinforcing promote-deferred recovery."))
: (QueueRecoveryWeighting.bHasMethodDrillOutcomeSignal
? (QueueRecoveryWeighting.PreferredActionKind
== FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::LaunchRecovery
? TEXT(" | Prior drill-weighted recovery outcomes are reinforcing launch recovery.")
: TEXT(" | Prior drill-weighted recovery outcomes are reinforcing promote-deferred recovery."))
: (QueueRecoveryWeighting.bHasMethodDrillSignal
? (QueueRecoveryWeighting.PreferredActionKind
== FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::LaunchRecovery
? TEXT(" | Drill-driven accepted handoff history is reinforcing launch recovery.")
: TEXT(" | Drill-driven accepted handoff history is present, but promote-deferred recovery still holds."))
: TEXT(""))))));
? TEXT(" | Prior reliable trusted tight plan recovery outcomes are reinforcing launch recovery.")
: TEXT(" | Prior reliable trusted broad plan recovery outcomes are reinforcing promote-deferred recovery.");
}
if (bQueueRecoveryUsedPlanComparisonHistory)
{
if (QueueRecoveryWeighting.PreferredActionKind
== FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::LaunchRecovery)
{
if (MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedTightPlanSourceCount > 0)
{
return TEXT(" | Aligned reliable retained plan-alignment history is reinforcing trusted tight continuation recovery.");
}
return bHasReliableTrustedPlanComparisonHistory
? TEXT(" | Reliable retained plan-alignment history is reinforcing trusted tight continuation recovery.")
: TEXT(" | Retained plan-alignment history is reinforcing trusted tight continuation recovery.");
}
if (MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedBroadPlanSourceCount > 0)
{
return TEXT(" | Aligned reliable retained plan-alignment history is reinforcing trusted broad redirect recovery.");
}
return bHasReliableTrustedPlanComparisonHistory
? TEXT(" | Reliable retained plan-alignment history is reinforcing trusted broad redirect recovery.")
: TEXT(" | Retained plan-alignment history is reinforcing trusted broad redirect recovery.");
}
if (QueueRecoveryWeighting.bHasMethodDrillMemorySignal)
{
return QueueRecoveryWeighting.PreferredActionKind
== FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::LaunchRecovery
? TEXT(" | Upstream drill-driven recovery memory is reinforcing launch recovery.")
: TEXT(" | Upstream drill-driven recovery memory is reinforcing promote-deferred recovery.");
}
if (QueueRecoveryWeighting.bHasMethodDrillOutcomeSignal)
{
return QueueRecoveryWeighting.PreferredActionKind
== FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::LaunchRecovery
? TEXT(" | Prior drill-weighted recovery outcomes are reinforcing launch recovery.")
: TEXT(" | Prior drill-weighted recovery outcomes are reinforcing promote-deferred recovery.");
}
if (QueueRecoveryWeighting.bHasMethodDrillSignal)
{
return QueueRecoveryWeighting.PreferredActionKind
== FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::LaunchRecovery
? TEXT(" | Drill-driven accepted handoff history is reinforcing launch recovery.")
: TEXT(" | Drill-driven accepted handoff history is present, but promote-deferred recovery still holds.");
}
return TEXT("");
}();
const bool bHasQueueRecoveryFriction =
CachedCoachSchedulePolicySummary.bHasBlockedFollowUpDeferrals
|| CachedCoachSchedulePolicySummary.bHasArchiveAwareDeferrals
@ -10328,7 +10652,7 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
: *QueueDeferredFirstSuppressionSignal->Detail)
: TEXT("");
FString QueueRecoveryDetailLine = FString::Printf(
TEXT("Deferred events %d | Promoted %d | Manual %d | Pressure %.2f | Dominant reason: %s | Follow-up deferrals: %s | Archive-aware deferrals: %s | Completion gap: %s | Upstream action source: %s%s || Learned promote %d/%d reduced, %d failed, avg delta %.2f | launch %d/%d reduced, %d failed, avg delta %.2f | deferred-first promote/launch reduced %d/%d over %d/%d | drill-driven outcome promote/launch reduced %d/%d over %d/%d | reliable trusted outcome promote/launch reduced %d/%d over %d/%d | retained strong-launch %d/%d, weak-promote %d/%d | drill-driven bias promote/launch %d/%d | reliable trusted plan bias promote/launch %d/%d | packet history queue/follow-up/recommended %d/%d/%d | packet-plan posture tight/broad %d/%d | plan-source tight aligned/diverged %d/%d | broad aligned/diverged %d/%d | reliable trusted tight aligned/diverged %d/%d | reliable trusted broad aligned/diverged %d/%d | plan preferred: %s | packet bias promote/launch %d/%d | upstream drill recovery strong/weak/history %d/%d/%d avg %.1f | reliable trusted plan history tight/broad %d/%d avg %.1f/%.1f | retained drill-recovery stance: %s"),
TEXT("Deferred events %d | Promoted %d | Manual %d | Pressure %.2f | Dominant reason: %s | Follow-up deferrals: %s | Archive-aware deferrals: %s | Completion gap: %s | Upstream action source: %s%s || Learned promote %d/%d reduced, %d failed, avg delta %.2f | launch %d/%d reduced, %d failed, avg delta %.2f | deferred-first promote/launch reduced %d/%d over %d/%d | drill-driven outcome promote/launch reduced %d/%d over %d/%d | aligned reliable outcome promote/launch reduced %d/%d over %d/%d | reliable trusted outcome promote/launch reduced %d/%d over %d/%d | retained strong-launch %d/%d, weak-promote %d/%d | drill-driven bias promote/launch %d/%d | aligned reliable plan bias promote/launch %d/%d | reliable trusted plan bias promote/launch %d/%d | packet history queue/follow-up/recommended %d/%d/%d | packet-plan posture tight/broad %d/%d | plan-source tight aligned/diverged %d/%d | broad aligned/diverged %d/%d | aligned reliable tight aligned/diverged %d/%d | aligned reliable broad aligned/diverged %d/%d | reliable trusted tight aligned/diverged %d/%d | reliable trusted broad aligned/diverged %d/%d | plan preferred: %s | packet bias promote/launch %d/%d | upstream drill recovery strong/weak/history %d/%d/%d avg %.1f | aligned reliable plan history tight/broad %d/%d avg %.1f/%.1f | reliable trusted plan history tight/broad %d/%d avg %.1f/%.1f | retained drill-recovery stance: %s"),
CachedCoachQueueExecutionSummary.DeferredEventCount,
CachedCoachQueueExecutionSummary.PromotedEventCount,
CachedCoachQueueExecutionSummary.ManualRescheduleEventCount,
@ -10357,6 +10681,10 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
QueueRecoveryWeighting.MethodDrillLaunchReducedCount,
QueueRecoveryWeighting.MethodDrillPromoteCount,
QueueRecoveryWeighting.MethodDrillLaunchCount,
QueueRecoveryWeighting.ReliableAlignedTrustedBroadPlanPromoteReducedCount,
QueueRecoveryWeighting.ReliableAlignedTrustedTightPlanLaunchReducedCount,
QueueRecoveryWeighting.ReliableAlignedTrustedBroadPlanPromoteCount,
QueueRecoveryWeighting.ReliableAlignedTrustedTightPlanLaunchCount,
QueueRecoveryWeighting.ReliableTrustedBroadPlanPromoteReducedCount,
QueueRecoveryWeighting.ReliableTrustedTightPlanLaunchReducedCount,
QueueRecoveryWeighting.ReliableTrustedBroadPlanPromoteCount,
@ -10367,6 +10695,8 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
QueueRecoveryWeighting.WeakRetainedMethodDrillPromoteCount,
QueueRecoveryWeighting.MethodDrillPromoteBiasCount,
QueueRecoveryWeighting.MethodDrillLaunchBiasCount,
QueueRecoveryWeighting.ReliableAlignedTrustedBroadPlanBiasCount,
QueueRecoveryWeighting.ReliableAlignedTrustedTightPlanBiasCount,
QueueRecoveryWeighting.ReliableTrustedBroadPlanBiasCount,
QueueRecoveryWeighting.ReliableTrustedTightPlanBiasCount,
MethodDrillRecoveryPacketQueueBias.QueueEntryHistoryCount,
@ -10378,6 +10708,10 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
MethodDrillRecoveryPlanComparisonSummary.TightPlanDivergedCount,
MethodDrillRecoveryPlanComparisonSummary.BroadPlanAlignedCount,
MethodDrillRecoveryPlanComparisonSummary.BroadPlanDivergedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedTightPlanAlignedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedTightPlanDivergedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedBroadPlanAlignedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedBroadPlanDivergedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableTrustedTightPlanAlignedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableTrustedTightPlanDivergedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableTrustedBroadPlanAlignedCount,
@ -10390,6 +10724,10 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
QueueRecoveryWeighting.MethodDrillUpstreamWeakCount,
QueueRecoveryWeighting.MethodDrillUpstreamHistoryCount,
QueueRecoveryWeighting.MethodDrillUpstreamAverageOutcomeScore,
QueueRecoveryWeighting.ReliableAlignedTrustedTightPlanHistoryCount,
QueueRecoveryWeighting.ReliableAlignedTrustedBroadPlanHistoryCount,
QueueRecoveryWeighting.ReliableAlignedTrustedTightPlanAverageOutcomeScore,
QueueRecoveryWeighting.ReliableAlignedTrustedBroadPlanAverageOutcomeScore,
QueueRecoveryWeighting.ReliableTrustedTightPlanHistoryCount,
QueueRecoveryWeighting.ReliableTrustedBroadPlanHistoryCount,
QueueRecoveryWeighting.ReliableTrustedTightPlanAverageOutcomeScore,
@ -10539,11 +10877,15 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
*HyperTwistCoachDashboardWidgetInternal::DescribeRetainedMethodDrillRecoveryPosture(
QueueRecoveryOutcome.bUsedStrongRetainedMethodDrillRecoveryPosture,
QueueRecoveryOutcome.bUsedWeakRetainedMethodDrillRecoveryPosture),
QueueRecoveryOutcome.bUsedReliableTrustedTightStructurePlanRecovery
? TEXT("trusted tight continuation")
: (QueueRecoveryOutcome.bUsedReliableTrustedBroadStructurePlanRecovery
? TEXT("trusted broad redirect")
: TEXT("none"))
QueueRecoveryOutcome.bUsedReliableAlignedTrustedTightStructurePlanRecovery
? TEXT("aligned reliable tight continuation")
: (QueueRecoveryOutcome.bUsedReliableAlignedTrustedBroadStructurePlanRecovery
? TEXT("aligned reliable broad redirect")
: (QueueRecoveryOutcome.bUsedReliableTrustedTightStructurePlanRecovery
? TEXT("trusted tight continuation")
: (QueueRecoveryOutcome.bUsedReliableTrustedBroadStructurePlanRecovery
? TEXT("trusted broad redirect")
: TEXT("none"))))
);
TArray<int32> MethodDrillRecoveryHistoryIndices;
HyperTwistCoachDashboardWidgetInternal::CollectMethodDrillRecoveryOutcomeIndices(
@ -10716,14 +11058,30 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
: (SelectedMethodDrillRecoveryMemoryHistoryEntry->bGeneratedPacketUsedGenericMethodDrillRecoveryMemory
? TEXT("generic drill-recovery memory")
: TEXT("none"))));
const FString MethodDrillRecoveryMemoryReliablePlanLine =
SelectedMethodDrillRecoveryMemoryHistoryEntry == nullptr
? TEXT("n/a")
: (SelectedMethodDrillRecoveryMemoryHistoryEntry->bReliableTrustedTightStructurePlanDominant
? TEXT("reliable trusted tight continuation")
: (SelectedMethodDrillRecoveryMemoryHistoryEntry->bReliableTrustedBroadStructurePlanDominant
? TEXT("reliable trusted broad redirect")
: TEXT("none")));
const FString MethodDrillRecoveryMemoryReliablePlanLine = [&]() -> FString
{
if (SelectedMethodDrillRecoveryMemoryHistoryEntry == nullptr)
{
return TEXT("n/a");
}
if (SelectedMethodDrillRecoveryMemoryHistoryEntry->bReliableAlignedTrustedTightStructurePlanDominant)
{
return TEXT("aligned reliable trusted tight continuation");
}
if (SelectedMethodDrillRecoveryMemoryHistoryEntry->bReliableAlignedTrustedBroadStructurePlanDominant)
{
return TEXT("aligned reliable trusted broad redirect");
}
if (SelectedMethodDrillRecoveryMemoryHistoryEntry->bReliableTrustedTightStructurePlanDominant)
{
return TEXT("reliable trusted tight continuation");
}
if (SelectedMethodDrillRecoveryMemoryHistoryEntry->bReliableTrustedBroadStructurePlanDominant)
{
return TEXT("reliable trusted broad redirect");
}
return TEXT("none");
}();
const FString MethodDrillRecoveryMemoryHistoryStatusLine =
SelectedMethodDrillRecoveryMemoryHistoryEntry != nullptr
&& SelectedMethodDrillRecoveryMemoryHistoryEntry->IsStructurallyValid()
@ -10747,7 +11105,7 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
SelectedMethodDrillRecoveryMemoryHistoryEntry != nullptr
&& SelectedMethodDrillRecoveryMemoryHistoryEntry->IsStructurallyValid()
? FString::Printf(
TEXT("Source: %s | Strong/weak/history %d/%d/%d avg %.1f | Structure recovery narrow %d/%d broad %d/%d | Trusted plan history tight/broad %d/%d avg %.1f/%.1f | Reliable trusted plan history tight/broad %d/%d avg %.1f/%.1f | Dominant pressure: %s | Structure bias: %s | Reliable stance: %s | Stance: %s | Recovery memory tipped: %s | Handoff memory tipped: %s | Packet kind: %s | Packet source: %s | Packet headline: %s | Packet action: %s | Packet focus %d | Plan mode: %s | Plan selection: %s | Plan posture: %s | Plan source: %s | Plan alignment: %s | Plan comparison tight aligned/diverged %d/%d broad aligned/diverged %d/%d reliable tight aligned/diverged %d/%d reliable broad aligned/diverged %d/%d | Plan preferred: %s | Tight/broad structure plan: %s/%s | Packet stance: %s | Recovery posture: %s | Handoff posture: %s"),
TEXT("Source: %s | Strong/weak/history %d/%d/%d avg %.1f | Structure recovery narrow %d/%d broad %d/%d | Trusted plan history tight/broad %d/%d avg %.1f/%.1f | Aligned reliable plan history tight/broad %d/%d avg %.1f/%.1f | Reliable trusted plan history tight/broad %d/%d avg %.1f/%.1f | Dominant pressure: %s | Structure bias: %s | Reliable stance: %s | Stance: %s | Recovery memory tipped: %s | Handoff memory tipped: %s | Packet kind: %s | Packet source: %s | Packet headline: %s | Packet action: %s | Packet focus %d | Plan mode: %s | Plan selection: %s | Plan posture: %s | Plan source: %s | Plan alignment: %s | Plan comparison tight aligned/diverged %d/%d broad aligned/diverged %d/%d aligned reliable tight aligned/diverged %d/%d aligned reliable broad aligned/diverged %d/%d reliable tight aligned/diverged %d/%d reliable broad aligned/diverged %d/%d | Plan preferred: %s | Tight/broad structure plan: %s/%s | Packet stance: %s | Recovery posture: %s | Handoff posture: %s"),
*MethodDrillRecoveryMemorySourceLine,
SelectedMethodDrillRecoveryMemoryHistoryEntry->StrongMethodDrillRecoveryHistoryCount,
SelectedMethodDrillRecoveryMemoryHistoryEntry->WeakMethodDrillRecoveryHistoryCount,
@ -10769,6 +11127,14 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
->TrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore,
SelectedMethodDrillRecoveryMemoryHistoryEntry
->TrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore,
SelectedMethodDrillRecoveryMemoryHistoryEntry
->ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount,
SelectedMethodDrillRecoveryMemoryHistoryEntry
->ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount,
SelectedMethodDrillRecoveryMemoryHistoryEntry
->ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore,
SelectedMethodDrillRecoveryMemoryHistoryEntry
->ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore,
SelectedMethodDrillRecoveryMemoryHistoryEntry
->ReliableTrustedTightMethodDrillRecoveryStructurePlanHistoryCount,
SelectedMethodDrillRecoveryMemoryHistoryEntry
@ -10807,6 +11173,10 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
MethodDrillRecoveryPlanComparisonSummary.TightPlanDivergedCount,
MethodDrillRecoveryPlanComparisonSummary.BroadPlanAlignedCount,
MethodDrillRecoveryPlanComparisonSummary.BroadPlanDivergedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedTightPlanAlignedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedTightPlanDivergedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedBroadPlanAlignedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableAlignedTrustedBroadPlanDivergedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableTrustedTightPlanAlignedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableTrustedTightPlanDivergedCount,
MethodDrillRecoveryPlanComparisonSummary.ReliableTrustedBroadPlanAlignedCount,

View file

@ -1297,6 +1297,43 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
* 100.0f)
/ static_cast<float>(ReliableTrustedBroadMethodDrillRecoveryStructurePlanEventCount);
}
if ((ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanStartedCount
+ ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanPromotedCount)
> 0)
{
const int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanEventCount =
ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanStartedCount
+ ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanPromotedCount;
Snapshot.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount +=
ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanEventCount;
Snapshot.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore =
(static_cast<float>(
ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanCompletedCount)
* 100.0f)
/ static_cast<float>(ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanEventCount);
}
if ((ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanStartedCount
+ ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount)
> 0)
{
const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanEventCount =
ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanStartedCount
+ ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount;
const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanRedirectCount =
FMath::Max(
0,
ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount
+ ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount
- ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount
);
Snapshot.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount +=
ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanEventCount;
Snapshot.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore =
(static_cast<float>(
ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanRedirectCount)
* 100.0f)
/ static_cast<float>(ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanEventCount);
}
const bool bStrongMethodDrillRecoveryHistory =
MethodDrillRecoveryStartedCount >= 2
&& MethodDrillRecoveryCompletedCount >= MethodDrillRecoveryOutstandingCount
@ -8270,6 +8307,45 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
* 100.0f)
/ static_cast<float>(ReliableTrustedBroadMethodDrillRecoveryStructurePlanEventCount);
}
if ((ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanStartedCount
+ ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanPromotedCount)
> 0)
{
const int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanEventCount =
ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanStartedCount
+ ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanPromotedCount;
Snapshot.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount +=
ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanEventCount;
Snapshot.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore =
(static_cast<float>(
ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanCompletedCount)
* 100.0f)
/ static_cast<float>(
ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanEventCount);
}
if ((ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanStartedCount
+ ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount)
> 0)
{
const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanEventCount =
ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanStartedCount
+ ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount;
const int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanRedirectCount =
FMath::Max(
0,
ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanPromotedCount
+ ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutstandingCount
- ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanCompletedCount
);
Snapshot.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount +=
ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanEventCount;
Snapshot.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore =
(static_cast<float>(
ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanRedirectCount)
* 100.0f)
/ static_cast<float>(
ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanEventCount);
}
const bool bStrongMethodDrillRecoveryHistory =
MethodDrillRecoveryStartedCount >= 2
&& MethodDrillRecoveryCompletedCount >= MethodDrillRecoveryOutstandingCount

View file

@ -155,6 +155,8 @@ struct FHyperTwistCoachDashboardQueueRecoveryOutcome
bool bUsedWeakRetainedMethodDrillRecoveryPosture = false;
bool bUsedReliableTrustedTightStructurePlanRecovery = false;
bool bUsedReliableTrustedBroadStructurePlanRecovery = false;
bool bUsedReliableAlignedTrustedTightStructurePlanRecovery = false;
bool bUsedReliableAlignedTrustedBroadStructurePlanRecovery = false;
bool IsStructurallyValid() const
{
@ -201,11 +203,21 @@ struct FHyperTwistCoachDashboardQueueRecoveryWeighting
int32 ReliableTrustedBroadPlanPromoteReducedCount = 0;
int32 ReliableTrustedTightPlanBiasCount = 0;
int32 ReliableTrustedBroadPlanBiasCount = 0;
int32 ReliableAlignedTrustedTightPlanHistoryCount = 0;
int32 ReliableAlignedTrustedBroadPlanHistoryCount = 0;
int32 ReliableAlignedTrustedTightPlanLaunchCount = 0;
int32 ReliableAlignedTrustedTightPlanLaunchReducedCount = 0;
int32 ReliableAlignedTrustedBroadPlanPromoteCount = 0;
int32 ReliableAlignedTrustedBroadPlanPromoteReducedCount = 0;
int32 ReliableAlignedTrustedTightPlanBiasCount = 0;
int32 ReliableAlignedTrustedBroadPlanBiasCount = 0;
float PromoteAveragePressureDelta = 0.0f;
float LaunchAveragePressureDelta = 0.0f;
float MethodDrillUpstreamAverageOutcomeScore = 0.0f;
float ReliableTrustedTightPlanAverageOutcomeScore = 0.0f;
float ReliableTrustedBroadPlanAverageOutcomeScore = 0.0f;
float ReliableAlignedTrustedTightPlanAverageOutcomeScore = 0.0f;
float ReliableAlignedTrustedBroadPlanAverageOutcomeScore = 0.0f;
FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind PreferredActionKind =
FHyperTwistCoachDashboardQueueRecoveryOutcome::EActionKind::None;
bool bHasSignal = false;
@ -215,6 +227,8 @@ struct FHyperTwistCoachDashboardQueueRecoveryWeighting
bool bHasMethodDrillMemorySignal = false;
bool bHasReliableTrustedPlanSignal = false;
bool bHasReliableTrustedPlanOutcomeSignal = false;
bool bHasReliableAlignedTrustedPlanSignal = false;
bool bHasReliableAlignedTrustedPlanOutcomeSignal = false;
bool IsStructurallyValid() const
{
@ -308,6 +322,8 @@ struct FHyperTwistCoachDashboardHandoffHistoryEntry
bool bUsedWeakRetainedMethodDrillRecoveryPosture = false;
bool bUsedReliableTrustedTightStructurePlanHistory = false;
bool bUsedReliableTrustedBroadStructurePlanHistory = false;
bool bUsedReliableAlignedTrustedTightStructurePlanHistory = false;
bool bUsedReliableAlignedTrustedBroadStructurePlanHistory = false;
bool IsStructurallyValid() const
{
@ -389,6 +405,10 @@ struct FHyperTwistCoachDashboardMethodDrillRecoveryMemoryHistoryEntry
int32 ReliableTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount = 0;
float ReliableTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore = 0.0f;
float ReliableTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore = 0.0f;
int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount = 0;
int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount = 0;
float ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore = 0.0f;
float ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore = 0.0f;
float MethodDrillRecoveryAverageOutcomeScore = 0.0f;
bool bStrongPressureDominant = false;
bool bWeakPressureDominant = false;
@ -396,6 +416,8 @@ struct FHyperTwistCoachDashboardMethodDrillRecoveryMemoryHistoryEntry
bool bBroadPacketStructureRecoveryDominant = false;
bool bReliableTrustedTightStructurePlanDominant = false;
bool bReliableTrustedBroadStructurePlanDominant = false;
bool bReliableAlignedTrustedTightStructurePlanDominant = false;
bool bReliableAlignedTrustedBroadStructurePlanDominant = false;
bool bGeneratedPacketUsedStrongRetainedMethodDrillRecoveryPosture = false;
bool bGeneratedPacketUsedWeakRetainedMethodDrillRecoveryPosture = false;
bool bGeneratedPacketUsedGenericMethodDrillRecoveryMemory = false;
@ -403,6 +425,8 @@ struct FHyperTwistCoachDashboardMethodDrillRecoveryMemoryHistoryEntry
bool bGeneratedPlanUsedBroadStructureRedirectPosture = false;
bool bGeneratedPlanUsedReliableTrustedTightStructureContinuationPosture = false;
bool bGeneratedPlanUsedReliableTrustedBroadStructureRedirectPosture = false;
bool bGeneratedPlanUsedReliableAlignedTrustedTightStructureContinuationPosture = false;
bool bGeneratedPlanUsedReliableAlignedTrustedBroadStructureRedirectPosture = false;
bool bUsedMethodDrillRecoveryMemoryForRecovery = false;
bool bUsedMethodDrillRecoveryMemoryForHandoff = false;
@ -1446,6 +1470,8 @@ private:
bool bUsedWeakRetainedMethodDrillRecoveryPosture,
bool bUsedReliableTrustedTightStructurePlanRecovery,
bool bUsedReliableTrustedBroadStructurePlanRecovery,
bool bUsedReliableAlignedTrustedTightStructurePlanRecovery,
bool bUsedReliableAlignedTrustedBroadStructurePlanRecovery,
bool bSucceeded
);
void RecordCoachHandoffHistorySnapshot(
@ -1463,7 +1489,9 @@ private:
bool bUsedStrongRetainedMethodDrillRecoveryPosture,
bool bUsedWeakRetainedMethodDrillRecoveryPosture,
bool bUsedReliableTrustedTightStructurePlanHistory,
bool bUsedReliableTrustedBroadStructurePlanHistory
bool bUsedReliableTrustedBroadStructurePlanHistory,
bool bUsedReliableAlignedTrustedTightStructurePlanHistory,
bool bUsedReliableAlignedTrustedBroadStructurePlanHistory
);
void RecordQueueSuppressionSnapshot();
void RecordClosureRecoverySnapshot();

View file

@ -1983,6 +1983,18 @@ struct FHyperTwistTrainingCoachMemorySnapshot
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
float ReliableTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
float ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
float ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
bool bNeedsCoachIntervention = false;
@ -5086,6 +5098,18 @@ struct FHyperTwistTrainingCoachPanelState
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
float ReliableTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanHistoryCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHistoryCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
float ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanAverageOutcomeScore = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
float ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 SignalCount = 0;