# 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.