Files
VoxelForge/Standalone/Research/WorldAssemblerM3/Linux98/REPORT.md
T
Fr0zkaandClaude Opus 5.5 36140b573f passages: prepared per-segment data + per-column XY projection cache (L98, exact)
Per-world prepared chord/length/radius/Catmull-Rom/floor-profile data (310 segments, ~66 KB,
<0.04 ms); same expression grouping, divisions and square roots, so output is bit-identical
(zero density/tile mismatches, Clang vs GCC equal). No measurable readiness gain - the cost is
the number of samples running passage work, not per-sample arithmetic. Note: the report's
world labels are shifted by one row (the 2,850-tile row is SurfaceWorld). Fast tier PASS;
Linux UE host builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
2026-10-28 12:50:19 +01:00

5.0 KiB
Raw Blame History

L98 — exact passage building blocks

Changes and work counts

Passage setup now prepares per-segment chord endpoints/deltas, squared lengths, radii, Catmull–Rom inputs, and floor-profile samples once per world. Capsule-route and mouth-support callbacks also use prepared segment endpoints and deltas. The scalar expression grouping, divisions, and square roots remain in the same order. Relief interpolation sharing was not added.

Measured preparation per world: 310 passage segments, 313 floor samples, and 32 capsule-route segments; the trace reports 66,296 bytes. The 32 mouth-route segments report another 4,608 bytes. Preparation measured 0.025–0.040 ms in the whole-view hash runs (mouth preparation rounded to 0.000 ms).

The streamed-view counters below are prepared-data reads/uses, not baseline arithmetic counts. They directly confirm the prepared paths were exercised. Avoided recomputations are inferred from the replaced per-sample expressions; the old arithmetic was not separately instrumented.

World Floor-profile reads Carve uses Support/tread uses Capsule uses Mouth-support uses
FI 129,382,181 8,255,393 5,131,690 2,693,464 14,773,980
TN 396,540,009 50,346,149 19,176,668 11,657,176 63,632,356
SW 318,412,931 50,093,885 17,065,041 10,323,467 60,102,531
VS 99,874,533 5,141,277 3,142,836 662,072 8,984,390

The XY cache keeps the scalar numerator grouping (qx-ax)*dx + (qy-ay)*dy; clamp, winner, reach, and composition remain per lane. A direct probe exercised 310 z-runs × 8 samples in each world: 2,558 numerator computations and 31,085 cache hits, with zero density mismatches against scalar evaluation. The measured hit fraction was 92.4% of numerator requests. The ordinary streamed view does not call the z-run API, so these XY reuse counts come from the opt-in direct probe, not natural view traffic.

Exactness

Compared rebuilt committed-HEAD baseline to L98 Clang, then L98 Clang to L98 GCC. Density tile hashes aggregate the density sample bit patterns. All comparisons had zero tile-hash mismatches at every LOD, zero LOD0–2 density-tile mismatches, and identical whole-view density, mesh, payload, and topology hashes.

World Whole-view tiles LOD0–2 density mismatches Whole-view density Mesh Payload Topology
FI 2,850 0 40b76d0072a2adcd 8559df0850d4d7f1 7700965ff31ac702 0e7f2a16b4cc71a9
TN 2,249 0 99ca213b21ce86e4 2977525405b79fff 3d7d2efb581710bd af1916c949224871
SW 2,233 0 8d23c26f5c092be1 15c3aad2e29d9ea0 3d48f68d511c21df 5b1584676884edd8
VS 2,329 0 876b44981d106be3 aaef57cb08bd6845 b19617df9f4acbb1 e8eee991260adff4

The direct XY probe also reported 2,480 sample comparisons and zero mismatches for each world. Hash runs and probe logs are under Saved/Linux/l98/hashes/ and Saved/Linux/l98/reuse-counts/.

L77 passage-share census

Mean near-LOD0–2 passage share, three profile runs per world and binary:

World HEAD before L98 after Change
FI 57.82% 56.74% −1.08 pp
TN 55.94% 55.70% −0.24 pp

This is a census comparison, not evidence of a timing gain. Logs and raw run values are in Saved/Linux/l98/census/.

Cold readiness

Median seconds from three interleaved HEAD/L98 pairs per cell. Each binary/stratum/worker-count cell had a warmup. Cold timing includes world/layout setup and passage preparation. The LOD0–2 and whole-view tile counts are included below.

World LOD0–2 / whole tiles W8 HEAD → L98 (LOD0–2 / whole s) W12 HEAD → L98 (LOD0–2 / whole s)
FI 1,408 / 2,850 1.070 / 2.341 → 1.099 / 2.369 1.029 / 2.147 → 1.005 / 2.123
TN 1,216 / 2,249 2.672 / 4.034 → 2.680 / 4.059 2.211 / 3.357 → 2.207 / 3.357
SW 1,344 / 2,233 2.713 / 3.929 → 2.496 / 3.623 2.255 / 3.313 → 2.176 / 3.183
VS 1,344 / 2,329 1.292 / 2.315 → 1.264 / 2.257 1.094 / 2.015 → 1.107 / 2.041

All 48 measured readiness runs completed. Results are close and mixed across worlds; they do not show a broad readiness speedup. Full results and logs are in Saved/Linux/l98/readiness/.

Verification and failed attempts

  • Fast tier: PASS (269 pass checks, 5 diagnostic checks), 80 runs, 303.5 s. The first invocation stopped before checks because its output directory had no built headless executable; building it and rerunning passed. Summary: Saved/Linux/l98/verify-fast/fast-summary.json.
  • Linux UE build: VFHostEditor Linux Development, -NoUBA -MaxParallelActions=4, succeeded in 36.60 s after timing. The first attempt stopped before compilation when UBT could not rotate its default log in the read-only user config directory. Retry used an explicit log at Saved/Linux/l98/unreal-build-ubt.log; no --as limit was used.
  • No measured run exceeded the 30-minute limit. All experiment processes used taskset -c 0-11; headless runs also used the 6 GiB address-space limit.