End runs pass 48/48; overlap/turn census still fails; seam mismatches are real (one tile adds the passage carve, its neighbour's X8 fast path does not). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
7.5 KiB
L174 — resumed Design50 steps 0–2
Seam verdict: real neighboring-tile density disagreements. The final-source seed-0 seam audit compares samples on the same LOD and shared coordinates. It examined 7,579/7,579 tile pairs across LOD0 and LOD1, with zero exempt pairs, and found 58,829 mismatches. This is not a cross-LOD, rounding, tolerance, or non-shared-sample artefact. The mismatches are real output discontinuities; the positive/negative sign disagreement below is consistent with a visible seam, though this round did not capture a rendered crack.
At LOD1, adjacent tiles (0,1,-33) and (0,1,-32) share the z=-2048 voxel plane (z=-512 m). Their Z-axis captures use step 2 voxels and include these identical coordinates:
| Shared coordinate (m) | Tile A density | Tile B density | Absolute delta |
|---|---|---|---|
(16.5, 28.5, -512) |
+0.781364381 |
-4.125 |
4.90636438 |
(15.5, 29, -512) |
+0.54046756 |
-4.125 |
4.66546756 |
(16, 29, -512) |
+1.36258674 |
-4.125 |
5.48758674 |
Measured: all three samples are logged as LOD1, axis Z, with the same tile keys and exact world coordinates. Seed 0 has 6/6 landing discs and 6/6 end runs covered; there are no seam exemptions. The full capture and tagged output are in Saved/Linux/l174/seam-reproduction/seed0.log.
The audit reads each generated tile’s captured TileMesh.debugDensitySamples; it maps the same world voxel coordinate into both arrays only when each capture’s step divides the coordinate delta exactly. It compares the captured float values directly. These deltas are several density units, so coordinate rounding or a tolerance threshold cannot explain them.
Composition trace, with limits: a diagnostic-only trace (not built from the final source stamp) reports tile A’s input, graph, boundary, and stamp terms all as -4.125, then final values of +0.781364381, +0.54046756, and +1.36258674 at the three points. The neighboring tile’s diagnostic X8 trace returns -4.125 at all three through packed_x8_base_only; it reports one route candidate and one swept route, but no graph contribution. This supports the inference that the passage carve is applied on one tile path and omitted on the adjacent tile path. The exact dispatch predicate remains untraced.
The audit compares the two generated tile outputs directly; it does not compare either against a separately recomposed reference order. A composition-order or dispatch difference may explain the two paths, but the exact cause remains untraced.
Controls
- The archived L147-era owner control reports 0 mismatches, but it examines only 118 of 1,114 candidates: four pairs and 4,900 shared samples. Its narrower coverage makes it a limited control, not evidence that current full coverage should be zero. Log:
Saved/Linux/l174/control-l147/seed0.log. - The archived
assembler/worldcontrol does not reach the seam audit. Prototype setup stops because finite-strate route candidates fail the composed-field capsule/support sweep. Its owner data SHA is the same as the current owner input (38b33d30…). No seam result can be inferred from this control. Log:Saved/Linux/l174/control-assembler-world/seed0.log. - The final-source injected-mismatch control adds a
1e-6discrepancy at a shared sample. It is taggedinjected=true; the audit ends withinjected=DETECTED, 58,830 mismatches, andstatus=FAIL(exit 10 as expected for this already-failing world). Log:Saved/Linux/l174/seam-injection/seed0.log.
Builds and owner hashes
Fresh Clang 19 and GCC 14 builds from HEAD completed. Both rebuilt headless binaries print source stamp 36936204fc85614b1aa8f660c38009d36e65327722b7f7e9d7ec123755412d48. Build logs are Saved/Linux/l174/rebuild-clang.log and Saved/Linux/l174/rebuild-gcc.log.
Step 0 was audit-only. Its intermediate source stamp, 145eff57…, produced W1 and W12 owner hash records matching the v239 canonical hashes for both recipes. Those logs predate steps 1–2, so they are evidence for step 0 at that source revision, not final-stamp evidence. On final stamp 36936204…, W1 and W12 match each other across 12 canonical records for each recipe, but differ from v239 because steps 1–2 change passage geometry. A final-source cross-compiler check also matches all 13 pipeline hash outputs for both recipes across Clang and GCC at W1, W8, and W12 (Saved/Linux/l174/hash-cross-compiler/). WorldAssemblyEvaluatorVersion is now 240; the v240 baselines describe those final-source hashes. The fast tier stopped at the passage audit before reaching its hash gate.
Steps 1–2 verification
- End runs: 48 measured across 16 seeds, zero audit failures. The 2% slope negative control is rejected as expected (
PassageEndRunNegativeControl, status PASS). - Fixtures: the frozen helix is rejected with 291 overlap pairs; the 160.007° hairpin is rejected with one end-turn violation. Both fixture checks pass. Logs:
Saved/Linux/l174/verify-fast/owner-floating-islands-style2-clang.log. - Self-overlap and turns: the 16-seed census still fails. It found six overlap pairs across seeds 1, 10, and 11; 23 end-turn violations across seeds 1, 3–10, 13–15; and zero landing-column violations. Step 2 is not complete.
- Three attempted step-2 fixes failed and were reverted: the closure smoke left two landing-column violations; the connector smoke left overlap/end-turn and five landing-column violations; the r241 endpoint-fillet attempt consumed the required straight end run (
passage/0-1/0 cannot round its end end turn outside the required straight run). Per the stop rule, no fourth fix was attempted. verify.py fastfails atowner-floating-islands-style2-clang(exit 10, final stamp and recipe/style checks true). Its owner census reports 11 overlap pairs and one end-turn violation; its end-run audit and 2% control pass. The streaming-admission-order check passes. The canonical hash gate was not reached. Summary:Saved/Linux/l174/verify-fast/fast-summary.json.
Final-source 16-seed sweeps
Both Tunnel Network and Vertical Shafts route checks ran for seeds 0–15 from the same final source stamp. Full per-seed tagged output and attribution are in Saved/Linux/l174/final-sweeps-v240/; aggregate: summary.json.
| Measure | Result |
|---|---|
| Overall seed rows passing every gate | 0/16 |
| Seam mismatch samples | 1,503,957 |
| Route / end-run / body tags | 1,432,668 / 56,900 / 14,389 |
| Disc / rim tags | 0 / 0 |
| Uncovered landing-disc regions | 5 seeds (2, 5, 6, 12, 15), one each |
| Exempt seam pairs | 0 |
| EndRunAudit | 48/48 pass |
| Tunnel Network route | 13/16 pass (seeds 2, 6, 13 fail) |
| Vertical Shafts route | 16/16 pass |
| Both blocked-route controls | 16/16 pass each |
| Per-seed negative controls | 16/16 pass |
Remaining work and checks not run
The shared-sample seam mismatch and its exact dispatch cause remain unresolved. Step 2 still has overlap and end-turn failures; Tunnel Network misses three seeds, and five seeds have an uncovered landing disc. The assembler/world control could not reach seam auditing. No UE build or timing run was performed. No step 3 composer/stamp work or LayerPlanner refactor was started.
The committed L174 change touches these Unreal Source/ files for the Windows owner build:
Source/VoxelForge/Private/VoxelMarchingCubesMesher.cppSource/VoxelForge/Public/VoxelMarchingCubesMesher.h
The resumed verification added no C++ source edits. The working-tree changes are the v240 baseline files and verifier baseline references/documentation. git diff --check passes.