wip: L174 Design50 steps 0-2 in progress (interrupted for a power cut)

Audits collect gates and run seams (landing discs + end runs, LOD0/1), tagged uncapped failures, separate exempt
counts, self-overlap census; level end runs; overlap/turn constraints. Partial sweep: end runs pass 3/3 per seed;
1-2 end-turn violations per seed; 50-110k tagged seam mismatches per seed (real vs audit artefact not yet decided).
Not verified; resume L174.

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-11-03 13:11:26 +01:00
1 parent b09728354d
commit dee53c8d2a
9 files changed
+2155 -257

No files matched your search

@@ -0,0 +1,104 @@
# Design50 — why the tunnel landings fail, and the plan (review 2026-11-03)
A read-only review (Claude Opus 5.5, extra-high effort) of `wip/combined-cave` (b097283), with the L133–L173 history and
the L173 logs. The orchestrator verified R6 and R7a in the code.
**Headline:** one wrong assumption, that a tunnel end is a separate 2-D "landing chamber" owned by the tube, the layer
and the audits at once. The plan replaces it with a level end run of the same spline plus the Design49 stamp,
applied last.
## Root causes
- **R1:** the chamber plane and the tube's 1-D h(s) disagree off the centreline (up to 1.3 m at the 7.5 m rim on FI).
- **R2:** the departure tube descends from the disc centre and undercuts its own landing. Unsupported samples: upper
chambers 316, lower 0 (L173); L159 upper pads 96/96 failing, lower 2/96.
- **R3:** the passage composer overrides the host:
- a forced-solid chamber floor slab (`ShapeWorldInternal.h` ~1665);
- shell walls filled over host air (~1869–1898);
- per-layer corridor exemptions only (Surface World, planned tunnels);
- the liminal route stamp re-applied after the carve (~1997, the L146 refill).
- **R4:** planner self-overlap. The FI helix pitch (3.2–3.9 m) is less than the bore height (~5.8 m), with 2,738
overlapping control-point pairs. Upper and lower mouths share XY, so 32/32 final junctions turn 107–178°
(curl-back).
- **R5:** the passage picks the landing height, not the layer. FI departures land inside the FI→TN transition band.
- **R6 (bug, verified):** `floorProfileIncludesLandingChambers` (set for every passage) makes
`PassageFlatFloorCenterZSubvoxels` return early, skipping both blends.
- **R7 (audits):**
- (a) **verified:** the composed audit returns 10 before the seam audit, so seams were never measured;
- (b) audits re-model chambers (L159's interior-air 0/16 was a phantom);
- (c) exempt probes count as supported; zero-coverage gates pass;
- (d) only 8 failures are printed;
- (e) the TN and VS sweeps are the same 4-strata world.
## Model
1. **One spline, one floor:** h(s) is level and straight for the first and last a ≥ R+1 m.
2. **The landing = the end run:** a flat disc radius R at P = h(end); the descent starts outside the disc.
3. **One composition order:** layer content (including liminal decks) → bore carve (air only, plus a floor shell under
the bore where the host is air) → Design49 clamp stamp last, masked by the bore → edits. No walls or roofs over
host air; no corridor exemptions.
4. **Who sets P:** fixed-ground layers (SW, FI, liminal) propose the site and P; for carved layers (TN, VS) the passage
picks P and the cave planner connects.
**Keep:**
- the spline, h(s) and the grade audit;
- the interior-air gate;
- cave binding to the end anchors;
- the L148 envelope, the L156 band fit and the L130 bounds;
- `l159-pad-stamp.patch` (stamp, bounds, LandingPadAudit plus 4 controls).
**Delete:**
- the chamber records and their composition, and the slab return;
- the corridor exemptions and the shell-over-air fills;
- the flag and both floor blends;
- the SW plane fit;
- the chamber audits.
## Steps
- **0:** audits that measure:
- collect gates, exit at the end;
- seams over discs and end runs at LOD0/1;
- tagged failing samples, with no 8-sample cap;
- exempt probes counted separately, with a coverage minimum;
- a self-overlap census;
- Core-exported predicates.
- **1:** level end runs.
- **2:** no self-overlap or hairpins:
- pitch ≥ bore height + 2 shells + margin;
- lower mouth on the ring;
- end turns ≤ 60°;
- the helix kept out of the landing columns.
- **3:** the composer and the audits together, with the stamp last.
- **4:** site selection for fixed-ground layers.
- **5:** verify (fast tier; TN/VS/native-FI sweeps 16/16; versioned hashes; Clang/GCC W1/W8/W12; captures).
**Owner look decisions:**
- the disc radius, the end-run length, the cone angle (12°) and reach (8 m);
- no walls on open-air landings;
- headroom underground;
- whether a FI landing may float or must sit on an island;
- wider spirals (~6 m or more);
- landings may move.
## Owner decisions (2026-11-03)
- Open-air landings: **no walls**.
- Floating Islands landings: **add a landing island to the FI plan** at each tunnel end: top at P, footprint wider
than the pad, normal island shaping at the edges. It's planned from the seed before generation, and the FI route
connects to it. (Not pathfinding the tunnel to an existing island.)
## Owner decision: uniform layer planners (2026-11-03)
- **Planning side: a `LayerPlanner` parent with one child per layer type:**
- `Plan(seed, settings)`;
- `OnTunnelArrival(end)`, the landing hook: nothing (stamp only), a plan record (FI landing island, liminal walkway,
cave connection), or a content request for Unreal;
- `ProvideRouteAnchors()`;
- `MakeDrawer()`.
Planning runs once per world, so virtual dispatch costs nothing there.
- **Drawing side:** keep the `std::variant` adapters with a shared `densityAt` shape (no virtual call per sample;
`ShapeWorldInternal.h` ~121), and choose the drawer once per tile.
- **Migration:** one planner at a time; owner canonical hashes identical after each move (refactor only); the landing
hook then implements step 4.