diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp index 27baf46..93c169f 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCoachLibrary.cpp @@ -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"); diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp index 09dba01..ca35f92 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp @@ -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(Summary.DeferredFirstFollowUpPacketPlanCount); } + if (Summary.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount > 0) + { + Summary.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeAverageScore = + ReliableAlignedTrustedTightPlanOutcomeAccumulator + / static_cast( + Summary.ReliableAlignedTrustedTightMethodDrillRecoveryStructurePlanOutcomeHistoryCount); + } + if (Summary.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeHistoryCount > 0) + { + Summary.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeAverageScore = + ReliableAlignedTrustedBroadPlanOutcomeAccumulator + / static_cast( + Summary.ReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanOutcomeHistoryCount); + } Summary.bHasRepeatRecommendationPressure = Summary.RepeatRecommendationSequenceCount > 0 && (Summary.RecurringCaseCount > 0 diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingTypes.h b/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingTypes.h index ee7a2df..8c144d9 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingTypes.h +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingTypes.h @@ -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 RecurringCaseIds;