# L165 — incremental desired-set rebuild **Result:** The Core clipmap key update is incremental for ordinary adjacent crossings and cuts median nonzero `BuildDesiredTiles` p95 by 47.7% (7.80 to 4.08 ms). Equality checks pass. Worst tick, p99, near readiness, arrival, and five-pair median far-hole coverage all improved. Far holes regressed by 0.291 percentage points in pair 5, so the strict paired no-regression gate is not clean across all five pairs. ## Count first A count-only trace of the baseline run covered movement from 6.174 to 17.981 s: 316 desired-set updates, including 44 center crossings. At a crossing, 93.813% of prior desired keys were unchanged in aggregate (median crossing 93.405%; range 93.384–97.318%). Same-center updates had 99.955% median overlap. | LOD | Prior keys unchanged at crossings | | --- | ---: | | 0 | 86.929% | | 1 | 91.071% | | 2 | 94.981% | | 3 | 97.017% | | 4 | 98.674% | | 5 | 99.053% | | 6 | 99.811% | | 7 | 100.000% | | 8 | 100.000% | This trace was used only for key counts. Its commandlet ended before its separate readiness check, so its timings are excluded. ## Change and movement results `BuildDelta` computes entering and leaving box slabs per LOD, including coarser-ring coverage changes. The runtime caches the Core key array and set, applies the delta at one-tile crossings, and updates the transition-descendant index from entering/leaving keys. It falls back to `World::desiredTiles` for larger jumps or when a changed key touches LOD4 or coarser. The UE overlay sets and priority/admission order are still rebuilt on each trigger; this round does not make those materialization steps incremental. Five interleaved W8 UE pairs ran at 30 m/s, 45 crossings each, with the L160 `assembler/world` baseline settings and forward-first disabled. The machine was quiet before timing (load averages 0.35 / 1.46 / 1.25). Metrics below are medians of the five runs; rebuild p50/p95 are over nonzero `BuildDesiredTiles` samples in the 12 s movement window. | Metric | `assembler/world` | Incremental | Paired result | | --- | ---: | ---: | --- | | `BuildDesiredTiles` p50 | 3.96 ms | 1.28 ms | lower in all five pairs | | `BuildDesiredTiles` p95 | 7.80 ms | 4.08 ms | −3.72 ms median; lower in all five pairs | | Game-thread p99 | 11.46 ms | 7.97 ms | every candidate run was 7.90–8.26 ms | | Worst tick | 13.73 ms | 12.11 ms | lower in all five pairs by 0.86–3.94 ms | | Near LOD0–2 readiness | 41.41% | 42.90% | better in all five pairs | | 55° forward-cone readiness | 14.69% | 15.37% | better in all five pairs | | Far holes while moving | 3.09% | 2.61% | better in four pairs; pair 5 was +0.291 pp | | First settled LOD0–2 arrival | 2.453 s | 2.437 s | earlier in all five pairs | The cone uses the travel-direction fallback because null-RHI produced no camera-forward samples. Far-hole coverage measures loaded desired coverage; the desired key set itself matched in every-crossing control checks. ## Checks and limits - Built `VFHostEditor` from this worktree with `taskset -c 0-11`, `-NoUBA`, and `-MaxParallelActions=4`; final build succeeded. Restored `VFHost/PluginDeps/VoxelForge/Source` to `/home/jahni/VoxelM/Plugins/VoxelForge/Source`. - Fast tier passed: 268 PASS, 0 FAIL, 5 diagnostics. Both canonical owner hash sets match the L130 baseline exactly (12/12 rows each); W1/W8/W12 determinism checks passed. - Clipmap automation passed 630 delta cases across six unit steps and three vertical-clamp settings. Its log reports `Result=Success`, failures=0; UE returned exit status 1 when `TestExit=Automation Test Queue Empty` fired. - The runtime equality audit passed all 45 crossings with interval 1, and all 20 sampled audits across the five measured candidate runs (four per run). Injecting an impossible reference key failed at crossing 1 with `missing=1` and triggered the assertion/nonzero UE exit. - `git diff --check` and runner `py_compile` passed. The movement summarizer reports the strict pairwise far-hole gate as failed in pair 5; the five-pair median still improved. The other movement gates passed. HMD/camera-forward readiness and W12 movement were not measured. - The final transition-index range correction only changes configurations whose desired max LOD is below 8; this W8 scene includes LOD8, so the measured code path is unchanged. The forward-first default remains off. Changed Unreal `Source/` files: - `Source/VoxelForge/Private/VoxelClipmapDesiredTiles.h` - `Source/VoxelForge/Private/VoxelWorld.cpp` - `Source/VoxelForge/Private/Tests/VoxelForgeClipmapNoOverlapTest.cpp` - `Source/VoxelForge/Public/VoxelWorld.h` Logs and summaries are in `Saved/Linux/l165/`.