The Stage-2 workshop brief and the consolidated three-scan coverage map (per-step decided-vs-open across the 4-step built-world pipeline) that became round 2's foundation. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
78 lines
5.2 KiB
Markdown
78 lines
5.2 KiB
Markdown
# Coverage Map — Economic & Built World (round-1 scan result)
|
||
|
||
Three repo scans (decisions / workshop outcomes / docs+code) folded into one map.
|
||
**This is round 2's foundation: extend what's decided, build the fill seam, don't
|
||
re-derive.** Pipeline steps: 1 districts/streets · 2 footprints+interstitial · 3
|
||
building property tags · 4 interiors (lazy, door-triggered).
|
||
|
||
## The headline
|
||
|
||
The district **skeleton is implemented** (`skeleton_gen.rs` + `district_mix.rs` +
|
||
`block_irregularity.rs` — deterministic, tested): district → 4×4 block grid with
|
||
layout mode, district-type mix, political archetype, founding orientation,
|
||
density, reservations. **Everything *below* the skeleton is stubbed or absent.**
|
||
|
||
## Per-step status
|
||
|
||
| Step | Decided **+ built** | Contract exists, **fill is a stub** | Genuinely open (round 2) |
|
||
|---|---|---|---|
|
||
| **1** districts/streets | hierarchy (D-094/222), layout mode (D-096), district-mix (D-194), archetypes (D-212–216), density (D-220), orientation (D-213), world-tier (D-218), execution tiers (D-200/206), provinces (D-205), seed (D-224) | `chunk_layout`, `corridors`, `access_points`, `guarantee_audit` — String/empty stubs on the skeleton | **street/corridor geometry** algorithm; guarantee-audit engine (D-097/103) |
|
||
| **2** footprints/interstitial | data structs only (`MultiBlockReservation`, `BlockPlacement`) | — | **chunk fill is entirely unbuilt** (`FillChunk` = no-op; `ChunkGenWorker` returns nothing): footprint subdivision within a block, parks/lots/gardens, building shapes, chunk tessellation |
|
||
| **3** building tags | zone-type taxonomy (31 RON files, D-142); tile condition (D-217); subbiome (D-210) | `era`, `society_profile`, `zone_palette` String stubs; **zone-types not wired** to the generator | **building-property-tag schema**; **cultural flavor** (`architecture_flavor`); era-of-construction assignment |
|
||
| **4** interiors | — | `floor_zones`/`vertical_corridors` always empty; `ZLevelLoadState::Ungenerated` never fires | **deliberate Phase-6 void** — door-open fill, room/hallway/utility grammar. NOT this workshop. Q-104 (floor↔voxel-z) gates it. |
|
||
|
||
## The one real design conflict — resolve in round 2 (Step 3)
|
||
|
||
**Abstract heritage roots** (generator-architecture: Frost/Stone/…, D-104/D-105/
|
||
D-READY-9/10 — fully specified, what Miri used in round 1) **vs the corridor
|
||
cultural system** (D-167 + world-generation — declared canonical, supersedes the
|
||
roots, but the corridor→grammar mapping was left unbuilt). **No migration exists.**
|
||
|
||
Resolution (Jeroen): the **`architecture_flavor` per-body profile** — an array in
|
||
the body's **wiki frontmatter**, filled by **Gemma** (extending the D-223 naming
|
||
cluster), each entry a short architectural/cultural flavor with **allowed** and
|
||
**blocked** deviation elements; `cultural_corridor` is only a coarse backdrop.
|
||
Round 2 **formally retires the abstract-roots grammar** in favour of this.
|
||
|
||
## Frozen-amber + lazy interiors is already canon
|
||
|
||
The planet-down-cascade brief states it verbatim: *"Door-per-edge as boundary.
|
||
Descriptor + catalog of what's behind the door. No spatial rendering of building
|
||
interiors until player crosses threshold."* Step 4 is established + Phase-6-deferred
|
||
— we are **not** designing it here. "Frozen" = seed-locked geometry; condition /
|
||
overlays / mutators write *over* it (D-100 DamageOverlay, D-217 condition).
|
||
|
||
## Locked from the decision walk (inherit, don't reopen)
|
||
|
||
- **Seed variance:** economic *strength* authored-fixed (narrative inviolate);
|
||
*locations* seed-varied; natural geography heightmap-fixed; names = pool
|
||
(Sol exempt). (D-167/D-223/D-227)
|
||
- **Frozen-amber enforcement:** hard compile-time wall on *structural* derivation
|
||
(no rolling-economy read); a **condition/vitality overlay** is the sanctioned
|
||
reader of rolling state (derelict/abandoned/overgrown paint over frozen bones).
|
||
Needs a D-198 precision amendment.
|
||
- **Generator inputs:** `CityGenerationContext` gains **morphology zone** + the
|
||
**per-body cultural profile** (D-199 "more fields permitted").
|
||
|
||
## The round-2 design target: the FILL SEAM (Steps 2–3)
|
||
|
||
1. **Street/corridor geometry** — turn the Step-1 stubs (`chunk_layout`,
|
||
`corridors`, `access_points`) into a real algorithm; wire D-215 arrangement
|
||
patterns; street network within/between blocks. (No curves — ±45° pathfinding cap.)
|
||
2. **Building-footprint + interstitial placement** — the Step-2 chunk-fill void:
|
||
subdivide a block into footprints + open space (parks/lots/gardens), tessellate
|
||
the chunk grid, respect density (D-220).
|
||
3. **Building-property-tag schema** — replace the String stubs with a real schema:
|
||
what-the-building-is (wire the 31 zone-types), `architecture_flavor` ref,
|
||
floor/basement *extent*, access tier, era. This tag is the **seed for the
|
||
lazy Step-4 interior** (the door-open trigger reads it).
|
||
4. **Cultural flavor + heritage→corridor resolution** — the `architecture_flavor`
|
||
frontmatter + Gemma distillation; formally retire the abstract-roots grammar.
|
||
|
||
## Implementation blockers (→ cleanup tickets, not design)
|
||
|
||
`founding_age_years` NULL on **all 273** inhabited bodies; `economic_tier` NULL
|
||
~97%; `economic_role` has 5 spellings; `behavioral_archetype` mostly NULL;
|
||
`GenerateSkeleton`/`FillChunk` queue items are no-op stubs; D-222 code rename
|
||
pending.
|