Files
VoxelForge/Standalone/Research/WorldAssemblerM3/Linux22/REPORT.md
T
Fr0zkaandClaude Opus 5.5 55c26a05a7 wip(assembler): round L22 -- one 8 m layout chunk for every strate; real ceiling -> content -> bedrock
StrateLayoutChunkSizeMeters (world setting, default 8 m; owner decision) is resolved once in
the director/adapter and standalone loader; every generator reads the resolved width (no
CHUNK_SIZE / Core-tile inference). Every strate gets solid ceiling and bedrock bands from its
BoundarySealThickness in the shared composition path (diggable by default); faces come from the
shared boundary path. Owner world: FloatingIslands +8..-120 m (128 m, now with a bedrock floor),
SurfaceWorld -120..-632 m (unchanged; full-detail and exact-query hashes equal L21); the 60 m gap is
gone. The strict layout validator passes on the real world, with 0 endpoint dispatch
disagreements. Spawn/benchmark camera derived from route.front. Ledges under the islands gone
(reviewer capture). Evaluator 7, recipe schema 2, layout snapshot 2, FI geometry 4.
Open: SW cap profiles exceed the ceiling band (owner call); transitions still Hard; Unreal
setting/manager/adapter edits uncompiled here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CSFYgsdW8ejZSyiMf4qRSX
2026-10-20 12:03:14 +02:00

15 KiB
Raw Blame History

Linux22 — one strate-layout unit and the closed stack

The owner setting is now 8 m per layout chunk for every generator. FloatingIslands spans +8 to −120 m (128 m) and SurfaceWorld spans −120 to −632 m (512 m). Their shared boundary is −120 m, so the old 60 m gap is gone. SurfaceWorld keeps the same physical interval and content field as L21.

Stack and bands

Strate Full interval Ceiling Content Bedrock
FloatingIslands +8…−120 m +7.5…+8 m (0.5 m) +7.5…−119.5 m (127 m) −119.5…−120 m (0.5 m)
SurfaceWorld −120…−632 m −120…−126.25 m (6.25 m) −126.25…−625.75 m (499.5 m) −625.75…−632 m (6.25 m)
z=+8.00 m    FloatingIslands ceiling outer face
z=+7.50 m    FloatingIslands content begins
             Islands: bottoms −63.468…−60.912 m; tops −57.419…−52.357 m
z=−119.50 m  FloatingIslands bedrock inner face
z=−120.00 m  FI/SW boundary: FI bedrock meets SW ceiling; no gap
z=−126.25 m  SurfaceWorld content begins; cap profiles rise above here
z=−625.75 m  SurfaceWorld bedrock inner face
z=−632.00 m  SurfaceWorld bedrock outer face

The alternate owner SurfaceWorld recipe also exercises TunnelNetwork above it: TunnelNetwork uses the same +8…−120 m interval, with a 1 m ceiling, 126 m content band, and 1 m bedrock band. Every tested strate type receives both solid bands in the shared composition path. Existing BoundarySealThickness supplies each band’s thickness: TunnelNetwork 8 owner voxels = 1 m, FloatingIslands 4 = 0.5 m, SurfaceWorld 50 = 6.25 m. BaseDensity supplies solid density. Bands are diggable and unprotected by default. InterStrateGapChunks=0 controls spacing, not band thickness; EdgeSealThickness remains horizontal. No new thickness parameter was needed.

Visible ceilings use the shared L18/L19 boundary path, extended to floors. The authored transitions are Gradient (blend widths 2 chunks for the upper strate and 1 for SurfaceWorld), but Core still uses the explicit Hard fallback with zero interpenetration. The snapshot records this deviation; Gradient and Interleaved blending are not claimed as implemented.

Unit resolution and validation

StrateLayoutChunkSizeMeters is one world setting with an 8.0 m default. The director/adapter and standalone loader resolve it to micrometres and Core fixed-point width. At 25 cm Core voxels the width is 8,192 subvoxels = 32 Core voxels; at the S1 20 cm check it is 10,240 subvoxels = 40 Core voxels. The internal 32³ Core tile remains a separate concept.

