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

19 lines
2.9 KiB
Markdown

# 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.