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
3.2 KiB
Linux 42 — resolved boundary capabilities
Migration step 6 is a Core-only pure refactor. No Unreal source changed.
Policy records
ResolvedLayoutSnapshotV3::finalize resolves the existing generator and interface fields once into
runtime capabilities. ApplyResolvedStrateBoundaryBand reads
lowerInterfaceCapabilities.preserveUpperBedrockAirGap for the FI Gradient gap. Passage composition
reads passageCapabilities.hasSurfaceLanding for the SW landing/bridge profile and crossing extent,
hasFloatingIslandLanding for the FI route support, and usePassageAnchorForColumns for its fixed
passage-column center. surfaceToTunnelLandingSupport records the SW-to-TunnelNetwork floor profile.
The derived records are omitted from canonical JSON, so the resolved layout identity is unchanged.
BindResolvedStratumFields still checks generatorKind once to bind SurfaceWorld, FloatingIslands,
or legacy evaluation. finalize maps that resolved kind to capabilities once. PlanResolvedLayoutPassagesV1
still names SurfaceWorld/FloatingIslands for existing default mouth and anchor placement; that passage
planning policy remains outside this boundary-composition step.
Ceiling → content → breakable bedrock order remains unchanged for every strate. The upper strate still controls Hard/Gradient/Interleaved. L29 transition sample arithmetic and the passage-mouth fade are unchanged.
Hashes and cost
Source stamp: a3a65e58a670399d9458aa2a9c99eddd7b541671f919a293f5b4086878e9eb78.
FI layout ID b7a7d9ecc48d8f26; SW layout ID 8a52e84c26ed92d2. All four 12-record FI/SW worker-1
and worker-12 hash signatures match L41 exactly: FI
9820f4f38b189b3f7263810e7b3ff62aa502b21f476ffcfdbc7761a65cb07d58; SW
a1e9268a4bbcc77d2a1ac54095df6851a70bab65c43ae50b332ed75132617834. Worker-1 and worker-12 match
each other for both recipes.
Full-tier five-pair whole-view-ready cost versus HEAD 1abee917215cd6f971e39dd3158cecf4c9992fbe:
FI median 18.164 s → 18.189 s (+0.14%); SW 1.888 s → 1.877 s (−0.58%). No measured cost
regression.
Verification
| Tier | Result |
|---|---|
| Fast | PASS, 163.2 s; owner hashes, worker parity, and ring gates pass. |
| Medium | PASS, 469.9 s; transition modes, hole controls, route proofs, owner passage matrix, ring and capture gates pass. |
| Full | PASS, 1,637.0 s; 107 runs and 539 checks, including Clang/GCC, 30-cell determinism and paired cost. |
Full used clean Clang 19 and GCC 14 builds from Saved/Linux/l42/final-clean-build, -j12, FP
contraction off. The final source stamp was embedded in both binaries. All processes used CPUs 0–11,
the 6 GiB address-space limit, and a 30-minute process timeout.
The first fast invocation stopped before running checks because the L42 binary had not yet been built; fast passed after the build. The mislabelled-owner and all-black capture negative controls are expected rejections and passed their verifier checks. No tier had an unexpected failed run.
Orchestrator review (Claude)
Accepted. The current tree stamp equals both L42 binaries (a3a65e58…), so the fast/medium/full evidence is from this exact source. Owner hashes are identical to L41. Passage planning (PlanResolvedLayoutPassagesV1) still names generators; that is a later step.