Files
VoxelForge/Standalone/Research/WorldAssemblerM3/Linux169/REPORT.md
T
Fr0zkaandClaude Opus 5.5 786ecc4cdf streaming: bounded early admission - partial level sort, apply preflight, sorted transition index (L169, opt-in)
With StreamingFastTravelWaitForAllCriticalTiles=0 and ApplyBudget=1 ms (test values; defaults stay 1 and 0), 7 pairs
vs ca0bf76: near 43.3 -> 56.1%, forward 15.5 -> 17.9%, far holes 1.8 -> 0.0%, p99 7.06 -> 6.52 ms, worst 12.2 ->
11.8 ms, every run p99 <= 7.4 and worst <= 13.8 ms; arrival 1.671 -> 1.683 s (slower in 7/7) so not promoted.
Source/: VoxelWorld.cpp, VoxelWorld.h.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
2026-11-02 16:45:20 +01:00

4.7 KiB
Raw Blame History

L169 — Early admission stays opt-in

Result: Do not promote L157 early admission. Six of seven promotion gates passed, but candidate LOD0–2 arrival was slower in every pair: median 1.683 s versus 1.671 s on assembler/world ca0bf76 (+12.4 ms). The source defaults are restored to wait-for-critical 1 and apply-budget 0 ms. The candidate settings remain explicit overrides in the runner.

Measurement

Seven interleaved W8 pairs used the four-strata owner plan, 25 cm core voxels, 30 m/s movement, a 12-second move from t=6 to t=18, and a 5-second dwell. Each run had about 46 moving samples; one warm-up per binary was excluded. No product CVar was changed except the two L157 switches under test. At measurement time, the candidate binary compiled those settings as defaults; the runner now supplies the same values explicitly so the experiment can be repeated with shipping defaults off.

Moving-window metric (median across seven runs) ca0bf76 Candidate Result
Tick p99 7.060 ms 6.519 ms lower
Worst tick 12.219 ms 11.776 ms lower
Near LOD0–2 readiness 43.28% 56.12% +12.84 pp
Forward-cone readiness 15.52% 17.93% +2.41 pp
Far holes 1.80% 0.00% lower
First settled LOD0–2 1.671 s 1.683 s 12.4 ms slower

Every run stayed below 11 ms p99 and 14 ms worst tick. The largest observed p99 was 7.400 ms; the largest worst tick was 13.776 ms. Candidate worst-tick median was not worse. Arrival remained slower after subtracting each run’s first streaming sample (1.305 s vs 1.299 s), so the raw arrival failure is not explained entirely by trace start time.

Spike count and changes

All counts below use the 12-second moving window unless identified as a startup diagnostic.

  • Level sorting: With L157 on at the base defaults, the largest full-sort sample was 0.865 ms and no sample exceeded 1 ms; the L167 8.3 ms spike did not recur. Candidate partial sorting reduced the largest sample to 0.123 ms, with no sample above 1 ms.
  • Desired rebuild and overlay: Base per-run desired-rebuild peaks had a 7.476 ms median and reached 8.110 ms. Candidate peaks had a 6.928 ms median and reached 7.260 ms; rebuilds over 5 ms still occurred (median four per run, maximum five). Overlay materialization never exceeded 2 ms; its candidate maximum was 1.094 ms. The transition descendant index now uses sorted arrays and binary-search deltas. In a separate pre-move startup trace with 2,233 Core keys, the initial index build took 1.605 ms; the maximum moving-window index phase was 3.626 ms.
  • Mesh apply: The 2.8 ms historical apply spike did not recur. Maximum per-frame apply time fell from 2.548 ms at base to 1.590 ms candidate; largest individual candidate apply was 1.512 ms. The preflight deferred 21–145 results per run (median 109), with a largest estimate of 3.447 ms for 8,979 triangles. RealtimeMesh submission remains atomic, so the estimate is a heuristic and does not split a single upload.

The cold-start arrival gate prevents default promotion even though movement readiness and tick behavior improved. No further adjustment was made after the seven-pair result.

Defaults and checks

CVar Final default Candidate test value
voxel.StreamingFastTravelWaitForAllCriticalTiles 1 0
voxel.StreamingFastTravelApplyBudgetMilliseconds 0 ms 1 ms
voxel.StreamingIncrementalDesiredSet 1 1
voxel.StreamingFastTravelForwardFirst 0 0
voxel.StreamingRebuildOnCoreRegionCompletion 1 1
voxel.StreamingCoreDesiredCacheByCenter 0 0
voxel.StreamingIncrementalDesiredAuditEvery 0 0
voxel.StreamingIncrementalDesiredMaterializationAuditEvery 0 0
voxel.StreamingIncrementalDesiredAuditInjectMismatch 0 0
  • Final VFHost Linux Development build passed with -NoUBA -MaxParallelActions=4; three existing deprecated RealtimeMesh API warnings remain.
  • Final-source verify.py fast passed in 289.8 s: 268 passes, 0 failures, 5 diagnostics. Clang and GCC geometry hashes and W1/W8/W12 determinism passed.
  • git diff --check and the runner AST syntax check passed. The direct live TileHashDump hook returned zero records for the Core path on both binaries and is inconclusive; the fast-tier geometry and determinism checks passed.
  • UE W12 movement was not run: this VFHost procedure exposed eight effective tile slots. Fast-tier W12 determinism was run.

Remaining risk: desired rebuilds still reach 7.260 ms in the candidate, and the apply estimate cannot bound an atomic RMC upload. Most importantly, the arrival gate failed, so early admission remains opt-in.

Changed Unreal Source/ files:

  • Source/VoxelForge/Private/VoxelWorld.cpp
  • Source/VoxelForge/Public/VoxelWorld.h