Expose runtime selector owned-execution split-phase provenance

This commit is contained in:
axiomlogicnexus 2026-05-09 16:16:37 +02:00
parent c9307c6eb1
commit bb91acb503
4 changed files with 171 additions and 2 deletions

View file

@ -1861,6 +1861,102 @@ UHyperTwistTrainingRuntimeLibrary::GetActiveTrainingCoachGeneratedModeSelectorOp
return FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionTimingPolicyRetentionPreviewSurface();
}
FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDetailRetentionPreviewSurface
UHyperTwistTrainingRuntimeLibrary::GetActiveTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDetailRetentionPreviewSurface(
UObject* WorldContextObject,
const FString& SelectorId
)
{
if (UHyperTwistTrainingSubsystem* TrainingSubsystem = GetTrainingSubsystem(WorldContextObject))
{
const FHyperTwistTrainingRunState RunState = TrainingSubsystem->GetActiveRunState();
const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface OptionMenuSurface =
GetActiveTrainingCoachGeneratedModeSelectorOptionMenuSurface(
WorldContextObject,
SelectorId
);
const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface
OptionLaunchRequestPreviewSurface =
GetActiveTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface(
WorldContextObject,
SelectorId
);
return UHyperTwistTrainingCoachLibrary::
DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDetailRetentionPreviewSurface(
RunState,
SelectorId,
OptionMenuSurface,
OptionLaunchRequestPreviewSurface
);
}
return FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDetailRetentionPreviewSurface();
}
FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhasePhaseIdLabelFallbackProvenancePreviewSurface
UHyperTwistTrainingRuntimeLibrary::GetActiveTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhasePhaseIdLabelFallbackProvenancePreviewSurface(
UObject* WorldContextObject,
const FString& SelectorId
)
{
if (UHyperTwistTrainingSubsystem* TrainingSubsystem = GetTrainingSubsystem(WorldContextObject))
{
const FHyperTwistTrainingRunState RunState = TrainingSubsystem->GetActiveRunState();
const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface OptionMenuSurface =
GetActiveTrainingCoachGeneratedModeSelectorOptionMenuSurface(
WorldContextObject,
SelectorId
);
const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface
OptionLaunchRequestPreviewSurface =
GetActiveTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface(
WorldContextObject,
SelectorId
);
return UHyperTwistTrainingCoachLibrary::
DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhasePhaseIdLabelFallbackProvenancePreviewSurface(
RunState,
SelectorId,
OptionMenuSurface,
OptionLaunchRequestPreviewSurface
);
}
return FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhasePhaseIdLabelFallbackProvenancePreviewSurface();
}
FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDuplicatePruningSurvivorProvenancePreviewSurface
UHyperTwistTrainingRuntimeLibrary::GetActiveTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDuplicatePruningSurvivorProvenancePreviewSurface(
UObject* WorldContextObject,
const FString& SelectorId
)
{
if (UHyperTwistTrainingSubsystem* TrainingSubsystem = GetTrainingSubsystem(WorldContextObject))
{
const FHyperTwistTrainingRunState RunState = TrainingSubsystem->GetActiveRunState();
const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface OptionMenuSurface =
GetActiveTrainingCoachGeneratedModeSelectorOptionMenuSurface(
WorldContextObject,
SelectorId
);
const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface
OptionLaunchRequestPreviewSurface =
GetActiveTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface(
WorldContextObject,
SelectorId
);
return UHyperTwistTrainingCoachLibrary::
DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDuplicatePruningSurvivorProvenancePreviewSurface(
RunState,
SelectorId,
OptionMenuSurface,
OptionLaunchRequestPreviewSurface
);
}
return FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDuplicatePruningSurvivorProvenancePreviewSurface();
}
TArray<FHyperTwistTrainingMethodSegment> UHyperTwistTrainingRuntimeLibrary::GetActiveTrainingLearnerMethodSegments(UObject* WorldContextObject)
{
if (UHyperTwistTrainingSubsystem* TrainingSubsystem = GetTrainingSubsystem(WorldContextObject))

View file

@ -454,6 +454,27 @@ public:
const FString& SelectorId
);
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach", meta = (WorldContext = "WorldContextObject"))
static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDetailRetentionPreviewSurface
GetActiveTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDetailRetentionPreviewSurface(
UObject* WorldContextObject,
const FString& SelectorId
);
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach", meta = (WorldContext = "WorldContextObject"))
static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhasePhaseIdLabelFallbackProvenancePreviewSurface
GetActiveTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhasePhaseIdLabelFallbackProvenancePreviewSurface(
UObject* WorldContextObject,
const FString& SelectorId
);
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach", meta = (WorldContext = "WorldContextObject"))
static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDuplicatePruningSurvivorProvenancePreviewSurface
GetActiveTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDuplicatePruningSurvivorProvenancePreviewSurface(
UObject* WorldContextObject,
const FString& SelectorId
);
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training", meta = (WorldContext = "WorldContextObject"))
static TArray<FHyperTwistTrainingMethodSegment> GetActiveTrainingLearnerMethodSegments(UObject* WorldContextObject);

View file

