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:
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.
|
||||
Reference in new issue
Block a user