Shaft mode reuses PlanResolvedCavernNetworkV1 with a capped full-height cylinder primitive (shapeKind=1), ledges, access bores and cross links; 11 VerticalShaftParams fields mapped. Basal law: arrival 2-3 to a walkable terminal landing; drops/climbs stay reporting tiers. Seed 2 fails shell/seams at the 2-3 arrival mouth (3 variants tried, stopped per AGENTS.md). Whole view faster than assembler/world in 8/8 cells; near-ready slower in 7/8. Source/: VoxelForgeCoreAdapter.cpp. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
93 lines
7.2 KiB
Markdown
93 lines
7.2 KiB
Markdown
# 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.
|