research: tunnel reach study (L129, no-go; found a units mismatch in v225 bounds)
BuildPassageSpatialIndices adds the 4.335 m reach in core-voxel units, so the broadphase reaches ~1.08 m while the sweep cutoff says 4 m. Physically-correct 2 m bounds are larger than v225's and 4.9-9.9% slower; captures at all L125 poses pixel-identical. Patch kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
This commit is contained in:
1 parent
b96dd739b8
commit
0d1140c117
49 files changed
+4091
No files matched your search
@@ -0,0 +1,54 @@
|
||||
# L129 — tunnel reach
|
||||
|
||||
**Decision: no-go for performance.** The 2 m candidate passed the geometry checks, but it was slower than both timing references and failed every UE movement comparison. The count pass also found a units mismatch in v225's reach bounds, so the requested physical reach cannot be cut cheaply against the source as it stands.
|
||||
|
||||
## What the reach includes
|
||||
|
||||
The 4.0 m term is the signed-distance influence cutoff outside the bore. The bound adds 0.21 m for wall relief and reserves 0.125 m for the 0.50 m smooth corner (`width/6` is about 0.083 m). The plain shell is 0.75 m thick, so its minimum reach with relief is 0.96 m. The larger term wins: `r + max(R + 0.21 + 0.125, 0.75 + 0.21) + 0.05 m`. At `R=4 m` and the maximum `r=3.5 m`, that is 7.885 m.
|
||||
|
||||
The mouth blend is 5 m **along the route**, not an added radial reach. The open-air half-pipe's side wall is 1 m high; its rounded crest uses the same reach. L129 leaves the 0.75 m shell rule, smooth floor `h(s)`, rounded crest, and grade limit unchanged. The highest audited grade was 10.695°.
|
||||
|
||||
## Counts before the build
|
||||
|
||||
Counts cover the four owner strata at LOD0–2, with 993 route segments. “Pairs” are route-segment/sample checks; “support” is unique per-passage samples inside the distance cutoff. The v225 model's 29.87M pairs is close to the measured source profile's 29.41M.
|
||||
|
||||
| Reach and bounds | Pairs (M) | Support samples (M) | Overlap pairs (M) | Feature / proof-active tiles |
|
||||
|---|---:|---:|---:|---:|
|
||||
| v225 as coded, nominal 4 m | 29.87 | 8.57 | 20.90 | 721 / 677 |
|
||||
| 4 m, physical bounds | 124.97 | 11.72 | 46.64 | 826 / 791 |
|
||||
| 3 m, physical bounds | 87.06 | 8.84 | 30.42 | 787 / 764 |
|
||||
| 2 m, physical bounds | 56.86 | 6.32 | 18.48 | 755 / 729 |
|
||||
| 1.5 m, physical bounds | 44.74 | 5.21 | 13.93 | 743 / 718 |
|
||||
|
||||
Against a correctly bounded 4 m model, 2 m removes 54.5% of pairs and 60.4% of overlap pairs; 71 feature tiles and 62 proof-active tiles become free. Against the v225-as-coded count model, however, physical 2 m adds 90.3% of raw pairs and leaves 34 more feature tiles and 52 more proof-active tiles. Physical 1.5 m still adds 49.8% of pairs and leaves 22 more feature tiles and 41 more proof-active tiles. So the smaller reach does **not** unlock proofs or tile skips versus the shipped source.
|
||||
|
||||
The cause is in `BuildPassageSpatialIndices`: positions are converted to core voxels before the reach is added, but v225 adds the metre value directly. At 0.25 m per core voxel, the nominal 4.335 m bound is only 1.084 m per axis; the sweep cutoff itself remains 4 m. L129 converts the smaller physical bounds to core voxels. That makes its broadphase boxes larger than v225's, even though its actual influence cutoff is smaller. The extra segment/sample checks erase the predicted saving. The 2 m setting was selected from the pre-build counts and is the only reach fully timed.
|
||||
|
||||
## Timing and quality
|
||||
|
||||
Five interleaved L80 runs per W8/W12 cell were completed on a quiet machine (load 0.71, CPU idle 97.3%). L125 is the `b96dd73` source. Every near-ready cell and every whole-view cell was slower than L109 and b96dd73:
|
||||
|
||||
| Stratum / workers | Near vs L109 / base | Whole view vs L109 / base |
|
||||
|---|---:|---:|
|
||||
| S0 W8 | +11.1% / +9.3% | +7.5% / +7.2% |
|
||||
| S0 W12 | +11.2% / +6.6% | +5.5% / +3.3% |
|
||||
| S1 W8 | +16.7% / +7.8% | +8.7% / +5.3% |
|
||||
| S1 W12 | +17.9% / +9.9% | +9.5% / +5.6% |
|
||||
| S2 W8 | +12.8% / +8.4% | +5.3% / +5.2% |
|
||||
| S2 W12 | +17.1% / +9.1% | +10.3% / +5.7% |
|
||||
| S3 W8 | +13.4% / +4.9% | +6.3% / +2.8% |
|
||||
| S3 W12 | +18.2% / +6.9% | +8.9% / +4.2% |
|
||||
|
||||
Five UE runs at 30 m/s also missed the b96dd73 gate: near coverage 38.05% vs 40.22% (−2.17 points), far holes 4.03% vs 3.46% (+0.58 points), tick p99 11.54 vs 10.80 ms (+0.74 ms), and worst tick 14.12 vs 13.27 ms (+0.85 ms). The Linux UE host build passed after timing with `-NoUBA -MaxParallelActions=4`; Unreal was not run under `prlimit`.
|
||||
|
||||
Fast verification passed (259 checks; 5 historical diagnostics), walkability passed at 21,425/21,425, all three passage grades stayed below 15°, and the seam audit passed 4 joins / 4,900 samples with no mismatches. Clang and GCC hashes matched for W1/W8/W12 across all three tested owner layouts (18 cases). Evaluator version 226 and three canonical owner hash baselines were added.
|
||||
|
||||
The 23 L125 pose captures and six paired mouth close-ups are verified. All before/after PNGs are pixel-identical; these views show no visible change. The floor probe peaked at 7.9 mm, above a strict “few millimetres” reading.
|
||||
|
||||
## Captures and records
|
||||
|
||||
- [L125 poses: before / L129 comparison](captures/COMPARE.html)
|
||||
- [Mouth close-ups: before / L129 comparison](captures/L129-mouth/COMPARE.html)
|
||||
- [L80 timing results](../../../../Saved/Linux/l129/timing/summary.json)
|
||||
- [UE movement results](../../../../Saved/Linux/l129/movement/summary.json)
|
||||
- [Pre-build count results](../../../../Saved/Linux/l129/precount/results.csv)
|
||||
Reference in new issue
Block a user