research: floor-ribbon falsifier and band column cache (L106, no code merged)

A route-only floor profile cannot reproduce current support semantics: support is gated per
sample by native density < 0, player-capsule clearance, later-bore deferral and neighbouring-
passage capsule checks (the overlapping-coil tile exercises all of them). The exact per-tile
boundary-band XY column cache matched all 24 hashes but showed no consistent readiness gain,
so it is kept as a patch only (patches/band-column-cache-not-merged.patch), not merged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-28 22:18:17 +01:00
1 parent f228d6319f
commit 20f1b35967
27 files changed
+1860

No files matched your search

@@ -0,0 +1,32 @@
# Linux 106
## Decision
**Floor/support ribbon: stopped at the falsifier.** A route-only floor profile cannot replace the current support decisions. Support is gated by pointwise native density (`density < 0`), player-capsule clearance, later-bore deferral, and neighboring-passage capsule checks. Mouth support also blends back the native field and its relief under another capsule check. The overlapping-coil tile exercises the later-bore and neighboring-capsule paths.
At W1, the ordinary FI tile `(2,-2,-93,lod0)` had 81,816 support-segment visits and 33,422 capsule checks, with no later-bore or other-capsule checks. The overlapping-coil tile `(1,-2,-92,lod0)` had 181,956 visits, 93,034 capsule checks, 3,219 later-bore checks, and 2,442 other-capsule checks. These counts matched L105. Both tiles also had identical L105/L106 density, mesh, payload, and topology hashes.
No local floor candidate was emitted, so candidate-specific crossing and capsule-clearance deltas are **not measured**. For a minimal hybrid, precompute route-floor geometry in the tile field while retaining the native-density gate, both capsule checks, later-bore deferral, and mouth restoration. This can remove route projection work without changing those support rules.
**Boundary bands:** added a per-tile XY-column cache for active transition pairs. It serves exact lattice XY only; off-grid queries still call the original exact calculation. The FI profile measured 681,651 column/pair evaluations, 4,530,549 lattice cache hits, and 75,758 exact off-grid fallbacks. A seam-centered profile measured 623,891 evaluations, 2,578,260 hits, and 21,328 fallbacks.
## Verification
- Exact hashes: **24/24** Clang/GCC × W1/W8/W12 × SW/FI/TN/VS runs matched L105 tile and whole-view hashes; zero mismatches. Source stamp: `a033e6b53537f3550549a7a77f93f5a5d6594263c208cbbffc5d403f6d7ad7b5`.
- Fast tier: **PASS**, 274 checks, 269 PASS, 5 historical diagnostics, 0 failures. Walkability, capsule clearance, support, floor/mouth profiles, route binding, and headroom gates passed.
- L80 readiness: the required 3-pair medians are below. Near and whole sets completed in every cell.
| Stratum | Near W8 | Near W12 | Whole W8 | Whole W12 |
|---|---:|---:|---:|---:|
| SW | +4.8% | −0.6% | +8.7% | −1.1% |
| FI | −4.2% | +0.1% | −1.5% | +0.6% |
| TN | −3.4% | −2.4% | −2.0% | −1.5% |
| VS | −2.3% | −2.4% | −1.2% | −1.1% |
Readiness was noisy. A second full 3-pair set produced FI W12 deltas of +11.9% near and +7.6% whole; a focused 3-pair FI W12 retest measured −0.9% and −0.5%. All three result sets are under `Saved/Linux/l106/readiness-paired*`; I do not claim a consistent readiness speedup.
- Captures: visually checked all nine L105/L106 pairs; every pair had 0 changed pixels. Listed views: `passage/0-1/0`, `passage/1-2/0`, and `passage/2-3/0`, each at upper mouth, lower mouth, and mid-50. The [contact sheet](captures/contact-sheet.png) shows every pair; exact PNG paths are in `Saved/Linux/l106/captures/summary.json`.
- Unreal Linux Development build: **PASS**, 27/27 actions, `-NoUBA -MaxParallelActions=4`, after timing and without `prlimit`.
- FI Unreal arrivals: **3/3 PASS**, each settled 1,216 near tiles in 1.543–1.550 s from first admission. They ran with `taskset`, without `prlimit`.
No world behavior changed, so the evaluator version remains 216. No commit, push, or stash was made.