Changed conversion and consumer sites:

  • UVoxelStrateManager resolves the world setting; VoxelForgeCoreAdapter::AttachValidatedWorldAssembly passes one fixed-point width into recipes and ResolvedLayoutSnapshotV2. OwnerWorldLoader::Resolve mirrors that resolution in the standalone path.
  • BuildSurfaceStratumPlan now scales chunk bounds by the resolved width instead of CHUNK_SIZE (32 Core voxels). BuildFloatingIslandStratumPlan writes the same width into geometry version 4.
  • NativeSurfaceDensityAt and native SurfaceWorld strata classification use snapshot width for floor(CoreZ / width) and bounds. FloatingIslands dispatch uses its validated snapshot recipe width. Legacy TunnelNetwork chunk lookup uses the same snapshot width.
  • Shared ceiling and floor composition, far-shell clipping, cap bounds, endpoint probes, and strict layout validation use the resolved width. FloatingIslandManifestV1::FromJson no longer reconstructs legacy width from Core tile size or owner/Core voxel ratio; world assembly supplies and validates the resolved value.

Current owner snapshots:

  • SurfaceWorld recipe: resolved-layout-v2-fnv64:96d6a8b64f73c2d8.
  • FloatingIslands recipe: resolved-layout-v2-fnv64:2b343bc155f181d5.
  • 20 cm S1 snapshot: resolved-layout-v2-fnv64:0a56caef7dd44cac.

Strict validation passed on the generated owner world for both recipes: zero issues, 7/7 negative controls rejected, and 27 boundary probes per recipe with zero dispatch/snapshot disagreements. Both stacks have zero unowned gap and zero undeclared band overlap. The 20 cm snapshot also passed strict validation.

SurfaceWorld clearance and spawn

The clearance scan samples a 4,096 × 4,096 m area at 1 m spacing around the derived route spawn (16,785,409 samples). Clearance is ceiling inner face minus the higher of ground and cap. Negative values mean a cap pokes through the ceiling at −126.25 m.

Biome slot / ID Max ground Max cap/surface Minimum sampled clearance
0 / 4097 −442.333 m −44.496 m −81.754 m
1 / 4098 −313.660 m −30.881 m −95.369 m
2 / 4099 −419.399 m −0.425 m −125.825 m
3 / 4100 −361.088 m −109.922 m −16.328 m

Ground/mountain surfaces stay below −313.660 m in this scan. The collisions come from cap profiles: authored CeilingUndulation is 1000 or 900 Core voxels (250 m or 225 m). They were not clamped. The owner can raise the strate or reduce those cap profiles. Since SurfaceWorld’s interval and content are unchanged from L21, this clearance issue is unchanged too.

The SurfaceWorld plan produces 33 route points. The L1 benchmark and spawn camera now derive from route.front: (9.250, 41.250, −502.848) m, yaw 0°, pitch −22°. Route planning passed (648 candidates, 366 grade rejects, zero sweep rejects); walkability passed 5,642/5,642. The highest route point is −501.714 m, giving 375.464 m clearance to the ceiling face. FloatingIslands walkability passed 4,000/4,000.

Island Bottom…top Bedrock margin Ceiling margin
0 −62.700…−57.419 m 56.800 m 64.919 m
1 −61.410…−56.000 m 58.090 m 63.500 m
2 −63.468…−55.878 m 56.032 m 63.378 m
3 −60.912…−52.357 m 58.588 m 59.857 m

Captures

All six L22 captures are 1600×900 JPEGs under 50 KB (limit 300 KB). SurfaceWorld images compare with L19’s same-named views. The FI review angle is the owner-style low view at (−22, −19, −61) m; separate views look up at the ceiling and down at the new bedrock floor.

View L22 L19 equivalent
SurfaceWorld, route-derived spawn L22 L19
SurfaceWorld horizon L22 L19
SurfaceWorld rings from above L22 L19
FloatingIslands low owner angle L22 L19
FloatingIslands ceiling L22 L19
FloatingIslands bedrock floor L22 —

A whole-stack side render was not readable from the surface-only mesh export. The vertical stack diagram above gives the exact interfaces and bands.

L19 ring tables rerun

RingProbe ran on L19 and L22 meshes at the same historical cameras: SurfaceWorld (0, −35, −487.94) m and FloatingIslands (−22, −19, −22.8) m. Values are median / p95 / maximum absolute edge-height difference in centimetres, followed by no-hit edge count. These are LOD mesh-edge gaps, not gaps in the validated strate stack.

