Weight dashboard outcomes by deferred overflow

This commit is contained in:
axiomlogicnexus 2026-04-28 01:18:30 +02:00
parent 8d30072377
commit 8cd4c47992
2 changed files with 48 additions and 4 deletions

View file

@ -3728,6 +3728,17 @@ FHyperTwistCoachDashboardDecisionWeighting UHyperTwistCoachDashboardWidget::Buil
);
Weighting.ClosureContinuationBias = ClosureBias.ContinuationBias;
Weighting.ClosureSuppressionBias = ClosureBias.SuppressionBias;
const bool bDeferredOverflowMemoryActive =
CachedCoachPanelState.PreferredLaunchBudgetSourceLabel
== TEXT("recommendation-history-deferred-tightened-launch");
if (bDeferredOverflowMemoryActive
&& DisplayedGuidanceComparisonLane == EHyperTwistCoachDashboardGuidancePreviewLane::FollowUp)
{
Weighting.DeferredOverflowContinuationBias =
CachedCoachPanelState.DeferredTightenedLaunchHistoryCount;
Weighting.DeferredOverflowCaseCount =
CachedCoachPanelState.DeferredLaunchHistoryCaseCount;
}
if (bDisplayedGuidanceComparisonSingleCase)
{
@ -3823,6 +3834,27 @@ FHyperTwistCoachDashboardDecisionWeighting UHyperTwistCoachDashboardWidget::Buil
}
}
if (DisplayedGuidanceComparisonLane == EHyperTwistCoachDashboardGuidancePreviewLane::FollowUp
&& Weighting.DeferredOverflowContinuationBias >= 2)
{
if (!bDisplayedGuidanceComparisonSingleCase
&& BaseAction == EHyperTwistCoachDashboardOutcomeAction::RedirectCoachGuidance
&& Weighting.AverageSuccessRate < 0.92f)
{
Weighting.WeightedAction = EHyperTwistCoachDashboardOutcomeAction::RepeatPreviewDeck;
Weighting.bHasOverride = true;
Weighting.bUsedDeferredOverflowSignal = true;
}
else if (bDisplayedGuidanceComparisonSingleCase
&& BaseAction == EHyperTwistCoachDashboardOutcomeAction::BroadenPreviewDeck
&& Weighting.AverageSuccessRate < 0.94f)
{
Weighting.WeightedAction = EHyperTwistCoachDashboardOutcomeAction::RepeatSelectedCase;
Weighting.bHasOverride = true;
Weighting.bUsedDeferredOverflowSignal = true;
}
}
return Weighting;
}
@ -5740,6 +5772,11 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
{
GuidanceOutcomeStatusLine += TEXT(" Closure-recovery history adjusted this recommendation.");
}
if (GuidanceDecisionWeighting.bUsedDeferredOverflowSignal)
{
GuidanceOutcomeStatusLine +=
TEXT(" Deferred-overflow continuation history adjusted this recommendation.");
}
const bool bCanRedirectGuidanceOutcome =
CachedCoachPanelState.bCanStartCoachFollowUpRun
|| CachedCoachPanelState.bCanStartQueuedRun
@ -5766,7 +5803,7 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
const FString GuidanceDecisionWeightingDetailLine =
GuidanceDecisionWeighting.IsStructurallyValid()
? FString::Printf(
TEXT("Decision weighting for this lane/scope: repeat case %d | repeat deck %d | broaden %d | redirect %d | Avg success %.2f | Avg launch cases %.2f | broadened launches %d (avg %.2f) | tightened launches %d (avg %.2f) | Closure continue bias %d | Closure suppress bias %d | %s"),
TEXT("Decision weighting for this lane/scope: repeat case %d | repeat deck %d | broaden %d | redirect %d | Avg success %.2f | Avg launch cases %.2f | broadened launches %d (avg %.2f) | tightened launches %d (avg %.2f) | Closure continue bias %d | Closure suppress bias %d | Deferred overflow bias %d | Deferred overflow cases %d | %s"),
GuidanceDecisionWeighting.RepeatSelectedCaseCount,
GuidanceDecisionWeighting.RepeatPreviewDeckCount,
GuidanceDecisionWeighting.BroadenPreviewDeckCount,
@ -5779,10 +5816,14 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
GuidanceDecisionWeighting.TightenedLaunchAverageSuccessRate,
GuidanceDecisionWeighting.ClosureContinuationBias,
GuidanceDecisionWeighting.ClosureSuppressionBias,
GuidanceDecisionWeighting.DeferredOverflowContinuationBias,
GuidanceDecisionWeighting.DeferredOverflowCaseCount,
GuidanceDecisionWeighting.bHasOverride
? (GuidanceDecisionWeighting.bUsedClosureHistorySignal
? TEXT("Recent closure-recovery history and authored choices adjusted the current guidance-outcome action.")
: TEXT("Recent authored choices adjusted the current guidance-outcome action."))
? (GuidanceDecisionWeighting.bUsedDeferredOverflowSignal
? TEXT("Deferred-overflow continuation history and authored choices adjusted the current guidance-outcome action.")
: (GuidanceDecisionWeighting.bUsedClosureHistorySignal
? TEXT("Recent closure-recovery history and authored choices adjusted the current guidance-outcome action.")
: TEXT("Recent authored choices adjusted the current guidance-outcome action.")))
: TEXT("Recent authored choices reinforced the recap-derived guidance-outcome action.")
)
: TEXT("Weighting detail: apply outcome actions on the same guidance lane and scope to let the dashboard bias future recommendations.");

View file

@ -76,6 +76,8 @@ struct FHyperTwistCoachDashboardDecisionWeighting
int32 TightenedLaunchCount = 0;
int32 ClosureContinuationBias = 0;
int32 ClosureSuppressionBias = 0;
int32 DeferredOverflowContinuationBias = 0;
int32 DeferredOverflowCaseCount = 0;
EHyperTwistCoachDashboardOutcomeAction BaseAction =
EHyperTwistCoachDashboardOutcomeAction::None;
EHyperTwistCoachDashboardOutcomeAction WeightedAction =
@ -88,6 +90,7 @@ struct FHyperTwistCoachDashboardDecisionWeighting
float TightenedLaunchAverageSuccessRate = 0.0f;
bool bHasOverride = false;
bool bUsedClosureHistorySignal = false;
bool bUsedDeferredOverflowSignal = false;
bool IsStructurallyValid() const
{