refactor(core): boundary policy as resolved capabilities, not generator-name tests (L42, step 6); R9
ResolvedLayoutSnapshotV3::finalize maps each strate's generator and interface once into capability records (FI gradient air-gap, surface/FI landing support, passage-anchor columns, SW-to-TN floor); ApplyResolvedStrateBoundaryBand and passage composition read those instead of generator kinds. Derived records stay out of canonical JSON, so layout identity is unchanged. Owner hashes identical to L41; fast/medium/full PASS on clean Clang and GCC builds; cost within noise. Research R9 (read-only): player-visible roadmap refresh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
This commit is contained in:
1 parent
1abee91721
commit
2566f53734
8 files changed
+204
-15
No files matched your search
@@ -409,6 +409,26 @@ bool ResolvedLayoutSnapshotV3::finalize(std::string& error)
|
||||
if(x.bedrock.kind.empty())x.bedrock.kind="bedrock";
|
||||
if(x.interiorTopMicrometres<=x.interiorBottomMicrometres||x.voxelSizeMicrometres==0)
|
||||
{error="resolved layout contains an invalid interior interval or voxel size";return false;}
|
||||
|
||||
// Materialize generator-specific composition policy at layout resolution. The
|
||||
// sampling/composition path consumes these capabilities without examining names.
|
||||
x.passageCapabilities={};
|
||||
x.lowerInterfaceCapabilities={};
|
||||
if(x.generatorKind=="SurfaceWorld")
|
||||
x.passageCapabilities.hasSurfaceLanding=true;
|
||||
else if(x.generatorKind=="FloatingIslands")
|
||||
{
|
||||
x.passageCapabilities.hasFloatingIslandLanding=true;
|
||||
x.passageCapabilities.usePassageAnchorForColumns=true;
|
||||
}
|
||||
if(i+1<strates.size())
|
||||
{
|
||||
const auto& lower=strates[i+1];
|
||||
x.lowerInterfaceCapabilities.preserveUpperBedrockAirGap=
|
||||
x.generatorKind=="FloatingIslands"&&x.transitionMode=="Gradient";
|
||||
x.lowerInterfaceCapabilities.surfaceToTunnelLandingSupport=
|
||||
x.generatorKind=="SurfaceWorld"&&lower.generatorKind=="TunnelNetwork";
|
||||
}
|
||||
}
|
||||
const std::int64_t playerCenterAboveFloorQ=static_cast<std::int64_t>(std::llround(
|
||||
1.13*WorldAssemblySubvoxelsPerVoxel*1000000.0/coreVoxelSizeMicrometres));
|
||||
|
||||
Reference in new issue
Block a user