SurfaceWorld rings

LOD L19 edges/samples L19 cm (gaps) L22 edges/samples L22 cm (gaps)
0→1 46/288 0.178 / 0.594 / 1.171 (10) 46/288 0.178 / 0.594 / 1.171 (10)
1→2 32/288 1.419 / 4.990 / 10.438 (0) 32/288 1.419 / 4.990 / 10.438 (0)
2→3 34/256 2.179 / 12.648 / 35.355 (2) 66/544 0 / 8.260 / 35.355 (2)
3→4 40/265 5.099 / 35.999 / 1,190.974 (5) 72/537 0 / 22.456 / 1,190.974 (6)
4→5 58/270 0.235 / 3.694 / 491.570 (14) 104/835 0 / 77.070 / 5,751.081 (6)
5→6 65/266 12.234 / 127.224 / 536.573 (33) 96/576 0 / 0 / 6,935.708 (32)
6→7 41/269 28.238 / 291.861 / 945.477 (7) 64/288 0 / 2,991.225 / 9,240.525 (32)
7→8 32/275 83.843 / 1,225.416 / 3,755.407 (0) 32/288 0 / 10,444.014 / 10,839.630 (0)

The 0→1 and 1→2 rows are unchanged. Higher rings changed as the complete strata bands and far boundaries entered the view; the largest far-ring discrepancies increased. The full LOD-stable interface surface remains future work.

FloatingIslands / SurfaceWorld interface rings

LOD L19 edges/samples L19 cm (gaps) L22 edges/samples L22 cm (gaps)
0→1 0/0 — (0) 63/185 1.328 / 6.795 / 10.623 (17)
1→2 33/231 147.141 / 148.403 / 149.862 (0) 0/0 — (0)
2→3 49/308 128.603 / 200.789 / 773.318 (8) 32/288 0 / 0 / 0 (0)
3→4 64/277 3.269 / 47.774 / 188.531 (27) 32/288 0 / 0 / 0 (0)
4→5 72/544 29.992 / 124.373 / 443.482 (6) 72/547 0 / 74.140 / 552.186 (6)
5→6 64/266 12.234 / 127.224 / 536.573 (32) 64/288 0 / 0 / 0 (32)
6→7 32/264 29.013 / 301.752 / 42,624.479 (0) 32/288 0 / 0 / 0 (0)
7→8 64/275 83.843 / 1,225.416 / 3,755.407 (32) 64/288 0 / 0 / 0 (32)

The FI table changed substantially. The new bedrock floor is visible at −119.5 m and supplies flat matched samples in several coarser rings; the old L1→2 interface edge is absent in this camera’s L22 mesh. This does not implement the later full LOD-stable interface design.

Hashes, determinism, invariants, and cost

Versions: evaluator 7, recipe schema 2, layout snapshot schema 2, FloatingIslands geometry 4. New W12 baseline rows are density / mesh / payload / topology:

Recipe/view Full detail Whole view
SurfaceWorld, derived spawn e7e0b0668a491c46 / ca35fe7a91099574 / 19f29f621cfdbbc7 / e37b3191a7200c67 4932f16f7d8dd5ab / 98e68419a13b76db / 56124d542206790c / 75ef1148afa20ca8
FloatingIslands, auto island camera 647bcb4038627e16 / 87324ad688a49bfa / a0c5b9a73288e393 / f9c316a79dd42152 2b5b06283399ad9d / 5c66f389b526f6bb / f2e7ff68d9dc2262 / 121abcf0607f0cf1

For the same historical SurfaceWorld camera, L21 and L22 exact-query density/unclamped hashes match at e4d4a8eb95b35933; detail is efcba20c0c70c415, collision is e604823a249029bf. Full-detail hashes also match exactly: 0ee0579bd15cbbe4 / 32e5d4964d610fee / 1932b96ee4b1d910 / 69743c6bad3447dc. Whole-view hashes differ because shared bands and complete outer strata now contribute to the mesh.

