The carve is max(source, -roughSDF/Q), so its reach grows with -source; the outer test uses -d*Q + 0.24 m (wall relief 0.21 + margin) beyond the route radius, disabled in mouth-support and column-overlap tiles. Skips 16% of passage iterations on the highest-activity tiles and all of them on ordinary tiles. 84 candidate/full pairs identical in every hash; 0 changed samples. Evaluator 214 for cache invalidation only. Cold LOD0-2 (L80 protocol): SW 1.30->1.25, FI 3.59->2.93, TN 3.18->3.51 (noise?), VS 1.33->1.22 s. Fast tier PASS. Note: the export's legacy 26-point root route owner_world.passages[0] fails a full-view pre-audit (65 solid samples, unchanged since L70); the canonical 211-point route used by the plan passes. Stale data to clean up. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
104 lines
9.5 KiB
Markdown
104 lines
9.5 KiB
Markdown
# Linux81 — passage reach bound
|
||
|
||
## Reach derived from the code
|
||
|
||
The owner core voxel is 0.25 m. The passage carve is `max(source, -roughSignedDistance / Q)`. For a negative source value `d`, it can change the scalar as far as `-d` voxels outside the route radius. The outer test therefore uses `-d * Q + 0.24 m`; the extra sweep padding is added beyond that. The 0.24 m allowance covers the ±0.21 m wall relief plus 0.03 m margin; the mouth floor relief is bounded by ±0.20 m.
|
||
|
||
| Term | Reach and gate in the implementation |
|
||
|---|---|
|
||
| Route carve and wall relief | Route radius plus the density-dependent `-d` tail and 0.24 m allowance. A fixed geometric pad cannot bound arbitrary negative source values. |
|
||
| Smooth joins | Catmull–Rom replaces the chord only on eligible route segments no longer than 8 m; it is a local centerline change, not a long-distance fade. Mouth-support SDF blending has a separate 0.45 m width. |
|
||
| Ordinary support | Route tread half-width is at most 1.25 m; the support field extends at most 1 m below its tread and 0.35 m above. Short-span decks are a separate wider term: at most 3.75 m half-width and 5 m thickness, ending 4.87 m below the bore bottom because the deck floor is raised 0.13 m. Crossing-column Z ranges are separately bounded. |
|
||
| Mouth shaping and fades | Upper-mouth shaping uses the first three route segments, within 2 m in plan, 8 m along the route, and 4 m of the floor. Carve fade is 8 m along the route; floor relief fades over 11 m. The lower-mouth support blend is gated by a 20 m distance with a 12 m transition. |
|
||
| Mouth-route support | The query is limited to 13 m from the upper mouth. Its route cross-section reaches at most 1.01 m from the centerline (0.56 m half-width plus 0.45 m blend); the tile filter uses 15 m XY and 8 m vertical bounds. The outer cut is disabled in mouth-support and column-overlap tiles. |
|
||
| Strata/cave smooth minimum | The downstream 12-voxel blend acts on the composed cave field. It does not create a passage difference where the passage field is unchanged. |
|
||
| Transition passage fade | Separate seam path: mouth radius + 1 m protected margin + 2 m fade, evaluated by its own XY tile test. |
|
||
|
||
The old L80 geometric pad 0 missed the negative-density tail: its worst S0 sample had source density −18.1745 voxels, so the scalar reach was about 4.54 m + 0.24 m beyond the route radius (about 19.1 core voxels). It produced 19,604 changed samples across S0–S3 (19,434 / 63 / 86 / 21), no sign flips, and 6.64 cm maximum displacement. The large density deltas came from the carve’s `max(source, -SDF)` tail, not a far-field fade.
|
||
|
||
For L81, **0 extra voxels** is the exact tested point: the density-aware predicate retains the `-d` tail, while the 0.24 m relief margin is already in the bound. No single fixed geometric pad under 8 voxels can cover that tail for all source values.
|
||
|
||
## Padding sweep
|
||
|
||
Three interleaved runs per padding and stratum compared against the full path (`inf`). Work counts cover 17 L80 high-activity tiles (51 tile/run pairs) and 16 ordinary tiles (48 pairs). Paired time is candidate minus full worker time; negative is faster.
|
||
|
||
| Extra pad (voxels) | High skipped / total passage iterations | High share | Ordinary skipped / total | Ordinary share | Median paired tile Δms (high / ordinary) |
|
||
|---:|---:|---:|---:|---:|---:|
|
||
| 0 | 994,563 / 6,101,982 | 16.30% | 5,421,969 / 5,421,969 | 100.00% | −10.637 / +0.392 |
|
||
| 1 | 955,026 / 6,101,982 | 15.65% | 5,421,969 / 5,421,969 | 100.00% | −9.080 / +1.136 |
|
||
| 2 | 893,484 / 6,101,982 | 14.64% | 5,421,969 / 5,421,969 | 100.00% | −5.193 / −0.439 |
|
||
| 4 | 791,568 / 6,101,982 | 12.97% | 5,421,969 / 5,421,969 | 100.00% | −3.730 / +1.080 |
|
||
| 8 | 622,278 / 6,101,982 | 10.20% | 5,420,835 / 5,421,969 | 99.98% | −4.813 / +1.092 |
|
||
| 16 | 409,590 / 6,101,982 | 6.71% | 5,382,720 / 5,421,969 | 99.28% | −7.350 / +1.046 |
|
||
| 48 | 29,889 / 6,101,982 | 0.49% | 4,070,151 / 5,421,969 | 75.07% | +3.728 / +3.882 |
|
||
|
||
All 84 candidate/full pairs matched in density, mesh, payload, topology, material, whole-view, full-detail, and per-LOD hashes. The compared set has 0 changed density samples, 0 sign flips, and 0 maximum/mean surface displacement at every padding. The clean run contains 960 LOD0–1 tiles per stratum per run; verification is recorded in `Saved/Linux/l81/sweep/hash-verification.json`.
|
||
|
||
## Decision and readiness
|
||
|
||
Ship the density-aware bound at 0 extra voxels. It skips real loop iterations, gives the best work saving in this sweep, and is hash-identical in the measured tile set. Captures and cross-compiler peer runs were not needed under the exact-bound branch of the owner rule; no captures were taken.
|
||
|
||
Cold readiness used three interleaved measured full/exact pairs per stratum. Values are medians in seconds.
|
||
|
||
| Stratum | LOD0–2 full → exact | Whole view full → exact |
|
||
|---|---:|---:|
|
||
| SurfaceWorld | 1.304 → 1.246 | 2.738 → 2.749 |
|
||
| FloatingIslands | 3.592 → 2.926 | 4.982 → 4.368 |
|
||
| TunnelNetwork | 3.177 → 3.505 | 4.612 → 5.022 |
|
||
| VerticalShafts | 1.326 → 1.222 | 2.405 → 2.315 |
|
||
|
||
All 24 measured runs completed every readiness tile: LOD0–2 counts were 1,408 / 1,216 / 1,344 / 1,344 and whole-view counts were 2,850 / 2,249 / 2,233 / 2,329 in stratum order.
|
||
|
||
Readiness is mixed by stratum; the tile work counters and hashes, rather than a broad timing claim, support the decision.
|
||
|
||
The L77 LOD0–2 passage-share baseline was 65.9% FI and 65.4% TN. In the matched L81 profiler runs, full → exact means were 64.34% → 64.56% FI and 64.41% → 65.35% TN (two runs each). These small sampled-share changes are within the census variation.
|
||
|
||
## Version, hashes, and failed runs
|
||
|
||
- Evaluator version: 214. Source stamp: `8edc0292f2df6d279aa7e1d5c9c8c420ed36a9a138e17eed5310463e33e6146d`. Resolved layout identity: `resolved-layout-v3-fnv64:0589300eb07dfe06`.
|
||
- Exact outputs were checked over all four strata and the full 960-tile LOD0–1 target set. Captures: none, because the compared outputs are identical.
|
||
- The first sweep set mixed source stamps `6db4108c`, `f33a01da`, and `8edc0292`; it is excluded and preserved under `Saved/Linux/l81/sweep-mixed-stale/`. The final 96-run sweep is uniform at `8edc0292`.
|
||
- The first sweep parser attempt rejected `key=` as numeric; the parser was corrected before the clean sweep. No final sweep or readiness/census run timed out.
|
||
- The optional surface-world passage audit reported 65 solid centerline samples on passage 0, segment 15. The same failure and first sample (`−172, −138, −1794`) occurred with the L81 bound disabled (`inf`), so it is not caused by this bound; it remains a baseline audit failure.
|
||
- The floating-islands audit invocation stopped during setup because the selected recipe had no finite SurfaceWorld stratum; it produced no passage-audit result.
|
||
|
||
## Follow-up: passage 0 audit and fast tier
|
||
|
||
The surface-world audit used `Standalone/data/owner_world.json`, not a recipe fixture. It imported manifest
|
||
`bcc0d0d33ea39435` and resolved layout `resolved-layout-v3-fnv64:0589300eb07dfe06` with four strata. The
|
||
`--recipe=surface-world` flag selects the generator request. The imported manifest has one SurfaceWorld plan
|
||
and no native FloatingIslands plan, while the serialized owner layout still contains all four strata and
|
||
the SW→FI interface.
|
||
|
||
There are two passage representations in this input. The full-view run (`--max-level=-1`, force-generated)
|
||
fails before the resolved-layout audit on the 26-point root `owner_world.passages[0]` route: 65/5,310
|
||
centerline samples are solid, first at `(-172,-138,-1794)`. The canonical serialized SW→FI route has 211
|
||
control points; its resolved-layout audit passes with 4,151 center samples, zero blocked capsule samples,
|
||
and all three interfaces passing. So the full-view failure is real for the legacy owner route data, while
|
||
the canonical route used by the L70 plan-parity audit is walkable.
|
||
|
||
| Checkpoint | Canonical resolved route | Full-view root route |
|
||
|---|---|---|
|
||
| L70 `bd68aee`; verifier-only `018c0e1`; L71 `971206c` (same standalone runtime source) | PASS | 65 blockers |
|
||
| L72 `d970d75` (exact source build) | PASS | 65 blockers |
|
||
| L73–L76 `bd1b2a8`, `c67b200`, `9d5455e`, `90378a5` | PASS each | 65 blockers each |
|
||
| L77 `5e091d2` | Profiling-only change; no saved standalone binary | No field-evaluation change |
|
||
| L78–L79 `ec20994`, `2c8a26c` | PASS each | 65 blockers each |
|
||
| HEAD L80 `b06397d` (exact source build) | PASS | 65 blockers |
|
||
| L81 candidate | PASS | 65 blockers |
|
||
|
||
The 65-sample result therefore predates L81 and is present in the exact L70 source build; no later commit in
|
||
this range introduced it. The L70 report's 3/3 result is for the canonical resolved route, which is a
|
||
different check from the full-view pre-audit against the root route data. L71 changes tracing scripts but not
|
||
the standalone runtime; `2dfe599` and `68cba5a` are read-only research commits. The floating-islands companion
|
||
invocation still stops during setup because that selected recipe has no finite SurfaceWorld stratum; it gives
|
||
no passage result. No source fix was made.
|
||
|
||
`verify.py fast` passed on the L81 candidate in 321.2 s: 80 steps, zero unexpected failures. The four-strate
|
||
owner passage stage passed the 3/3 arrival/departure chain and W1/W8 per-stratum hash checks. Full logs and
|
||
summary are under `Saved/Linux/l81/verify-fast/`; the summary is `fast-summary.json`.
|
||
|
||
Evaluator version 214 was an intentional cache invalidation. The evaluator version is serialized into and
|
||
hashed with the Core recipe; advancing it prevents results cached under the previous passage evaluator from
|
||
being reused. The measured density and tile hashes remain identical.
|