Files
VoxelForge/Standalone/Research/WorldAssemblerM3/Linux174/REPORT.md
T
Fr0zkaandClaude Opus 5.5 0ff8d98786 wip: L174 Design50 steps 0-2 verified; v240 baselines; seams proven real (RED)
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
2026-11-04 07:10:34 +01:00

7.5 KiB
Raw Blame History

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/world control 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-6 discrepancy at a shared sample. It is tagged injected=true; the audit ends with injected=DETECTED, 58,830 mismatches, and status=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 fast fails at owner-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.cpp
  • Source/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.