Files
settled-reach/docs/workshops/economic-built-world-coverage-map.md
T
jpmschweitzerandClaude Opus 4.7 1a23739742 docs(workshops): economic-built-world brief + round-1 coverage map
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>
2026-05-25 22:37:54 +02:00

78 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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-212216), 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 23)
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.