Learn aligned drill recovery handoff outcomes upstream

This commit is contained in:
axiomlogicnexus 2026-04-29 21:22:07 +02:00
parent fc85977928
commit 338c31a32a
3 changed files with 229 additions and 2 deletions

View file

@ -93,10 +93,14 @@ namespace HyperTwistTrainingCoachLibraryInternal
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned")
|| SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-outcome")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned")
|| SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-outcome")
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-"))
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-"));
}
@ -180,7 +184,9 @@ namespace HyperTwistTrainingCoachLibraryInternal
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned");
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned")
|| SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-outcome");
}
bool IsWeakMethodDrillRecoveryMemorySource(const FString& SourceLabel)
@ -222,7 +228,9 @@ namespace HyperTwistTrainingCoachLibraryInternal
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned");
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned")
|| SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-outcome");
}
FString DescribeRetainedMethodDrillRecoveryStanceLabel(const FString& SourceLabel)
@ -794,6 +802,11 @@ namespace HyperTwistTrainingCoachLibraryInternal
{
return TEXT("aligned reliable trusted tight drill-recovery-plan history");
}
if (SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-outcome"))
{
return TEXT("successful aligned reliable trusted tight drill-recovery-plan handoff outcome history");
}
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-strong"))
{
return TEXT("successful retained drill-recovery-packet history");
@ -834,6 +847,11 @@ namespace HyperTwistTrainingCoachLibraryInternal
{
return TEXT("aligned reliable trusted broad drill-recovery-plan redirect history");
}
if (SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-outcome"))
{
return TEXT("successful aligned reliable trusted broad drill-recovery-plan redirect outcome history");
}
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-weak"))
{
return TEXT("weak retained drill-recovery-packet history");

View file

@ -377,6 +377,28 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
== TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-recommended");
}
bool IsReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanCoachMemorySource(
const FString& SourceLabel)
{
return SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned")
|| SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-outcome")
|| SourceLabel.StartsWith(
TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-"));
}
bool IsReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanCoachMemorySource(
const FString& SourceLabel)
{
return SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned")
|| SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-outcome")
|| SourceLabel.StartsWith(
TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-"));
}
bool IsWeakMethodDrillRecoveryPacketDashboardHandoffSource(const FString& SourceLabel)
{
return SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-queued")
@ -457,11 +479,15 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable")
|| SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned")
|| SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-outcome")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable")
|| SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned")
|| SourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-outcome")
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-tight-"))
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-recovery-structure-plan-broad-"));
}
@ -2132,6 +2158,8 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
HyperTwistTrainingRepositoryLibraryInternal::IsTightMethodDrillRecoveryStructurePlanDashboardHandoffSource(
CoachMemorySnapshot.PreferredCoachHandoffSourceLabel
)
|| CoachMemorySnapshot.PreferredCoachHandoffSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-outcome")
|| CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight")
|| CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel
@ -2144,6 +2172,8 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
HyperTwistTrainingRepositoryLibraryInternal::IsReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanDashboardHandoffSource(
CoachMemorySnapshot.PreferredCoachHandoffSourceLabel
)
|| CoachMemorySnapshot.PreferredCoachHandoffSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-outcome")
|| CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned");
const bool bReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffSource =
@ -2163,6 +2193,8 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
HyperTwistTrainingRepositoryLibraryInternal::IsBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource(
CoachMemorySnapshot.PreferredCoachHandoffSourceLabel
)
|| CoachMemorySnapshot.PreferredCoachHandoffSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-outcome")
|| CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad")
|| CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel
@ -2175,6 +2207,8 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
HyperTwistTrainingRepositoryLibraryInternal::IsReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource(
CoachMemorySnapshot.PreferredCoachHandoffSourceLabel
)
|| CoachMemorySnapshot.PreferredCoachHandoffSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-outcome")
|| CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned");
const bool bReliableTrustedBroadMethodDrillRecoveryStructurePlanHandoffSource =
@ -7559,6 +7593,18 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
Snapshot.DeferredLaunchHistoryCaseCount = RecommendationHistory.DeferredLaunchCaseCount;
Snapshot.DeferredFirstFollowUpPacketHistoryCount =
RecommendationHistory.DeferredFirstFollowUpPacketPlanCount;
Snapshot.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount =
RecommendationHistory
.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount;
Snapshot.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeHistoryCount =
RecommendationHistory
.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeHistoryCount;
Snapshot.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeAverageScore =
RecommendationHistory
.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeAverageScore;
Snapshot.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeAverageScore =
RecommendationHistory
.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeAverageScore;
Snapshot.bHasRepeatRecommendationPressure = RecommendationHistory.bHasRepeatRecommendationPressure;
const int32 DeferredTightenedLaunchBias = FMath::Clamp(
RecommendationHistory.DeferredTightenedLaunchPlanCount,
@ -7624,6 +7670,117 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
TEXT("recommendation-history-deferred-first-follow-up");
}
}
const bool bReliableAlignedTrustedTightPlanOutcomeHistory =
RecommendationHistory
.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount
>= 2
&& RecommendationHistory
.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeAverageScore
>= 60.0f
&& (RecommendationHistory
.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeHistoryCount
<= 0
|| RecommendationHistory
.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeAverageScore
>= RecommendationHistory
.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeAverageScore
- 2.0f);
const bool bReliableAlignedTrustedBroadPlanOutcomeHistory =
RecommendationHistory
.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeHistoryCount
>= 2
&& RecommendationHistory
.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeAverageScore
>= 58.0f
&& (RecommendationHistory
.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount
<= 0
|| RecommendationHistory
.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeAverageScore
>= RecommendationHistory
.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeAverageScore
- 2.0f);
if (bReliableAlignedTrustedTightPlanOutcomeHistory)
{
const int32 ReliableAlignedTrustedTightPlanOutcomeBias = FMath::Clamp(
RecommendationHistory
.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount
- RecommendationHistory
.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeHistoryCount
+ (RecommendationHistory
.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeAverageScore
>= 80.0f
? 1
: 0),
1,
4
);
Snapshot.FollowUpGuidanceContinueBias += ReliableAlignedTrustedTightPlanOutcomeBias;
Snapshot.SuppressedPrimaryQueuePressureCount += FMath::Max(
1,
ReliableAlignedTrustedTightPlanOutcomeBias - 1
);
if (Snapshot.PreferredGuidanceLane == EHyperTwistTrainingCoachGuidanceLane::None
|| Snapshot.PreferredGuidanceLane == EHyperTwistTrainingCoachGuidanceLane::Recommended
|| Snapshot.PreferredGuidanceSourceLabel.StartsWith(TEXT("recommendation-history"))
|| Snapshot.PreferredGuidanceSourceLabel.StartsWith(
TEXT("coach-memory-method-drill-recovery-structure-plan")))
{
Snapshot.PreferredGuidanceLane = EHyperTwistTrainingCoachGuidanceLane::FollowUp;
Snapshot.PreferredGuidanceSourceLabel =
TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-outcome");
}
if (Snapshot.PreferredCoachHandoffKind == EHyperTwistTrainingCoachHandoffKind::None
|| Snapshot.PreferredCoachHandoffKind
== EHyperTwistTrainingCoachHandoffKind::Recommended
|| Snapshot.PreferredCoachHandoffSourceLabel.IsEmpty()
|| Snapshot.PreferredCoachHandoffSourceLabel.StartsWith(TEXT("recommendation-history"))
|| Snapshot.PreferredCoachHandoffSourceLabel.StartsWith(
TEXT("coach-memory-method-drill-recovery-structure-plan")))
{
Snapshot.PreferredCoachHandoffKind = EHyperTwistTrainingCoachHandoffKind::FollowUp;
Snapshot.PreferredCoachHandoffSourceLabel =
TEXT("coach-memory-method-drill-recovery-structure-plan-tight-trusted-reliable-aligned-outcome");
}
}
else if (bReliableAlignedTrustedBroadPlanOutcomeHistory)
{
const int32 ReliableAlignedTrustedBroadPlanOutcomeBias = FMath::Clamp(
RecommendationHistory
.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeHistoryCount
- RecommendationHistory
.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount
+ (RecommendationHistory
.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeAverageScore
>= 78.0f
? 1
: 0),
1,
4
);
Snapshot.RecommendedGuidanceContinueBias += ReliableAlignedTrustedBroadPlanOutcomeBias;
Snapshot.SuppressedFollowUpQueuePressureCount += ReliableAlignedTrustedBroadPlanOutcomeBias;
if (Snapshot.PreferredGuidanceLane == EHyperTwistTrainingCoachGuidanceLane::None
|| Snapshot.PreferredGuidanceLane == EHyperTwistTrainingCoachGuidanceLane::FollowUp
|| Snapshot.PreferredGuidanceSourceLabel.StartsWith(
TEXT("coach-memory-method-drill-recovery-structure-plan")))
{
Snapshot.PreferredGuidanceLane = EHyperTwistTrainingCoachGuidanceLane::Recommended;
Snapshot.PreferredGuidanceSourceLabel =
TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-outcome");
}
if (Snapshot.PreferredCoachHandoffKind == EHyperTwistTrainingCoachHandoffKind::None
|| Snapshot.PreferredCoachHandoffKind == EHyperTwistTrainingCoachHandoffKind::FollowUp
|| Snapshot.PreferredCoachHandoffSourceLabel.IsEmpty()
|| Snapshot.PreferredCoachHandoffSourceLabel.StartsWith(TEXT("recommendation-history"))
|| Snapshot.PreferredCoachHandoffSourceLabel.StartsWith(
TEXT("coach-memory-method-drill-recovery-structure-plan")))
{
Snapshot.PreferredCoachHandoffKind = EHyperTwistTrainingCoachHandoffKind::Recommended;
Snapshot.PreferredCoachHandoffSourceLabel =
TEXT("coach-memory-method-drill-recovery-structure-plan-broad-trusted-reliable-aligned-outcome");
}
}
if (!RecommendationHistory.FocusDeckId.IsEmpty()
&& (Snapshot.FocusDeckId.IsEmpty()
@ -12689,6 +12846,8 @@ FHyperTwistTrainingCoachRecommendationHistorySummary UHyperTwistTrainingReposito
float TightenedLaunchOutcomeAccumulator = 0.0f;
float DeferredTightenedLaunchOutcomeAccumulator = 0.0f;
float DeferredFirstFollowUpPacketOutcomeAccumulator = 0.0f;
float ReliableAlignedTrustedTightPlanOutcomeAccumulator = 0.0f;
float ReliableAlignedTrustedBroadPlanOutcomeAccumulator = 0.0f;
FString LatestPlanSortUtc;
for (const FHyperTwistTrainingCoachActionPlan& Plan : UserPlans)
@ -12865,6 +13024,18 @@ FHyperTwistTrainingCoachRecommendationHistorySummary UHyperTwistTrainingReposito
if (OutcomeSummary.IsStructurallyValid())
{
if (HyperTwistTrainingRepositoryLibraryInternal::IsReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanCoachMemorySource(
OutcomeSummary.PreferredCoachHandoffSourceLabel))
{
Summary.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount += 1;
ReliableAlignedTrustedTightPlanOutcomeAccumulator += OutcomeSummary.OutcomeScore;
}
if (HyperTwistTrainingRepositoryLibraryInternal::IsReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanCoachMemorySource(
OutcomeSummary.PreferredCoachHandoffSourceLabel))
{
Summary.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeHistoryCount += 1;
ReliableAlignedTrustedBroadPlanOutcomeAccumulator += OutcomeSummary.OutcomeScore;
}
if (OutcomeSummary.PlannedLaunchCaseCount > 0)
{
PlannedLaunchCaseCountAccumulator +=
@ -13011,6 +13182,20 @@ FHyperTwistTrainingCoachRecommendationHistorySummary UHyperTwistTrainingReposito
DeferredFirstFollowUpPacketOutcomeAccumulator
/ static_cast<float>(Summary.DeferredFirstFollowUpPacketPlanCount);
}
if (Summary.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount > 0)
{
Summary.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeAverageScore =
ReliableAlignedTrustedTightPlanOutcomeAccumulator
/ static_cast<float>(
Summary.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount);
}
if (Summary.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeHistoryCount > 0)
{
Summary.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeAverageScore =
ReliableAlignedTrustedBroadPlanOutcomeAccumulator
/ static_cast<float>(
Summary.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeHistoryCount);
}
Summary.bHasRepeatRecommendationPressure =
Summary.RepeatRecommendationSequenceCount > 0
&& (Summary.RecurringCaseCount > 0

View file

@ -1995,6 +1995,18 @@ struct FHyperTwistTrainingCoachMemorySnapshot
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
float ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanAverageOutcomeScore = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeHistoryCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
float ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeAverageScore = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
float ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeAverageScore = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
bool bNeedsCoachIntervention = false;
@ -4483,6 +4495,18 @@ struct FHyperTwistTrainingCoachRecommendationHistorySummary
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
float DeferredFirstFollowUpPacketAverageOutcomeScore = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeHistoryCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
float ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeAverageScore = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
float ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeAverageScore = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
TArray<FString> RecurringCaseIds;