Determinism passed 28/28 runs (both recipes, Clang 19 with FP contraction off and GCC 14 default; W1, W8, W12×5). The 24 m SurfaceWorld crossing passed 14/14. Resolved snapshots were byte-identical across W1/W8/W12. Final W12 smoke hashes on both post-guard binaries still match their baselines. SurfaceWorld route parity passed with 782,026 exact-query samples and zero mismatches; FloatingIslands also passed with 782,026 samples and zero mismatches. SurfaceWorld’s proof audit checked 25,927 blocks / 34,508,837 samples with zero violations. FI had zero checked blocks and 24,576 conservative unknown/fallback blocks, zero violations; it did not claim positive proof coverage. Shape readiness, base/page equivalence, and walkability audits passed.

The W12 hashing-off five-pair median cost against the L21 binary was 1.613 s → 1.411 s for SurfaceWorld (−12.52%) and 11.087 s → 18.840 s for FloatingIslands (+69.93%), reflecting FI’s added 64 m of volume. Largest measured process RSS was 897,840 KiB; largest process-tree RSS was 4,603,848 KiB. Builds and runs stayed under the 6 GiB address-space limit, CPUs 0–11, at most 12 workers, and the 15/30 minute limits. The governor was unchanged.

The L3 FP-contract preamble/self-test and L4 FLazy, L7 shared cache, L9/L12 proofs, L11 readiness/crash handling, L13 route binding, L18/L19 shared ceiling, L21 snapshot/validator, ARCHITECTURE.md §8.10, and CLAUDE.md async rules remain in place. The Linux22 architecture note is §8.40.

Unreal edits and Windows checklist

Unreal edits are limited to:

  • Source/VoxelForge/Public/VoxelSettings.h — world setting StrateLayoutChunkSizeMeters, default 8.0.
  • Source/VoxelForge/Public/VoxelStrateManager.h and Private/VoxelStrateManager.cpp — resolve and use one layout width for manager strate bounds/lookups.
  • Source/VoxelForge/Private/VoxelForgeCoreAdapter.cpp — pass that width to plans and the V2 snapshot; compose the same parameter-driven ceiling and bedrock bands for each generator.

The Unreal module cannot be compiled on this Linux machine. Windows checklist:

  1. Rebuild the VoxelForge module and confirm the setting defaults to 8.0 m.
  2. Load the owner world with FloatingIslands and SurfaceWorld; verify +8…−120 m and −120…−632 m, with no gap at −120 m.
  3. Verify ceiling and bedrock are visible and breakable, then check the route-derived SurfaceWorld spawn and cap/ceiling collisions against the captures.
  4. Run the boundary validator and compare the generated snapshot with the two Linux22 identities above.

Failed and retried runs

  • Three early Clang builds failed while implementation files were being synchronized: the standalone loader referenced settings/API not yet copied; the next compile found three undeclared copied-manager width references; a later attempt found a missing closing brace in the clearance audit. These were corrected; the final Clang and GCC builds passed.
  • One final smoke attempt used a nonexistent linux22-clang-off binary suffix and exited 127 before running a workload. It was rerun with the correct linux22-clang and linux22-gcc paths; all four W12 hash checks passed.
  • A zero-byte build-clang-off-floor.log has no recorded compiler output and was superseded by the successful measured final builds.
  • The clearance scan completed successfully and reported the cap collisions above; this is a world-fit finding, not a failed run. No build or run timed out or exceeded its limit.

Nothing was committed, pushed, or stashed.

Orchestrator review (Claude)

  • Merged. The strict validator passes on the real owner world; SW full-detail and exact-query hashes are unchanged (content did not move); FI is +8…−120 m with a bedrock floor.
  • Captures checked by me: the FI owner-angle view shows islands above a clean, flat bedrock floor with a closed ceiling, and the ledges are gone. The SW rings-from-above view shows continuous terrain with no visible ring steps, so the large far-ring values in the RingProbe table (up to ~108 m) are most likely the probe pairing different surfaces now that bands are in view, not real breaks. Treat that table with care until the probe filters by surface owner. The SW horizon is from the new route-derived spawn, so it is not the same angle as L19.
  • Owner decision needed: SW cap profiles (CeilingUndulation 225–250 m) exceed the new ceiling band by up to ~126 m; reported, not clamped.
  • Cost: FI whole view +70% (its strate doubled in volume); SW −12.5%.
  • Unreal edits (VoxelSettings StrateLayoutChunkSizeMeters = 8.0, StrateManager, CoreAdapter) are UNCOMPILED here; Windows checklist above. CLAUDE.md's scale rule was updated to match.
  • Transitions are still Hard (recorded deviation).