core: Vertical Shafts on the shared Core cave planner (L139, v237; 15/16 seeds)

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
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-11-01 05:34:00 +01:00
1 parent fa4417aad0
commit 318c5cf4f2
31 files changed
+1719 -106

No files matched your search

+43 -4
View File
@@ -2299,16 +2299,55 @@ results; the code path is not promoted to legacy Maze/VerticalShafts generation.
rooms, or tunnels. The Unreal adapter preserves the established passage planner, then resolves
authored stamps and cavern graph records, then finalizes the layout. Stable names are required and
are scoped by strate in Core; landmarks may target a stamp, room, or tunnel by that stable name.
Core profile heightfields are restricted to SurfaceWorld. Native caves require the TunnelNetwork or
Underwater archetype; native lattice requires Maze or VerticalShafts. Core recipe/version fields
enter the resolved layout identity when selected. An imported manifest cannot be mixed with a
per-strate profiled heightfield.
Core profile heightfields are restricted to SurfaceWorld. Native caves require the TunnelNetwork,
Underwater, or VerticalShafts archetype; native lattice requires Maze or VerticalShafts. Core
recipe/version fields enter the resolved layout identity when selected. An imported manifest cannot
be mixed with a per-strate profiled heightfield.
The checked-out Core API contains stamp vocabularies V1, V2, and V3. Unreal uses V1 for the original
stamp kinds and V3 for monolith/platform motifs, then combines and strictly validates the result.
Research17 names V2, but the source API and motif vocabulary require V3; source was followed.
Research27 water remains out of scope for U1.
### 8.56 Native Vertical Shafts graph field — World Assembler M3 L139
Vertical Shafts uses the same `PlanResolvedCavernNetworkV1` and `Core.Caves.PrimitiveField` as
Tunnel Network. There is no separate shaft planner. The existing room/tunnel shapes do not express
a capped bore spanning the strate height, so the shared cave field gains a shaft-cylinder record
kind; resolved records then add access tunnels, shaft cross-connects, and internal ledges.
`Core.Lattice.PrimitiveField` is not used: its L58 VerticalShafts route read as a corkscrew, so it
does not satisfy this archetype's open-shaft identity.
The basal owner strate has an arrival mouth from passage 2–3 and deliberately has no departure
mouth. Here the primordial law's route is the arrival mouth to a walkable terminal landing above the
bedrock seal. The shared planner extends its walk-only spine to that terminal with the same grade
limit used for a two-mouth cave; it does not invent a second passage. Route landings and connectors
are built as part of the graph. Shaft bores and their ledges are a separate exploration tier: an
open vertical drop or a climb between ledges is not walk-only traversal. Climb and mine remain
reporting tiers; they never relax the walk-only guarantee.
`FVerticalShaftParams` mapping:
| Field | Core behavior |
|---|---|
| `ShaftSpacing` | Planner room spacing, converting owner voxels to integer micrometres. |
| `ShaftDensity` | `roomDensityQ16`; seeds shaft placement, with the route's initial shaft guaranteed when nonzero. |
| `ShaftMinRadius`, `ShaftMaxRadius` | Minimum and maximum shaft radii. |
| `CrossConnectChance` | `tunnelDensityQ16` for cross-shaft links; generic cave branches are disabled in shaft mode. |
| `ConnectorRadius` | Fixed minimum/maximum radius for access and connector bores. |
| `LedgeSpacing`, `LedgeDepth` | Shaft shelf spacing and intrusion depth; zero spacing disables ledges, while zero depth leaves them nonintrusive. |
| `SurfaceRoughness` | Shaft-wall roughness amplitude. Frequency is derived as `max(0.5 m, 4 owner voxels)` because the legacy params have no frequency field. |
| `BoundarySealThickness`, `BaseDensity` | Continue to feed the resolved top and basal boundary bands through `sealAndDensity`, not the planner settings. |
L139 increments `WorldAssemblyEvaluatorVersion` to 237 and extends the versioned cavern graph
vocabulary for shaft cylinders. The fast-tier dispatch report binds S3 to
`Core.Caves.PrimitiveField` / `Caves-native`. The 16-seed composed acceptance gate is not green:
seed 2 fails the passage-shell audit at the incoming mouth. Three geometry variants failed that
same gate, so the remaining issue is recorded for a new design premise rather than another local
patch. L139 does not claim promoted shaft generation; its L80 run is recorded as characterization
of the current worktree. See
[`Standalone/Research/WorldAssemblerM3/Linux139/REPORT.md`](Standalone/Research/WorldAssemblerM3/Linux139/REPORT.md).
The shared VoxelForge custom asset version is 2: version 1 records the tunnel-floor slope migration;
version 2 adds load-time conversion for inter-strate gap, strate height, and transition width. The
saved strate-layout width is used, currently 8 m. Old packages are converted in memory and marked