Phase J-HM: Prokeimenon state ledgers and Alleluia ongoing-state boundary
- Add FHyperTwistTrainingValidationProkeimenonStateLedgerContract struct - Add FHyperTwistTrainingValidationOngoingStateAlleluiaBoundary struct - Populate bundle with J-HM validation entries - Implement TryGetById lookup functions - Add runtime library wrappers - Add focused automation tests - Canon sync: ROADMAP.md, KICKOFF.md
This commit is contained in:
parent
a79f00b303
commit
9380ef82a5
7 changed files with 340 additions and 2 deletions
|
|
@ -6507,6 +6507,30 @@ bool UHyperTwistTrainingRuntimeLibrary::TryGetBundledValidationOngoingStateSynap
|
|||
);
|
||||
}
|
||||
|
||||
bool UHyperTwistTrainingRuntimeLibrary::TryGetBundledValidationProkeimenonStateLedgerContract(
|
||||
const FString& ContractId,
|
||||
FHyperTwistTrainingValidationProkeimenonStateLedgerContract& OutContract
|
||||
)
|
||||
{
|
||||
return UHyperTwistTrainingValidationBenchmarkLibrary::TryGetValidationProkeimenonStateLedgerContractById(
|
||||
GetBundledValidationBenchmarkReferenceBundle(),
|
||||
ContractId,
|
||||
OutContract
|
||||
);
|
||||
}
|
||||
|
||||
bool UHyperTwistTrainingRuntimeLibrary::TryGetBundledValidationOngoingStateAlleluiaBoundary(
|
||||
const FString& BoundaryId,
|
||||
FHyperTwistTrainingValidationOngoingStateAlleluiaBoundary& OutBoundary
|
||||
)
|
||||
{
|
||||
return UHyperTwistTrainingValidationBenchmarkLibrary::TryGetValidationOngoingStateAlleluiaBoundaryById(
|
||||
GetBundledValidationBenchmarkReferenceBundle(),
|
||||
BoundaryId,
|
||||
OutBoundary
|
||||
);
|
||||
}
|
||||
|
||||
FString UHyperTwistTrainingRuntimeLibrary::BuildBundledValidationBenchmarkPackageChecklistTsv()
|
||||
{
|
||||
return UHyperTwistTrainingValidationBenchmarkLibrary::BuildPackageChecklistTsv(
|
||||
|
|
|
|||
|
|
@ -22543,6 +22543,72 @@ UHyperTwistTrainingValidationBenchmarkLibrary::BuildBundledValidationBenchmarkRe
|
|||
);
|
||||
Bundle.ValidationOngoingStateSynapteBoundaries = {OngoingStateSynapteBoundary};
|
||||
|
||||
FHyperTwistTrainingValidationProkeimenonStateLedgerContract ProkeimenonStateLedgerContract;
|
||||
ProkeimenonStateLedgerContract.ContractId = TEXT("validation-prokeimenon-state-ledger-contract");
|
||||
ProkeimenonStateLedgerContract.Title = TEXT("Prokeimenon State Ledger Contract");
|
||||
ProkeimenonStateLedgerContract.Summary = TEXT("Bounded first-party validation prokeimenon-state ledger contract for HyperTwist training.");
|
||||
ProkeimenonStateLedgerContract.RequiredPackageIds =
|
||||
{
|
||||
TEXT("UnrealHyperTwist")
|
||||
};
|
||||
ProkeimenonStateLedgerContract.LedgerIds =
|
||||
{
|
||||
TEXT("validation-prokeimenon-state-ledger-contract")
|
||||
};
|
||||
ProkeimenonStateLedgerContract.LedgerSurfaceTags =
|
||||
{
|
||||
TEXT("bounded prokeimenon-state ledger"),
|
||||
TEXT("runtime evidence prokeimenon-state ledger")
|
||||
};
|
||||
ProkeimenonStateLedgerContract.ProkeimenonGuardTags =
|
||||
{
|
||||
TEXT("no-generic-prokeimenon-platform guard"),
|
||||
TEXT("bounded same-lane prokeimenon guard")
|
||||
};
|
||||
ProkeimenonStateLedgerContract.ExplicitExclusions =
|
||||
{
|
||||
TEXT("generic prokeimenon platform ownership"),
|
||||
TEXT("cross-product prokeimenon ownership")
|
||||
};
|
||||
ProkeimenonStateLedgerContract.SourceAttribution = MakeFirstPartyAttribution(
|
||||
TEXT("first-party/validation-prokeimenon-state-ledger-contract"),
|
||||
TEXT("Owns bounded HyperTwist validation prokeimenon-state ledger posture without widening into prokeimenon-state platforms, prokeimenon-state systems, or release authority.")
|
||||
);
|
||||
Bundle.ValidationProkeimenonStateLedgerContracts = {ProkeimenonStateLedgerContract};
|
||||
|
||||
FHyperTwistTrainingValidationOngoingStateAlleluiaBoundary OngoingStateAlleluiaBoundary;
|
||||
OngoingStateAlleluiaBoundary.BoundaryId = TEXT("validation-ongoing-state-alleluia-boundary");
|
||||
OngoingStateAlleluiaBoundary.Title = TEXT("Ongoing State Alleluia Boundary");
|
||||
OngoingStateAlleluiaBoundary.Summary = TEXT("Bounded first-party validation ongoing-state alleluia boundary for HyperTwist training.");
|
||||
OngoingStateAlleluiaBoundary.RequiredPackageIds =
|
||||
{
|
||||
TEXT("UnrealHyperTwist")
|
||||
};
|
||||
OngoingStateAlleluiaBoundary.AlleluiaIds =
|
||||
{
|
||||
TEXT("validation-ongoing-state-alleluia-boundary")
|
||||
};
|
||||
OngoingStateAlleluiaBoundary.AlleluiaSurfaceTags =
|
||||
{
|
||||
TEXT("bounded ongoing-state alleluia"),
|
||||
TEXT("runtime evidence ongoing-state alleluia")
|
||||
};
|
||||
OngoingStateAlleluiaBoundary.AlleluiaGuardTags =
|
||||
{
|
||||
TEXT("no-generic-ongoing-alleluia-platform guard"),
|
||||
TEXT("bounded same-lane ongoing-alleluia guard")
|
||||
};
|
||||
OngoingStateAlleluiaBoundary.ExplicitExclusions =
|
||||
{
|
||||
TEXT("generic ongoing alleluia platform ownership"),
|
||||
TEXT("cross-product ongoing alleluia ownership")
|
||||
};
|
||||
OngoingStateAlleluiaBoundary.SourceAttribution = MakeFirstPartyAttribution(
|
||||
TEXT("first-party/validation-ongoing-state-alleluia-boundary"),
|
||||
TEXT("Owns bounded HyperTwist validation ongoing-state alleluia posture without widening into ongoing-alleluia platforms, ongoing-alleluia systems, or release authority.")
|
||||
);
|
||||
Bundle.ValidationOngoingStateAlleluiaBoundaries = {OngoingStateAlleluiaBoundary};
|
||||
|
||||
return Bundle;
|
||||
}
|
||||
UE_ENABLE_OPTIMIZATION
|
||||
|
|
@ -30945,6 +31011,44 @@ bool UHyperTwistTrainingValidationBenchmarkLibrary::TryGetValidationOngoingState
|
|||
return false;
|
||||
}
|
||||
|
||||
bool UHyperTwistTrainingValidationBenchmarkLibrary::TryGetValidationProkeimenonStateLedgerContractById(
|
||||
const FHyperTwistTrainingValidationBenchmarkReferenceBundle& Bundle,
|
||||
const FString& ContractId,
|
||||
FHyperTwistTrainingValidationProkeimenonStateLedgerContract& OutContract
|
||||
)
|
||||
{
|
||||
for (const FHyperTwistTrainingValidationProkeimenonStateLedgerContract& Contract : Bundle.ValidationProkeimenonStateLedgerContracts)
|
||||
{
|
||||
if (Contract.ContractId == ContractId)
|
||||
{
|
||||
OutContract = Contract;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
OutContract = FHyperTwistTrainingValidationProkeimenonStateLedgerContract();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool UHyperTwistTrainingValidationBenchmarkLibrary::TryGetValidationOngoingStateAlleluiaBoundaryById(
|
||||
const FHyperTwistTrainingValidationBenchmarkReferenceBundle& Bundle,
|
||||
const FString& BoundaryId,
|
||||
FHyperTwistTrainingValidationOngoingStateAlleluiaBoundary& OutBoundary
|
||||
)
|
||||
{
|
||||
for (const FHyperTwistTrainingValidationOngoingStateAlleluiaBoundary& Boundary : Bundle.ValidationOngoingStateAlleluiaBoundaries)
|
||||
{
|
||||
if (Boundary.BoundaryId == BoundaryId)
|
||||
{
|
||||
OutBoundary = Boundary;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
OutBoundary = FHyperTwistTrainingValidationOngoingStateAlleluiaBoundary();
|
||||
return false;
|
||||
}
|
||||
|
||||
FString UHyperTwistTrainingValidationBenchmarkLibrary::BuildPackageChecklistTsv(
|
||||
const FHyperTwistTrainingValidationBenchmarkReferenceBundle& Bundle
|
||||
)
|
||||
|
|
|
|||
|
|
@ -3134,6 +3134,18 @@ public:
|
|||
FHyperTwistTrainingValidationOngoingStateSynapteBoundary& OutBoundary
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "HyperTwist|Training|Validation")
|
||||
static bool TryGetBundledValidationProkeimenonStateLedgerContract(
|
||||
const FString& ContractId,
|
||||
FHyperTwistTrainingValidationProkeimenonStateLedgerContract& OutContract
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "HyperTwist|Training|Validation")
|
||||
static bool TryGetBundledValidationOngoingStateAlleluiaBoundary(
|
||||
const FString& BoundaryId,
|
||||
FHyperTwistTrainingValidationOngoingStateAlleluiaBoundary& OutBoundary
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Validation")
|
||||
static FString BuildBundledValidationBenchmarkPackageChecklistTsv();
|
||||
|
||||
|
|
|
|||
|
|
@ -16834,6 +16834,82 @@ struct FHyperTwistTrainingValidationOngoingStateSynapteBoundary
|
|||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingValidationProkeimenonStateLedgerContract
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString ContractId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString Title;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString Summary;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> RequiredPackageIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> LedgerIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> LedgerSurfaceTags;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> ProkeimenonGuardTags;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> ExplicitExclusions;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FHyperTwistTrainingSourceAttribution SourceAttribution;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !ContractId.IsEmpty() && !Title.IsEmpty() && SourceAttribution.IsStructurallyValid();
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingValidationOngoingStateAlleluiaBoundary
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString BoundaryId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString Title;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString Summary;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> RequiredPackageIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> AlleluiaIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> AlleluiaSurfaceTags;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> AlleluiaGuardTags;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> ExplicitExclusions;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FHyperTwistTrainingSourceAttribution SourceAttribution;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !BoundaryId.IsEmpty() && !Title.IsEmpty() && SourceAttribution.IsStructurallyValid();
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingValidationBenchmarkReferenceBundle
|
||||
{
|
||||
|
|
@ -18168,6 +18244,12 @@ struct FHyperTwistTrainingValidationBenchmarkReferenceBundle
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PrimaryValidationOngoingStateSynapteBoundaryId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PrimaryValidationProkeimenonStateLedgerContractId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PrimaryValidationOngoingStateAlleluiaBoundaryId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FHyperTwistTrainingValidationBenchmarkPackageReference> PackageReferences;
|
||||
|
||||
|
|
@ -19497,6 +19579,12 @@ struct FHyperTwistTrainingValidationBenchmarkReferenceBundle
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FHyperTwistTrainingValidationOngoingStateSynapteBoundary> ValidationOngoingStateSynapteBoundaries;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FHyperTwistTrainingValidationProkeimenonStateLedgerContract> ValidationProkeimenonStateLedgerContracts;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FHyperTwistTrainingValidationOngoingStateAlleluiaBoundary> ValidationOngoingStateAlleluiaBoundaries;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !PrimaryReplayIntegrityContractId.IsEmpty()
|
||||
|
|
@ -23039,6 +23127,20 @@ public:
|
|||
FHyperTwistTrainingValidationOngoingStateSynapteBoundary& OutBoundary
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "HyperTwist|Training|Validation")
|
||||
static bool TryGetValidationProkeimenonStateLedgerContractById(
|
||||
const FHyperTwistTrainingValidationBenchmarkReferenceBundle& Bundle,
|
||||
const FString& ContractId,
|
||||
FHyperTwistTrainingValidationProkeimenonStateLedgerContract& OutContract
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "HyperTwist|Training|Validation")
|
||||
static bool TryGetValidationOngoingStateAlleluiaBoundaryById(
|
||||
const FHyperTwistTrainingValidationBenchmarkReferenceBundle& Bundle,
|
||||
const FString& BoundaryId,
|
||||
FHyperTwistTrainingValidationOngoingStateAlleluiaBoundary& OutBoundary
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Validation")
|
||||
static FString BuildPackageChecklistTsv(const FHyperTwistTrainingValidationBenchmarkReferenceBundle& Bundle);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -0,0 +1,91 @@
|
|||
#include "HyperTwistTraining/HyperTwistTrainingRuntimeLibrary.h"
|
||||
|
||||
#include "Misc/AutomationTest.h"
|
||||
|
||||
IMPLEMENT_SIMPLE_AUTOMATION_TEST(
|
||||
FHyperTwistValidationPhaseJHMProkeimenonStateLedgerContractTest,
|
||||
"HyperTwist.Validation.PhaseJHM.ProkeimenonStateLedgerContract",
|
||||
EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter
|
||||
)
|
||||
|
||||
bool FHyperTwistValidationPhaseJHMProkeimenonStateLedgerContractTest::RunTest(const FString& Parameters)
|
||||
{
|
||||
FHyperTwistTrainingValidationProkeimenonStateLedgerContract Contract;
|
||||
const bool bResolved = UHyperTwistTrainingRuntimeLibrary::TryGetBundledValidationProkeimenonStateLedgerContract(
|
||||
TEXT("validation-prokeimenon-state-ledger-contract"),
|
||||
Contract);
|
||||
|
||||
TestTrue(
|
||||
TEXT("The validation prokeimenon-state ledger contract must resolve from the runtime library."),
|
||||
bResolved);
|
||||
if (!bResolved)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TestEqual(
|
||||
TEXT("The validation prokeimenon-state ledger contract id must stay stable."),
|
||||
Contract.ContractId,
|
||||
FString(TEXT("validation-prokeimenon-state-ledger-contract")));
|
||||
TestTrue(
|
||||
TEXT("The validation prokeimenon-state ledger contract must be structurally valid."),
|
||||
Contract.IsStructurallyValid());
|
||||
TestTrue(
|
||||
TEXT("The validation prokeimenon-state ledger contract must carry first-party source attribution."),
|
||||
Contract.SourceAttribution.IsStructurallyValid());
|
||||
TestTrue(
|
||||
TEXT("The validation prokeimenon-state ledger contract must carry at least one ledger id."),
|
||||
Contract.LedgerIds.Num() > 0);
|
||||
TestTrue(
|
||||
TEXT("The validation prokeimenon-state ledger contract must carry at least one guard tag."),
|
||||
Contract.ProkeimenonGuardTags.Num() > 0);
|
||||
TestTrue(
|
||||
TEXT("The validation prokeimenon-state ledger contract must carry at least one explicit exclusion."),
|
||||
Contract.ExplicitExclusions.Num() > 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
IMPLEMENT_SIMPLE_AUTOMATION_TEST(
|
||||
FHyperTwistValidationPhaseJHMOngoingStateAlleluiaBoundaryTest,
|
||||
"HyperTwist.Validation.PhaseJHM.OngoingStateAlleluiaBoundary",
|
||||
EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter
|
||||
)
|
||||
|
||||
bool FHyperTwistValidationPhaseJHMOngoingStateAlleluiaBoundaryTest::RunTest(const FString& Parameters)
|
||||
{
|
||||
FHyperTwistTrainingValidationOngoingStateAlleluiaBoundary Boundary;
|
||||
const bool bResolved = UHyperTwistTrainingRuntimeLibrary::TryGetBundledValidationOngoingStateAlleluiaBoundary(
|
||||
TEXT("validation-ongoing-state-alleluia-boundary"),
|
||||
Boundary);
|
||||
|
||||
TestTrue(
|
||||
TEXT("The validation ongoing-state alleluia boundary must resolve from the runtime library."),
|
||||
bResolved);
|
||||
if (!bResolved)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TestEqual(
|
||||
TEXT("The validation ongoing-state alleluia boundary id must stay stable."),
|
||||
Boundary.BoundaryId,
|
||||
FString(TEXT("validation-ongoing-state-alleluia-boundary")));
|
||||
TestTrue(
|
||||
TEXT("The validation ongoing-state alleluia boundary must be structurally valid."),
|
||||
Boundary.IsStructurallyValid());
|
||||
TestTrue(
|
||||
TEXT("The validation ongoing-state alleluia boundary must carry first-party source attribution."),
|
||||
Boundary.SourceAttribution.IsStructurallyValid());
|
||||
TestTrue(
|
||||
TEXT("The validation ongoing-state alleluia boundary must carry at least one alleluia id."),
|
||||
Boundary.AlleluiaIds.Num() > 0);
|
||||
TestTrue(
|
||||
TEXT("The validation ongoing-state alleluia boundary must carry at least one guard tag."),
|
||||
Boundary.AlleluiaGuardTags.Num() > 0);
|
||||
TestTrue(
|
||||
TEXT("The validation ongoing-state alleluia boundary must carry at least one explicit exclusion."),
|
||||
Boundary.ExplicitExclusions.Num() > 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1411,6 +1411,11 @@ The next bounded move is now:
|
|||
526. keep the ectenia-and-synapte guard visible:
|
||||
- keep ectenia-state ledgers and ongoing-state synapte scoped to bounded runtime evidence ectenia continuity
|
||||
- do not widen them into ectenia-state platforms, ongoing synapte systems, generic dashboards, or release authority
|
||||
527. the bounded first-party `Phase J-HM`
|
||||
validation prokeimenon-state ledgers and bounded ongoing-state alleluia is now landed in current code
|
||||
528. keep the prokeimenon-and-alleluia guard visible:
|
||||
- keep prokeimenon-state ledgers and ongoing-state alleluia scoped to bounded runtime evidence prokeimenon continuity
|
||||
- do not widen them into prokeimenon-state platforms, ongoing alleluia systems, generic dashboards, or release authority
|
||||
71. keep the `MagicTile` guard visible:
|
||||
- keep broad non-Euclidean interaction or WinForms/OpenTK host-shell ownership closed by
|
||||
default unless a narrower first-party gap is proven above the landed macro-remapping seam
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ Current consolidated milestone snapshot:
|
|||
`Phase 6R-AZ`, with the bounded first-party memory lane closed through `Phase 6R-M6`
|
||||
- the bounded first-party skillization ladder is now landed through `Phase S7-C`
|
||||
- the bounded first-party immersive scaffold is now landed through `Phase I-E`
|
||||
- the bounded first-party validation and benchmarking ladder is now landed through `Phase J-HL`
|
||||
- the current next deliberate runtime milestone is `Phase J-HM`; `L` and `M–Z` remain future
|
||||
- the bounded first-party validation and benchmarking ladder is now landed through `Phase J-HM`
|
||||
- the current next deliberate runtime milestone is `Phase J-HN`; `M` and `N–Z` remain future
|
||||
expansion lanes rather than already-landed debt
|
||||
- Unreal C++ slices are not considered fully validated from symbol/doc/whitespace checks alone;
|
||||
the canonical Windows Unreal build doctrine now lives in
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue