Weight handoff by accepted packet trust

This commit is contained in:
axiomlogicnexus 2026-04-30 00:56:45 +02:00
parent 34a7c1577c
commit 30dea6b122
4 changed files with 346 additions and 12 deletions

View file

@ -341,7 +341,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
return SourceLabel
== TEXT("recommendation-history-accepted-aligned-tight-follow-up-packet-outcome")
|| SourceLabel == TEXT("coach-memory-aligned-follow-up-packet-structure-tight-follow-up")
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-"));
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-"))
|| SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended");
}
bool IsAlignedBroadRecommendedPacketSourceLabel(const FString& SourceLabel)
@ -349,7 +352,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
return SourceLabel
== TEXT("recommendation-history-accepted-aligned-broad-recommended-packet-outcome")
|| SourceLabel == TEXT("coach-memory-aligned-follow-up-packet-structure-broad-recommended")
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-"));
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-"))
|| SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended");
}
bool IsAlignedTightFollowUpGuidanceSourceLabel(const FString& SourceLabel)
@ -408,6 +414,14 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
return TEXT("accepted aligned tight follow-up-packet handoff history");
}
if (SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended"))
{
return TEXT("accepted aligned tight follow-up-packet outcome trust");
}
if (SourceLabel
== TEXT("recommendation-history-accepted-aligned-tight-follow-up-packet-outcome"))
{
@ -424,6 +438,14 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
return TEXT("accepted aligned broad recommended-packet handoff history");
}
if (SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended"))
{
return TEXT("accepted aligned broad recommended-packet outcome trust");
}
if (SourceLabel
== TEXT("recommendation-history-accepted-aligned-broad-recommended-packet-outcome"))
{
@ -1020,8 +1042,38 @@ namespace HyperTwistCoachDashboardWidgetInternal
const bool bReliableTrustedMethodDrillRecoveryStructurePlanDriven = false,
const bool bReliableTrustedMethodDrillRecoveryStructurePlanAlignmentDriven = false,
const bool bAlignedTightFollowUpPacketAcceptedDriven = false,
const bool bAlignedBroadRecommendedPacketAcceptedDriven = false)
const bool bAlignedBroadRecommendedPacketAcceptedDriven = false,
const bool bAcceptedAlignedTightFollowUpPacketOutcomeDriven = false,
const bool bAcceptedAlignedBroadRecommendedPacketOutcomeDriven = false)
{
if (bAcceptedAlignedTightFollowUpPacketOutcomeDriven)
{
switch (HandoffKind)
{
case EHyperTwistTrainingCoachHandoffKind::Queue:
return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued");
case EHyperTwistTrainingCoachHandoffKind::FollowUp:
return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up");
case EHyperTwistTrainingCoachHandoffKind::Recommended:
return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended");
default:
return FString();
}
}
if (bAcceptedAlignedBroadRecommendedPacketOutcomeDriven)
{
switch (HandoffKind)
{
case EHyperTwistTrainingCoachHandoffKind::Queue:
return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued");
case EHyperTwistTrainingCoachHandoffKind::FollowUp:
return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up");
case EHyperTwistTrainingCoachHandoffKind::Recommended:
return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended");
default:
return FString();
}
}
if (bAlignedTightFollowUpPacketAcceptedDriven)
{
switch (HandoffKind)
@ -6478,6 +6530,12 @@ FString UHyperTwistCoachDashboardWidget::ResolveDashboardHandoffStartActionSourc
const bool bUseAlignedBroadPacketAcceptedLabel =
bDisplayedCoachHandoffRecommendationUsedAlignedBroadPacketAcceptedHistory
&& DisplayedCoachHandoffRecommendationKind == HandoffKind;
const bool bUseAcceptedAlignedTightPacketOutcomeLabel =
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedTightPacketOutcomeTrust
&& DisplayedCoachHandoffRecommendationKind == HandoffKind;
const bool bUseAcceptedAlignedBroadPacketOutcomeLabel =
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedBroadPacketOutcomeTrust
&& DisplayedCoachHandoffRecommendationKind == HandoffKind;
return HyperTwistCoachDashboardWidgetInternal::DashboardHandoffSourceLabel(
HandoffKind,
bUseDeferredFirstSuppressionLabel,
@ -6492,7 +6550,9 @@ FString UHyperTwistCoachDashboardWidget::ResolveDashboardHandoffStartActionSourc
false,
false,
bUseAlignedTightPacketAcceptedLabel,
bUseAlignedBroadPacketAcceptedLabel
bUseAlignedBroadPacketAcceptedLabel,
bUseAcceptedAlignedTightPacketOutcomeLabel,
bUseAcceptedAlignedBroadPacketOutcomeLabel
);
}
@ -7169,10 +7229,97 @@ FHyperTwistCoachDashboardQueueRecoveryWeighting UHyperTwistCoachDashboardWidget:
FHyperTwistCoachDashboardQueueRecoveryWeighting Weighting;
float PromoteDeltaAccumulator = 0.0f;
float LaunchDeltaAccumulator = 0.0f;
const HyperTwistCoachDashboardWidgetInternal::FHandoffHistoryDashboardBias HandoffHistoryBias =
const bool bQueueLooksFollowUpOrRecovery =
CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("follow-up"))
|| CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("queue-recovery"))
|| CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("closure_history_follow_up"));
const bool bQueueLooksRecommendedOrPrimary =
CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("primary"))
|| CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("recommended"))
|| CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("closure_history_recommended"));
HyperTwistCoachDashboardWidgetInternal::FHandoffHistoryDashboardBias HandoffHistoryBias =
HyperTwistCoachDashboardWidgetInternal::DeriveHandoffHistoryDashboardBias(
HandoffHistoryEntries
);
const int32 AcceptedAlignedTightPacketOutcomeTrustBias =
(CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount >= 2
&& CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeAverageScore >= 60.0f)
? FMath::Clamp(
CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount
- CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount
+ (CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeAverageScore >= 80.0f
? 1
: 0),
1,
4)
: 0;
const int32 AcceptedAlignedBroadPacketOutcomeTrustBias =
(CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount >= 2
&& CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeAverageScore >= 58.0f)
? FMath::Clamp(
CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount
- CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount
+ (CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeAverageScore >= 78.0f
? 1
: 0),
1,
4)
: 0;
if (AcceptedAlignedTightPacketOutcomeTrustBias > AcceptedAlignedBroadPacketOutcomeTrustBias)
{
HandoffHistoryBias.FollowUpScore += AcceptedAlignedTightPacketOutcomeTrustBias * 4;
if (bQueueLooksFollowUpOrRecovery)
{
HandoffHistoryBias.QueueScore += AcceptedAlignedTightPacketOutcomeTrustBias * 2;
}
}
else if (AcceptedAlignedBroadPacketOutcomeTrustBias > AcceptedAlignedTightPacketOutcomeTrustBias)
{
HandoffHistoryBias.RecommendedScore += AcceptedAlignedBroadPacketOutcomeTrustBias * 4;
if (bQueueLooksRecommendedOrPrimary)
{
HandoffHistoryBias.QueueScore += AcceptedAlignedBroadPacketOutcomeTrustBias * 2;
}
}
{
HandoffHistoryBias.PreferredKind =
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::None;
int32 BestScore = 0;
int32 BestAcceptedDeltaCount = 0;
auto ConsiderKind = [&BestScore, &BestAcceptedDeltaCount, &HandoffHistoryBias](
const HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind Kind,
const int32 Score,
const int32 AcceptedDeltaCount)
{
if (Score <= 0)
{
return;
}
if (Score > BestScore
|| (Score == BestScore && AcceptedDeltaCount > BestAcceptedDeltaCount))
{
BestScore = Score;
BestAcceptedDeltaCount = AcceptedDeltaCount;
HandoffHistoryBias.PreferredKind = Kind;
}
};
ConsiderKind(
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::Queue,
HandoffHistoryBias.QueueScore,
HandoffHistoryBias.QueueAcceptedDeltaCount);
ConsiderKind(
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::FollowUp,
HandoffHistoryBias.FollowUpScore,
HandoffHistoryBias.FollowUpAcceptedDeltaCount
+ CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount);
ConsiderKind(
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::Recommended,
HandoffHistoryBias.RecommendedScore,
HandoffHistoryBias.RecommendedAcceptedDeltaCount
+ CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount);
}
const HyperTwistCoachDashboardWidgetInternal::FMethodDrillRecoveryPacketDashboardBias
MethodDrillRecoveryPacketBias =
HyperTwistCoachDashboardWidgetInternal::DeriveMethodDrillRecoveryPacketDashboardBias(
@ -9745,7 +9892,7 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("primary"))
|| CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("recommended"))
|| CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("closure_history_recommended"));
const HyperTwistCoachDashboardWidgetInternal::FHandoffHistoryDashboardBias HandoffHistoryBias =
HyperTwistCoachDashboardWidgetInternal::FHandoffHistoryDashboardBias HandoffHistoryBias =
HyperTwistCoachDashboardWidgetInternal::DeriveHandoffHistoryDashboardBias(
HandoffHistoryEntries
);
@ -9766,6 +9913,8 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
bDisplayedCoachHandoffRecommendationUsedMethodDrillWeighting = false;
bDisplayedCoachHandoffRecommendationUsedAlignedTightPacketAcceptedHistory = false;
bDisplayedCoachHandoffRecommendationUsedAlignedBroadPacketAcceptedHistory = false;
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedTightPacketOutcomeTrust = false;
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedBroadPacketOutcomeTrust = false;
DisplayedCoachHandoffMethodDrillRecoveryMemoryStartActionSourceLabel.Reset();
FString CoachHandoffRecommendationStatusLine;
FString CoachHandoffRecommendationDetailLine;
@ -9775,6 +9924,91 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
&& CachedCoachPanelState.bHasFollowUpGuidance;
const bool bRecommendedReadyForHandoff =
CachedCoachPanelState.bCanStartCoachRecommendedRun;
const int32 AcceptedAlignedTightPacketOutcomeTrustBias =
(CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount >= 2
&& CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeAverageScore
>= 60.0f)
? FMath::Clamp(
CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount
- CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount
+ (CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeAverageScore
>= 80.0f
? 1
: 0),
1,
4)
: 0;
const int32 AcceptedAlignedBroadPacketOutcomeTrustBias =
(CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount >= 2
&& CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeAverageScore
>= 58.0f)
? FMath::Clamp(
CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount
- CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount
+ (CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeAverageScore
>= 78.0f
? 1
: 0),
1,
4)
: 0;
if (AcceptedAlignedTightPacketOutcomeTrustBias
> AcceptedAlignedBroadPacketOutcomeTrustBias)
{
HandoffHistoryBias.FollowUpScore += AcceptedAlignedTightPacketOutcomeTrustBias * 4;
if (bQueueReadyForHandoff && bQueueLooksFollowUpOrRecovery)
{
HandoffHistoryBias.QueueScore += AcceptedAlignedTightPacketOutcomeTrustBias * 2;
}
}
else if (AcceptedAlignedBroadPacketOutcomeTrustBias
> AcceptedAlignedTightPacketOutcomeTrustBias)
{
HandoffHistoryBias.RecommendedScore += AcceptedAlignedBroadPacketOutcomeTrustBias * 4;
if (bQueueReadyForHandoff && bQueueLooksRecommendedOrPrimary)
{
HandoffHistoryBias.QueueScore += AcceptedAlignedBroadPacketOutcomeTrustBias * 2;
}
}
{
HandoffHistoryBias.PreferredKind =
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::None;
int32 BestScore = 0;
int32 BestAcceptedDeltaCount = 0;
auto ConsiderKind = [&BestScore, &BestAcceptedDeltaCount, &HandoffHistoryBias](
const HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind Kind,
const int32 Score,
const int32 AcceptedDeltaCount)
{
if (Score <= 0)
{
return;
}
if (Score > BestScore
|| (Score == BestScore && AcceptedDeltaCount > BestAcceptedDeltaCount))
{
BestScore = Score;
BestAcceptedDeltaCount = AcceptedDeltaCount;
HandoffHistoryBias.PreferredKind = Kind;
}
};
ConsiderKind(
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::Queue,
HandoffHistoryBias.QueueScore,
HandoffHistoryBias.QueueAcceptedDeltaCount);
ConsiderKind(
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::FollowUp,
HandoffHistoryBias.FollowUpScore,
HandoffHistoryBias.FollowUpAcceptedDeltaCount
+ CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount);
ConsiderKind(
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::Recommended,
HandoffHistoryBias.RecommendedScore,
HandoffHistoryBias.RecommendedAcceptedDeltaCount
+ CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount);
}
bool bHandoffRecommendationUsedHistory = false;
bool bHandoffRecommendationUsedDeferredOverflowHistory = false;
bool bHandoffRecommendationUsedDeferredFirstSuppressionSignal = false;
@ -10531,6 +10765,22 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
|| (DisplayedCoachHandoffRecommendationKind
== EHyperTwistTrainingCoachHandoffKind::Queue
&& bQueueLooksRecommendedOrPrimary));
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedTightPacketOutcomeTrust =
AcceptedAlignedTightPacketOutcomeTrustBias
> AcceptedAlignedBroadPacketOutcomeTrustBias
&& (DisplayedCoachHandoffRecommendationKind
== EHyperTwistTrainingCoachHandoffKind::FollowUp
|| (DisplayedCoachHandoffRecommendationKind
== EHyperTwistTrainingCoachHandoffKind::Queue
&& bQueueLooksFollowUpOrRecovery));
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedBroadPacketOutcomeTrust =
AcceptedAlignedBroadPacketOutcomeTrustBias
> AcceptedAlignedTightPacketOutcomeTrustBias
&& (DisplayedCoachHandoffRecommendationKind
== EHyperTwistTrainingCoachHandoffKind::Recommended
|| (DisplayedCoachHandoffRecommendationKind
== EHyperTwistTrainingCoachHandoffKind::Queue
&& bQueueLooksRecommendedOrPrimary));
const bool bHandoffRecommendationUsedStrongMethodDrillFollowUpPacket =
bHandoffRecommendationUsedMethodDrillWeighting
&& HandoffRecommendationKind
@ -10735,6 +10985,13 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
HandoffHistoryBias.AlignedTightFollowUpPacketAcceptedDeltaCount,
HandoffHistoryBias.AlignedBroadRecommendedPacketAcceptedDeltaCount
);
CoachHandoffRecommendationDetailLine += FString::Printf(
TEXT(" | accepted aligned packet outcomes tight/broad %d/%d avg %.1f/%.1f"),
CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount,
CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount,
CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeAverageScore,
CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeAverageScore
);
if (HandoffHistoryBias.AlignedTightFollowUpOutcomeAcceptedDeltaCount > 0
&& HandoffHistoryBias.PreferredKind
== HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::FollowUp)
@ -10763,6 +11020,17 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
CoachHandoffRecommendationDetailLine +=
TEXT(" | Accepted aligned broad packet recommended-first handoffs are reinforcing the retained broad branch.");
}
if (bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedTightPacketOutcomeTrust)
{
CoachHandoffRecommendationDetailLine +=
TEXT(" | Accepted aligned tight packet outcome trust is tipping this handoff toward narrow continuation.");
}
else if (
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedBroadPacketOutcomeTrust)
{
CoachHandoffRecommendationDetailLine +=
TEXT(" | Accepted aligned broad packet outcome trust is tipping this handoff back toward broader redirect.");
}
CoachHandoffRecommendationDetailLine += FString::Printf(
TEXT(" | upstream drill recovery strong/weak/history %d/%d/%d avg %.1f"),
CachedCoachPanelState.StrongMethodDrillRecoveryHistoryCount,

View file

@ -339,7 +339,13 @@ namespace HyperTwistTrainingCoachLibraryInternal
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-"))
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended");
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended");
}
bool IsAlignedBroadRecommendedGuidanceSourceLabel(const FString& SourceLabel)
@ -352,7 +358,13 @@ namespace HyperTwistTrainingCoachLibraryInternal
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-"))
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended");
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended");
}
FString DescribeCoachMemorySourceLabel(const FString& SourceLabel)
@ -407,6 +419,14 @@ namespace HyperTwistTrainingCoachLibraryInternal
}
if (IsAlignedTightFollowUpGuidanceSourceLabel(SourceLabel))
{
if (SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended"))
{
return TEXT("accepted aligned tight follow-up-packet outcome trust");
}
if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-"))
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-follow-up")
@ -426,6 +446,14 @@ namespace HyperTwistTrainingCoachLibraryInternal
}
if (IsAlignedBroadRecommendedGuidanceSourceLabel(SourceLabel))
{
if (SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended"))
{
return TEXT("accepted aligned broad recommended-packet outcome trust");
}
if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-"))
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-follow-up")

View file

@ -137,14 +137,26 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
{
return SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended");
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended");
}
bool IsAlignedBroadRecommendedPacketDashboardHandoffSource(const FString& SourceLabel)
{
return SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended");
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended");
}
bool IsStrongMethodDrillRecoveryDashboardHandoffSource(const FString& SourceLabel)
@ -455,7 +467,13 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-"))
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended");
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended");
}
bool IsAcceptedAlignedBroadRecommendedPacketOutcomeSource(const FString& SourceLabel)
@ -465,7 +483,13 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-"))
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended");
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended");
}
FString ResolveMethodDrillFollowUpPacketStructureRecoverySourceLabel(
@ -579,6 +603,10 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-queued")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-queued"))
{
@ -604,6 +632,10 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-follow-up"))
{
@ -629,6 +661,10 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-recommended")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended")
|| SourceLabel
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-recommended"))
{

View file

@ -1618,6 +1618,8 @@ private:
bool bDisplayedCoachHandoffRecommendationUsedMethodDrillWeighting = false;
bool bDisplayedCoachHandoffRecommendationUsedAlignedTightPacketAcceptedHistory = false;
bool bDisplayedCoachHandoffRecommendationUsedAlignedBroadPacketAcceptedHistory = false;
bool bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedTightPacketOutcomeTrust = false;
bool bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedBroadPacketOutcomeTrust = false;
FString DisplayedCoachHandoffMethodDrillRecoveryMemoryStartActionSourceLabel;
EHyperTwistCoachDashboardGuidancePreviewLane ActiveGuidancePreviewLane =
EHyperTwistCoachDashboardGuidancePreviewLane::None;