# Linux8: work remaining after the shared cache ## Per-LOD profile W12 work and stage times below are medians of five interleaved timing runs. Cache columns are call counts (`worker-local hit / shared hit / shared miss`); cache outcomes were not timed separately. Unique XY per tile is the median across three W12 coordinate-capture runs. Skirt time needs the optional mesher timer, so those values come from the final gated profile; mesh assembly is the five-run median. Stage timers do not add exactly to worker time because they omit classification and other work, and some are inclusive of column computation. | LOD | Tiles | Work (s) | Columns (ms) | MC (ms) | Ground/cap (ms) | Far shell (ms) | Skirt/assembly (ms) | Samples/tile | Local/shared/miss calls | Unique XY/tile | |---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:| | 0 | 512 | 2.649 | 462 | 1,348 | 0/0 | 0.09 | 281/80 | 10,383.8 | 9.400M/405k/136k | 265 | | 1 | 448 | 4.064 | 309 | 3,487 | 0/0 | 0.08 | 186/76 | 42,875.0 | 19.354M/357k/86k | 191 | | 2 | 448 | 0.781 | 133 | 575 | 0/0 | 0.08 | 99/35 | 4,133.8 | 1.743M/115k/28k | 63 | | 3 | 384 | 0.730 | 89 | 591 | 0/0 | 0.07 | 108/33 | 6,859.0 | 2.130M/73k/16k | 42 | | 4 | 320 | 1.640 | 508 | 651 | 0/372 | 0.06 | 187/102 | 6,859.0 | 1.718M/182k/90k | 282 | | 5 | 144 | 1.419 | 397 | 275 | 650/22 | 0.03 | 157/72 | 6,859.0 | 698k/109k/71k | 493 | | 6 | 96 | 2.551 | 1,569 | 237 | 409/58 | 1,379 | 161/71 | 6,859.0 | 418k/63k/279k | 2,909 | | 7 | 48 | 1.201 | 393 | 200 | 294/208 | 0.00 | 149/99 | 6,859.0 | 258k/9k/70k | 1,469 | | 8 | 153 | 2.186 | 584 | 661 | 447/308 | 0.01 | 263/182 | 6,859.0 | 508k/30k/106k | 694 | ## LOD6 and LOD1 LOD6 generated 279,207 distinct XY columns across 96 tiles (2,909 per tile), close to the 280,334 L7 count. A bracket around `AppendFarConnectorShells` measured 206,849 formula evaluations there, about 74% of LOD6's column evaluations, and 1.379 worker-seconds; MC used about 35k evaluations, ground refinement about 37k, and cap none. The repair runs at LOD6 while stratum-shell repair starts at LOD7. The final gate profile recorded 13,291 halo/normal probes and only 16 repeated halo columns, so they do not explain the spike. The gate samples native terrain and does not certify dropping connector-shell geometry; no connector-shell work was shown to be screen-inert. LOD1 has zero feature-refined tiles: it uses the normal 32-cell lattice at step 2. Its 448 tiles each consumed 42,875 density samples (35³); LOD0 averaged 10,383.8, or 5.32M total versus LOD1's 19.21M. The mesher's 8-cell proof-block early-outs are enabled at step 1 and step 8, but deliberately disabled at step 2, so LOD0 can skip uniform blocks while LOD1 fills each tile's grid. MC is LOD1's cost: 3.487 worker-seconds, with 3.345 seconds in density-grid fill in the detailed run. Cell classification was 123 ms, normals 13 ms, interpolation 8 ms, and dedup/stream 59 ms. Column computation was 309 ms; halo/normal work is not the cause. ## Wall time and levers The median W12 tile work was 17.299 worker-seconds, or 1.442 seconds at ideal use of 12 workers. Measured stream wall was 1.446 seconds, only 4 ms above that estimate. Whole-view readiness was 1.727 seconds: shape compilation was 215 ms and another 67 ms elapsed before stream work began in owner/plan/setup. The residual is startup, not an idle worker or a long tile tail. The largest lever is LOD1 density-grid filling: 3.345 worker-seconds, a theoretical ceiling of 279 ms (16.2% of a 1.72-second view) if eliminated at perfect 12-way scaling. Next are LOD6 connector-shell repair at 1.379 worker-seconds (115 ms, 6.7%), LOD0 MC at 1.348 (112 ms, 6.5%), then LOD4 MC and LOD5 ground refinement at about 0.65 each (54 ms, 3.1%). These are upper bounds, not expected savings, and the work overlaps other stages. No product optimization was built: the candidates above threshold either produce required geometry or need an exact, output-preserving kernel change that this count round did not prove. The L6 gate on the final W12 profile passed same-LOD regeneration at LOD3–8 and rejected all negative controls. The existing far mesh still fails its direct-field 1 px comparison at every LOD3–8 (maxima: 6.00, 7.93, 92.02, 70.34, 42.36, 47.18 px); this round changes no geometry. No recipe bump is needed. ## Interleaved W12 timing and hashes `linux8` is the Clang 19 `-ffp-contract=off` measurement build; `linux8gcc` is GCC 14 default. Neither changes geometry. SHA256: L7 baseline `fbbd468e351c8a0e00c903a7988a3765158e9400ed6a0111898da4d7f5ae6c85`; Clang `linux8` `82b159359a754fb33c38a93c8b7cafe5d4cfc08c41582cbfd21328307f5e3c19`; GCC `linux8gcc` `5614db5158a3f404383eea27c3748d7cf05b3a0c545b9e95f272e09bed0ee300`. | Pair | L7 `linux7shared` (s) | Clang `linux8` (s) | Delta | |---:|---:|---:|---:| | 1 | 1.733 | 1.677 | −56 ms | | 2 | 1.670 | 1.702 | +32 ms | | 3 | 1.685 | 1.727 | +42 ms | | 4 | 1.692 | 1.727 | +35 ms | | 5 | 1.725 | 1.741 | +16 ms | | Median | 1.692 | 1.727 | +35 ms (+2.1%) | Pair deltas range from −56 to +42 ms, so this diagnostic build shows no separable speed change. Every W12 pair had the same whole-view hashes: density `0xc10697a8f48380c7`, mesh `0xe75c9119a1498cd5`, payload `0x49a9a8d1835a6c8c`, topology `0xedcb23288b5e8724`. W1/W8/W12 and Clang/GCC also agreed on all nine per-LOD hashes and exact-query hashes: density/unclamped `0xe4d4a8eb95b35933`, detail `0xefcba20c0c70c415`, collision `0xe604823a249029bf`. Thus LOD0–2 and exact queries are unchanged from L7. The final Clang and GCC builds took 29.876 s and 45.562 s; peak build RSS was 437,844 KiB and 901,892 KiB. Highest measured runtime RSS was 587,344 KiB. Runs used CPUs 0–11, `-j12`, a 6 GiB address-space limit, normal priority, and the unchanged `powersave` governor. ## Failed or retried runs - `l8_build_clang.log` failed after 27.608 s: the first print patch referenced local phase sets outside their scope. The corrected `l8_build_clang_retry.log` and `l8_build_clang_retry2.log` succeeded; the later phase-instrumented `l8_build_clang_final.log` and `l8_build_gcc_final.log` also succeeded. - The initial no-camera probes in `l8_hash_clang_w1.log`, `l8_hash_clang_w8.log`, `l8_hash_clang_w12.log`, and `l8_baseline_l7_hash_w1.log` generated 2,370 tiles, not this 2,553-tile fixture. They were discarded and rerun with `--camera=0,-35,-487.94,0,-22`. - `l8_profile_gate_w12.log` and `l8_profile_gate_final.log` returned exit 6 because the gate correctly rejects the existing far-mesh field error. Same-LOD checks passed and all fault/negative controls were rejected as required. All corrected hash, profile-repeat, and speed runs exited 0; none timed out. Build and runtime logs are in `Saved/Linux/l8_*.log`. No commit, push, or stash was made. **Owner note:** LOD6's extra columns are predominantly connector-shell repair work, while LOD1 is expensive because all 448 tiles fill the normal density grid; neither points to wasted halo or normal work. The next useful experiment is a bit-exact LOD1 density-grid optimization, while any LOD6 resolution change needs a connector-specific screen gate first. ## Orchestrator review (Claude) - **Why LOD1 fills every sample:** `VoxelMarchingCubesMesher.cpp` gates the 8-cell proof blocks to `Step == 1 || Step == 8`, and its comment says steps 2/16/32 skip them because "their meshing work is already smaller than repeating a full tile classifier per block" and to keep "the established coarse-LOD latency profile". That tuning predates the Core heightfield path; on the owner's SurfaceWorld view, LOD1's grid fill is now the largest single cost (3.35 worker-s). Next round: L9. - Only this report is committed. Luna's L8 instrumentation (Core and pipeline diffs) stays uncommitted in the tree for L9 to reuse or remove; its cost against L7 was +2.1% median with pair deltas from -56 to +42 ms, which is not separable, so it doesn't go in until proven free.