Files
VoxelForge/Standalone/Research/WorldAssemblerM3/Linux81/REPORT.md
T
Fr0zkaandClaude Opus 5.5 9cb5e53b17 passages: exact density-aware outer bound skips passage work beyond its reach (L81, v214)
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
2026-10-27 22:58:34 +01:00

104 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.