@ -68,8 +68,8 @@ Current correction call from the source-exposed audit and current execution refr
- the imported generated-mode gap is closed; request/config/selection plumbing and the bounded clean-room executor are already landed in first-party code
- the latest landed bounded `Phase 4` packet closes the retained-idle comparison/outcome actionability gap at the end of the recognition-assisted coach-to-review continuity lane, and the final retained-surface confirmation pass now leaves that closure lane functionally complete
- the retained idle widget surface now keeps retained comparison and decision history inspectable without continuing to advertise live launch or guidance-outcome actions once the coach-to-review loop has already collapsed to truthful closed-loop idle
- the latest landed bounded `Phase 4` packet stays on that same deliberate `UHyperTwistTrainingRuntimeLibrary` world-context consumer lane and adds active generated-mode selector option owned-execution delivery-mode roster/allowed-mode retention, real-scramble/virtual-cube/smart-cube capability retention, and timing-policy retention preview surfaces over the already-landed selector option launch-request preview surface plus active run state, so gameplay/Blueprint callers can explain retained delivery-mode coverage, modality capability posture, and timing-policy posture for one selector option without reading raw deck-capability or launch-policy derivation details directly
- the current next bounded packet should stay on that same runtime-library consumer lane only if a real world-context gameplay or Blueprint caller still needs one more thin derived coach/generated-mode display contract or displayed-action convenience helper over already-cached state; inside that lane the next aligned move is the runtime-library generated-mode selector option owned-execution split-phase detail retention, split-phase phase-id/label-fallback provenance, and split-phase duplicate-pruning/survivor provenance preview group, otherwise choose the next roadmap lane deliberately instead of extending runtime-consumer widening by drift
- the latest landed bounded `Phase 4` packet stays on that same deliberate `UHyperTwistTrainingRuntimeLibrary` world-context consumer lane and adds active generated-mode selector option owned-execution split-phase detail retention, split-phase phase-id/label-fallback provenance, and split-phase duplicate-pruning/survivor provenance preview surfaces over the already-landed selector option launch-request preview surface plus active run state, so gameplay/Blueprint callers can explain retained split-phase coverage, label-fallback provenance posture, and duplicate-pruning survivor posture for one selector option without reading raw split-phase rows or normalization derivation details directly
- the current next bounded packet should stay on that same runtime-library consumer lane only if a real world-context gameplay or Blueprint caller still needs one more thin derived coach/generated-mode display contract or displayed-action convenience helper over already-cached state; inside that lane the next aligned move is the runtime-library generated-mode selector option owned-execution split-phase normalization summary and split-phase raw-row/normalized-phase fusion preview group, otherwise choose the next roadmap lane deliberately instead of extending runtime-consumer widening by drift
- the current execution-discipline rule that broad refactor / monolith-splitting work should not interrupt the active bounded roadmap packet unless structure is actually blocking it
## Current execution-reality references

View file

@ -0,0 +1,52 @@
# HyperTwist Phase 4 runtime-library generated-mode selector option owned-execution split-phase detail retention, phase-id/label-fallback provenance, and duplicate-pruning/survivor provenance preview surface packet
- bounded Phase `4` runtime-consumer slice
- date: `2026-05-09`
## Intent
Stay on the deliberate `UHyperTwistTrainingRuntimeLibrary` world-context consumer lane and expose the next truthful owned-execution retained split-phase detail and provenance preview contracts above the already-landed owned-execution delivery-mode, capability, and timing-policy retention surfaces.
## Why this packet exists
The prior runtime-library packet let world-context callers explain retained delivery-mode coverage, modality capability posture, and timing-policy posture for one selector option.
But callers still had to inspect raw split-phase rows and normalization derivation details if they needed to explain:
- whether retained split-phase detail still survives into owned execute
- how phase id and explicit-label fallback provenance behave across those retained rows
- what duplicate-pruning and survivor posture applies before downstream normalization and inspect surfaces
That kept the runtime-library world-context seam behind the already-landed panel-widget and session-actor owned-execution split-phase preview lane.
## What changed
- added `GetActiveTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDetailRetentionPreviewSurface()`
- added `GetActiveTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhasePhaseIdLabelFallbackProvenancePreviewSurface()`
- added `GetActiveTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDuplicatePruningSurvivorProvenancePreviewSurface()`
- derived all three surfaces from the active run state, selected `SelectorId`, and the already-landed runtime-library selector option-menu and launch-request preview surfaces
- kept the runtime-library lane purely compositional over already-cached coach/generated-mode state without reopening backend derivation
## Files
- `C:\HyperTwist\UnrealHyperTwist\Source\UnrealHyperTwist\Public\HyperTwistTraining\HyperTwistTrainingRuntimeLibrary.h`
- `C:\HyperTwist\UnrealHyperTwist\Source\UnrealHyperTwist\Private\HyperTwistTraining\HyperTwistTrainingRuntimeLibrary.cpp`
- `C:\HyperTwist\docs\HYPERTWIST_ROADMAP_OVERHAUL_EXPANSION_GUIDE.md`
## Outcome
World-context gameplay and Blueprint callers can now ask the runtime library for:
- the truthful owned-execution split-phase detail retention preview for one selector option
- the truthful owned-execution split-phase phase-id / label-fallback provenance preview for one selector option
- the truthful owned-execution split-phase duplicate-pruning / survivor provenance preview for one selector option
without reading raw split-phase rows or normalization derivation details directly.
## Validation
- full `Development Editor | Win64` MSBuild on `UnrealHyperTwist.sln`
## Next clean slice
Stay on this runtime-library consumer lane only if a real world-context caller still needs one more thin derived coach/generated-mode display contract or displayed-action convenience helper over already-cached state. The next aligned move inside that lane would be the runtime-library generated-mode selector option owned-execution split-phase normalization summary and split-phase raw-row/normalized-phase fusion preview group, because those are the next truthful retained split-phase contracts above the newly-landed detail-retention and provenance preview surfaces.