Files
VoxelForge/Standalone/Research/WorldAssemblerM3/Linux44/REPORT.md
T
Fr0zkaandClaude Opus 5.5 036bd530fc fix(core): worker-count-dependent tiles near passage support columns (L44); random-camera determinism sweep
L27 added passage support columns, but World::isTileShapeFree only bounded the route and bridge, so tiles
touched by a column could be approved for early native-only generation; depending on scheduling they used
that incomplete field or the compiled one (six LOD0 tiles differed between W1 and W12 at an SW camera near
the arrival mouth). The shape-free proof now includes a conservative envelope for every possible column.
The compiled world is unchanged (the old W1 variant), so no version bump. verify tiers gain a seeded
(SplitMix64 0x4c3434) random-camera W1/W8/W12 sweep across both recipes and several clip settings; it fails
before the fix and passes after. fast/medium/full PASS; cost within noise. Research R11: suspect review.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
2026-10-23 23:00:21 +02:00

2.9 KiB

Linux L44 — worker-count determinism

  • Bisect: L26 (37a2230) is stable; L27 (07b3fe2) is the first bad commit. L28 retains the same mismatch.
  • Difference: at LOD0, six tiles differ: x -3..-1, y 2..3, z -64. Density, mesh, payload, and topology hashes all differ. The exact-camera W1 density hash was 0x68f495ba62aace05; W12 was 0x18d6f6cb3498deff.
  • Cause: L27 added large passage support columns, but World::isTileShapeFree only bounded the route and bridge. It incorrectly approved tiles touched by the columns for early native-only generation. Depending on scheduling, a tile used that incomplete field or the compiled field. The direct exact-query hashes remained identical.
  • Fix: extend the shared shape-free proof with a conservative envelope for every possible support column, including its anchor/route center, bore, wall, flare, and vertical span. Affected tiles wait for the compiled shape; no worker ordering or serialization changed.
  • Output/version: the compiled world is canonical. At the reported camera it hashes to density 0x68f495ba62aace05, mesh 0x539885cd589dc985, payload 0x88a411b8697278ec, topology 0xd24b13cef6bfdeb4 for all worker counts. This is the old W1 variant; the old W12 variant was the incomplete native-only result. The compiled field did not change, so no version bump is needed.
  • Sweep: fixed SplitMix64 seed 0x4c3434; camera 0 jitters around the failing camera, later cameras sample distant SurfaceWorld and FloatingIslands strata. Fast: 3 cameras, both recipes, settings (clip-radius,max-clip-level,max-level)=(3,0,0). Medium/full: 5 cameras and settings (3,0,0), (2,1,1), (3,2,1), W1/W8/W12. Full adds GCC; medium supplies Clang. Before the fix, fast failed on its first camera with the six LOD0 tiles above. After: fast PASS (172.9s), medium PASS (545.9s), full PASS (1635.9s); every per-tile density/mesh/payload/topology comparison matched.
  • Cost: five full-tier pairs against HEAD (422dd776): median whole-view time changed +0.65% for FloatingIslands and +0.40% for SurfaceWorld, within run noise.
  • Failed runs: the pre-fix fast failure was expected. The first medium configuration (4,2,2) exceeded the 160-million-node shape-build guard at 2,479 tiles; (3,2,1) covers max-clip-level 2 at 960 tiles and passed. The first Clang build caught a scope error in the proof loop, corrected before the passing build.

Orchestrator review (Claude)

Accepted. The current tree stamp equals the L44 binaries (bf2c835c…). The original repro now gives density 0x68f495ba62aace05 at W1, W4 and W12. The compiled field is unchanged, so this is not a world-version change. It also explains a player-visible symptom: depending on thread timing, tiles touched by L27's support columns could be generated without the column. The new seeded random-camera sweep in every tier is the lasting value here; it fails on the bug and passes on the fix.