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
2.9 KiB
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, y2..3, z-64. Density, mesh, payload, and topology hashes all differ. The exact-camera W1 density hash was0x68f495ba62aace05; W12 was0x18d6f6cb3498deff. - Cause: L27 added large passage support columns, but
World::isTileShapeFreeonly 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, mesh0x539885cd589dc985, payload0x88a411b8697278ec, topology0xd24b13cef6bfdeb4for 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.