UVoxelStrateManager::Initialize resolves the layout width to integer micrometres before passages or scheduling; each slot stores physical [bottom, top) bounds, transition mode/width and passage settings; chunk indices remain a floor-based compatibility projection. The Core adapter derives interiors and L29 bands from those resolved values. verify: full-tier cost baseline is HEAD (or --baseline), tier timeout 7200 s with 1800 s per process; the source stamp now includes the plugin Source tree compiled on Linux (it previously missed VoxelStrateManager.cpp and friends). Owner hashes identical to L37; fast, medium and full PASS on a clean rebuild. Unreal manager/adapter edits are uncompiled on Windows. Research R8: inventory of unit-bearing UPROPERTYs and a custom-version asset migration plan. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
5.0 KiB
Linux 41 — resolved metre layout
Migration step 3 is implemented as a pure refactor. The verifier, manager and Core adapter changes are in the working tree; nothing was committed or pushed.
Tool changes
Full-tier cost now builds a stamped baseline from HEAD by default; --baseline <commit> selects another commit. The build uses a temporary source tree. --overall-timeout defaults to 7,200 seconds for the tier. Each child process is killed at 1,800 seconds; builds remain capped at 12 jobs and the runner applies the requested CPU and address-space limits.
Runtime authority
UVoxelStrateManager::Initialize resolves the configured layout width to integer micrometres before passage generation or scheduling. Slot height and gap are legacy chunk counts multiplied by that width. Each slot stores its physical [bottom, top) bounds and height, transition mode and width, copied passage settings and their micrometre dimensions. The effective seed is captured before passage generation. The Core adapter derives its interior bounds and L29 facing bands from those resolved values before work is scheduled.
The existing 8 m layout remains exact: the first upper edge is +8,000,000 µm; each height, gap or transition chunk is 8,000,000 µm. Chunk bounds are floor-based compatibility projections, including at negative Z. Season v2 still accepts only aligned, correctly stacked chunk bounds, then maps them to the same physical intervals. L29's bands keep their original faces: ceiling [top-seal, top], content [bottom+seal, top-seal], and bedrock [bottom, bottom+seal]; seal is the existing boundary-seal thickness converted from owner voxels to micrometres. Shared density and transition behavior are unchanged.
R6’s FI/SW split was already resolved: both plans and the snapshot use the same LayoutChunkWidthSubvoxels derived from the layout width. At the 25 cm Core voxel size, 8 m remains 32 Core voxels (8,192 subvoxels). Layout bounds do not use an owner/Core ratio. Ratios remain only in the legacy FloatingIslands parameter adapter. The legacy passage geometry adapter converts resolved passage micrometres back to owner voxels at its boundary.
Chunk indices remain in chunk-keyed compatibility APIs: GetStrateForChunk, generator and parameter queries, season-v2 validation, and legacy generator dispatch. They read the cached projection; world-Z lookup and Core snapshot bounds use physical intervals. L40’s bound Core field table remains the per-sample dispatch path and adds no manager lookup.
Results
The final source stamp is f35bc59c6172370e98dc83ec8ee5ba51dfab83a3faf075c26189fc83172f4ac8; artifacts are in Saved/Linux/l41. The four 12-record FI/SW worker-1/worker-12 hash signatures match L40 exactly: FI 9820f4f38b189b3f7263810e7b3ff62aa502b21f476ffcfdbc7761a65cb07d58; SW a1e9268a4bbcc77d2a1ac54095df6851a70bab65c43ae50b332ed75132617834. W1 and W12 also match each other. Layout IDs are FI b7a7d9ecc48d8f26 and SW 8a52e84c26ed92d2.
| Tier | Result |
|---|---|
| Fast | PASS, 163.1 s; 12/12 hashes for each recipe, worker parity and L40 identity pass. |
| Medium | PASS, 469.0 s; all checks pass, including transition and passage gates. |
| Full | PASS, 1,567.1 s; 107 runs and 539 checks, including the 30-cell determinism gate and cost pairs. |
Full cost compares against HEAD efa9e89468cbab702c86fcbe451c8836167ae83a. FI median is 17.627 s versus 17.665 s (−0.22%); SW is 1.819 s versus 1.821 s (−0.11%). The paired samples vary by up to +2.29% for FI and +1.27% for SW; neither median regressed.
Failed attempts: an initial verifier edit had an IndentationError; an overlapping fast run hit a mouth-profile failure, then the serial fast run passed. The first full attempt passed its gates but failed when the baseline build’s output name did not match the expected path. The corrected baseline name was rebuilt from HEAD; the final full run passed. Expected negative-control rejections passed their checks.
Unreal changes are limited to VoxelStrateManager.h/.cpp and VoxelForgeCoreAdapter.cpp; CODEMAP.md and ARCHITECTURE.md §8.51 are updated. The Unreal manager and adapter could not be compiled in this Linux workspace; validate them with the Windows Unreal build before integration.
Orchestrator review (Claude)
Accepted after a re-check. The source stamp did not cover the plugin sources that core_sources.txt compiles into
the Linux binaries (for example Source/VoxelForge/Private/VoxelStrateManager.cpp). So L41's stamp equalled
L40's, and the tiers could not prove that they ran the edited manager. Fixed in source_stamp.py: the whole plugin
Source/VoxelForge tree and Standalone/Compat are now always stamped. Clean rebuild of both compilers (new stamp
15cd0a95…): fast PASS (owner hashes identical to L37), medium PASS, full PASS (1569 s; cost vs HEAD FI +0.71%,
SW +0.55%, within noise).
Owner decisions since R8 (2026-10-23): converted assets may change size slightly, so clean metre values beat lossless legacy conversion. Cache sharing between players is optional (opt-in, with a data budget).