- Headless and Unreal schedulers drain the collision-critical ring, then LOD0-2, then far LODs at low priority. LOD0-2 ready (W8 medians): SW 4.36->1.76, FI 6.89->5.26, TN 4.88->3.22, VS 2.71->1.56 s. Whole view roughly unchanged (FI/VS slightly later). KNOWN RISK: far tiles wait until every near tile is ready, so far LODs may starve while moving fast (to address next). - Exact composer trims: tile-level upper-mouth candidate list, segment-index min/max rejection before lower_bound, 64-entry thread-local value-noise corner cache. Passage share 65 -> 63%. - World exact: 24/24 hash matrix + pinned L75 owner hash. 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
3.7 KiB
Linux78 report
Passage cost and world identity
The expensive path is ApplyResolvedStratePassageCarves: negative density samples enter the passage loop and query the segment index even when their tile has little passage overlap. The route relief calls VF_FieldPassageWallRelief, three 3D value-noise octaves at 43/29/19 voxel wavelengths; mouth relief uses the three-octave surface relief. A representative W8 tunnel LOD0 composer census recorded 6.0M composer queries, 18.1M passage iterations, 45.1M segment visits, and 40.8M relief calls.
The retained exact changes are a conservative tile-level upper-mouth candidate list and early return, segment-index min/max rejection before lower_bound, and a 64-entry thread-local cache of value-noise lattice corners. The cache preserves the existing interpolation operations and values. The passage share remains high: FI/TN near-LOD passage phase averages 63.0%/63.7% after the change, versus 64.6%/65.9% before; support is 13.8%/13.5% versus 14.1%/13.2%.
The world is exact. The L75 full-grid owner hash and all 24 Clang/GCC × W1/W8/W12 × four-strate density, mesh, payload, and topology comparisons match. No version bump or new captures were needed. Fast-tier passage audits passed.
Readiness, W8, three interleaved pairs, median seconds
| Strate | LOD0–2 before | LOD0–2 after | Whole view before | Whole view after |
|---|---|---|---|---|
| SurfaceWorld | 4.36 | 1.76 | 4.36 | 3.43 |
| FloatingIslands | 6.89 | 5.26 | 6.89 | 6.93 |
| TunnelNetwork | 4.88 | 3.22 | 4.88 | 4.55 |
| VerticalShafts | 2.71 | 1.56 | 2.71 | 2.84 |
The headless and Unreal schedulers now submit the collision-critical walkable ring first, then LOD0, LOD1, and LOD2. Far LOD work waits until the requested near LODs are ready and runs at lower priority. The ~1 s near-LOD target is not met for FI/TN; their medians are 5.26 s and 3.22 s. Whole-view times are reported separately above.
L77 sampler closure and phase census
Values are mean sampled grid-fill/direct grid-fill closure; passage and support are their sampled CPU shares. Near is LOD0–2.
| Strate | Near closure B/A | Whole closure B/A | Passage share near B/A | Support share near B/A |
|---|---|---|---|---|
| SurfaceWorld | 99.1% / 99.9% | 100.1% / 99.6% | 45.1% / 47.6% | 15.0% / 12.8% |
| FloatingIslands | 99.9% / 99.5% | 99.8% / 99.8% | 64.6% / 63.0% | 14.1% / 13.8% |
| TunnelNetwork | 99.9% / 100.1% | 99.8% / 100.2% | 65.9% / 63.7% | 13.2% / 13.5% |
| VerticalShafts | 100.0% / 100.2% | 99.9% / 100.9% | 45.9% / 42.9% | 5.9% / 6.6% |
Sampler handler cost stayed below 0.05% of profiled thread CPU. Detailed samples and route counts are in Saved/Linux/l78/sampler-census.csv, closure-census.csv, and route-census.csv.
Builds and checks
- Fast tier: PASS, 366.8 s.
- Hash matrix: PASS, 24/24; the pinned L75 full-grid owner hash also matches.
- Linux VFHostEditor: PASS after timing,
-MaxParallelActions=4, no address-space limit; UBT reported 70.35 s in its parallel executor. - No installs, commit, push, or stash.
Failed runs and rejected experiment
- The first fast-tier launch pointed at an output directory without its expected verifier binaries; corrected, then the final fast tier passed.
- L76's broad per-tile passage-loop experiment caused 612 density mismatches and changed mesh, payload, and topology hashes on 24 tiles; L76 rejected it. It is not part of the accepted L76 reference. In L78, per-brick and direct per-sample feature-bound filters also failed the pinned L75 owner hash, so both were removed. The retained path matches the accepted L76 matrix and pinned L75 owner hash.
- The first direct UBT call could not find
dotnetin PATH; rerunning through the engineBuild.shwrapper succeeded.