# Linux139 — Vertical Shafts on the Core planner ## Result S3 now reports `Core.Caves.PrimitiveField` / `Caves-native`, using the shared Tunnel Network planner. The composed acceptance gate is not green: **15/16 seeds pass; seed 2 fails the passage shell and tile seam checks at the arrival from passage 2–3.** This worktree is not promoted as an accepted Vertical Shafts generator. The basal primordial route law means arrival passage 2–3 to a walkable terminal landing above the bedrock seal. There is no departure mouth at the bottom of the owner world. The shared planner builds that walk-only spine, its access tunnels, and landings within the existing grade contract. The full-height open shafts and their ledges are an exploration tier: a drop or climb is not walk-only traversal, and climb or mine access stays in the reporting tiers. `Core.Lattice` was not used because L58's VerticalShafts lattice route looked like a corkscrew, not an open shaft. ## Plan and parameter mapping `PlanResolvedCavernNetworkV1` is reused without a planner fork. `Core.Caves.PrimitiveField` is the shared evaluator, extended with `shapeKind=1`: the existing room/tunnel shapes do not represent a capped, full-height vertical bore, and the L58 lattice route was a corkscrew. Shaft records use that cylinder primitive with ledges, short access bores, and cross-shaft links. Generic cave branches are disabled in shaft mode. | `FVerticalShaftParams` field(s) | Core setting | |---|---| | `ShaftSpacing` | Shared planner room spacing; owner voxels convert to integer micrometres. | | `ShaftDensity` | `roomDensityQ16`, controlling shaft placement; a nonzero setting guarantees the route's initial shaft. | | `ShaftMinRadius`, `ShaftMaxRadius` | Minimum and maximum shaft radii. | | `CrossConnectChance` | `tunnelDensityQ16` for links between shafts. | | `ConnectorRadius` | Equal minimum/maximum radius for access and connector bores. | | `LedgeSpacing`, `LedgeDepth` | Vertical shelf interval and intrusion; zero spacing disables shelves and zero depth makes them nonintrusive. | | `SurfaceRoughness` | Roughness amplitude; frequency derives as `max(0.5 m, 4 owner voxels)` because no frequency field exists. | | `BoundarySealThickness`, `BaseDensity` | Existing resolved top/basal boundary bands via `sealAndDensity`, outside planner settings. | ## Measurements The final source stamp was `b8603b6cb3975ca0f9669759e4e2464561c557fdb7aa6836acef123ecf0b99d1`. The composed sweep covered seeds 0–15 with one run per seed (reported process time 320.485 s in total; individual runs 10.296–34.015 s). Seeds 0, 1, and 3–15 passed passages, route, seams, shell, and blocked-route controls. Seed 2's route grades/support, naturalness, mouth profile, ripple, dispatch, and negative controls passed; its composed passage, seam, and shell summaries failed. The shell audit reported eight `wall_missing` samples on `passage/2-3/0`, at route stations 489.627–490.321 m. The final log records positive native density at those samples and negative wall-shell margins. See `Saved/Linux/l139/seeds/seed2-final.log` and `Saved/Linux/l139/seeds/summary.json`. Three geometry variants were tried against this same shell gate: starting passage clearance at 12 m, adding a guarded cubic lateral bow, and starting clearance at 8 m. The first and third still failed wall checks; the bow failed floor checks. Per the three-failure stop rule, these were discarded. The final binary retains the successful Q16 endpoint-normalization correction needed for seed 1 and no seed-2 geometry patch. L80 ran after the seed sweep. The host gate was **load 1.31, CPU idle 99.4%**. It used one warm-up per build and stratum/worker cell, then five interleaved measured runs for each of three builds at W8 and W12 across all four strata: 120 measured runs total. Comparisons use `fa4417a`, `assembler/world`, and the L139 binary; the established L137 A/A noise floor is ±1% ([A/A report](../Linux137/REPORT.md)). Times are medians in seconds; deltas are L139 relative to each comparison build. Paired values in each cell are W8 / W12. | Stratum | LOD0–2 L139 | Δ vs `fa4417a` | Δ vs `assembler/world` | Whole-view L139 | Δ vs `fa4417a` | Δ vs `assembler/world` | |---|---:|---:|---:|---:|---:|---:| | S0 Surface World | 0.838 / 0.886 | +1.71% / +3.97% | +2.92% / +5.06% | 1.862 / 1.804 | +2.42% / +1.63% | −0.11% / −0.33% | | S1 Floating Islands | 1.036 / 1.038 | +4.72% / +4.61% | +2.09% / +5.35% | 1.842 / 1.830 | +0.11% / +1.16% | −6.73% / −1.24% | | S2 Tunnel Network | 1.105 / 1.078 | +2.44% / +3.07% | +3.57% / +7.57% | 1.876 / 1.808 | −1.11% / +0.00% | −4.33% / −1.15% | | S3 Vertical Shafts | 0.899 / 0.884 | −3.81% / −0.94% | −0.95% / +2.00% | 1.706 / 1.657 | −6.57% / −2.53% | −6.21% / −4.77% | Whole-view medians are numerically lower than `assembler/world` in all eight cells; the S0 W8 and W12 differences are within the ±1% noise floor. Seven of eight LOD0–2 cells are slower than `assembler/world`; the remaining cell is within the noise floor. This is characterization of an unaccepted build, not a promotion claim. Raw runs and medians are in `Saved/Linux/l139/timing/summary.json`. ## Checks and captures - Fast tier: **PASS**, 284.0 s; the S3 dispatch line is `VerticalShafts` → `Core.Caves.PrimitiveField` v1 / `Caves-native` / `FCavesFieldAdapter`. - Clang and GCC determinism: **PASS**, W1/W8/W12 (six cases), 13 hash lines and resolved-layout identity matched. Both compilers built the final source stamp above. - Canonical v237 baselines added for Surface World and Floating Islands; both match their v236 values. - Five eye-height views were captured before and after: arrival mouth, shaft access landing, looking down, looking up from a ledge, and basal terminal landing. All five L139 views pass the existing quality threshold. Two L138 baseline views fail it: the old layer has no shaft at the selected site, so the down-shaft view is flat, and the upward view is low contrast. The threshold was not relaxed. Images and camera details are in `captures/`. - The outside views are `captures/after-whole-layer-density-cutaway.jpg` (coarse LOD density-mesh slice at y=−5 m) and `captures/after-whole-layer-side-elevation.svg` (resolved-plan projection that labels the walk route and all 53 shaft primitives). The cutaway passes the unchanged image-quality threshold; its plan companion makes the full shaft layout clearer. - Linux `VFHostEditor` Development build: **PASS**, 27 actions, 72.58 s, run after timing with `-NoUBA -MaxParallelActions=4` and no `prlimit`. It emitted three pre-existing deprecated RealtimeMesh API warnings from `VoxelWorld.cpp`; that file was not changed. - `git diff --check` and Python bytecode compilation of the L139 runners passed. Windows build and Windows determinism were not run. Logs and source-stamped binaries are under `Saved/Linux/l139/`. The only changed Unreal `Source/` file is `Source/VoxelForge/Private/VoxelForgeCoreAdapter.cpp`. ## Remaining risk The passage shell and seam break at the incoming mouth on seed 2 remain unresolved. The local clearance/heading premise failed three geometry attempts; a new route-to-mouth design premise is needed before another geometry change. Walk-only connectivity stays guaranteed by construction; vertical drops, climbs, and mine access remain reporting tiers.