docs(docs): generator architecture workshop — 5 rounds, 14 D-records

Complete workshop output for ticket #562. Establishes the procedural
generator pipeline architecture for the 300-world model: two-phase
generation (DistrictSkeleton + ChunkData), three-layer model
(generator/simulation/delta), spatial hierarchy, MobileChunk spec,
guarantee tier system, heritage grammar overlay, and damage overlay.

Participants: Gestalt, Tyre, Miri, Araminta, Nigel, Ozzie.
Rounds 1-4 (design) + Round 5 (review/corrections).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-27 10:40:02 +01:00
co-authored by Claude Opus 4.6
parent 9332447c33
commit bfbe0d1b44
37 changed files with 14802 additions and 0 deletions
@@ -0,0 +1,209 @@
# Generator Architecture Workshop — Round 5 Notes
**Workshop:** Generator Architecture (#562)
**Round:** 5 — Final Review
**Date:** 2026-02-27
**Compiled by:** Qatux
---
## Purpose
Round 5 was a sign-off round. All six participants reviewed `workshop-outcomes.md` for accuracy against their Round 4 canonical outputs. No new design proposals were made. Corrections only.
---
## Sign-Off Status
| Agent | Role | Status | Corrections |
|-------|------|--------|-------------|
| Tyre | Technical Architect | Signed off with corrections | HIGH: WorldTier enum; MEDIUM: DistrictSkeleton fields; LOW: MobileMovementState |
| Miri | Worldbuilder | Signed off with corrections | D-READY-10 heritage correlations; D-READY-12 principle |
| Araminta | Visual Designer | Signed off with corrections | D-READY-6 terrain types; D-READY-9 domain; D-READY-13 vessel grammar; D-READY-5 stages |
| Nigel | Replayability Advocate | Signed off with corrections | Missing ComplexityTier→DramaDensity ceiling |
| Gestalt | Systems Design | Signed off with minor notes | complexity→complexity_tier naming |
| Ozzie | Player Experience | Signed off with one correction | D-READY-11 rooftop "determines" → "weights probability" |
All six sign-offs confirmed. Workshop is closed.
---
## Corrections Applied to workshop-outcomes.md
### C-R5-1 — WorldTier Enum Variant Names (HIGH)
**Source:** Tyre Round 5, Correction 1
The outcomes document used simplified/incorrect variant names. Corrected to Tyre's Round 4 canonical:
| Incorrect | Correct |
|-----------|---------|
| Core | Epicenter |
| Regional | Regional (unchanged) |
| Local | Backwater |
| Transit | Passage |
| Dormant | Waypoint |
Constraint ceiling also corrected:
- **Backwater → Full allowed** (key game design insight: dense isolated community, network-insignificant ≠ budget-capped)
- **Passage → Moderate** (was: Transit → Minimal)
- **Waypoint → Minimal** (was: Dormant → Empty)
The original text "Local → Moderate max" materially prohibited the Backwater+Full case, which is one of the most important design combinations in the game.
---
### C-R5-2 — ComplexityTier → DramaDensity Ceiling (MEDIUM)
**Source:** Nigel Round 5, Correction 2
The constraint chain was stated only halfway. Added second half:
> ComplexityTier → DramaDensity ceiling: Full → any intensity; Moderate → Active max; Minimal → Quiescent max; Empty → Zero only (no storyteller activation possible).
A `ComplexityTier::Empty` district has no social fabric. The storyteller cannot activate drama there.
---
### C-R5-3 — DistrictSkeleton Field List (MEDIUM)
**Source:** Tyre Round 5, Correction 2
Five identity/context fields missing from the Phase 1 diagram, replaced by fields from other participants' proposals without attribution. Added:
- `district_id: DistrictId`
- `seed: u64`
- `district_type: DistrictType`
- `context: DistrictContext`
- `access_points: Vec<AccessPoint>`
Added "(source: multi-participant)" notes to `vertical_structure` and `breach_only_zones` (present in outcomes but not in Tyre's canonical struct). Added "(source: Miri/Gestalt; Phase 1 computed)" to `derived_analysis`.
---
### C-R5-4 — D-READY-10 Heritage Root Correlations (HIGH)
**Source:** Miri Round 5
The heritage root ↔ informal zone type mapping was factually wrong:
- **Dust** was listed under `utilitarian_cover` — incorrect. Dust communities have maximum communal observation; the only privacy available is negotiated. Dust → `social_permission`.
- **Iron** was missing entirely. Labor function covers presence in Iron communities. Iron → `utilitarian_cover`.
Corrected mapping: Frost/Stone → `physical_distance`; Tide/Vine/Dust → `social_permission`; Iron/Salt → `utilitarian_cover`.
---
### C-R5-5 — D-READY-11 Rooftop Config Assignment (MEDIUM)
**Source:** Ozzie Round 5 + Araminta Round 5 (confirming)
"Heritage root determines which config is assigned" is wrong. Full determination kills the discovery moment — a Frost building with a rooftop bar is memorable *precisely because* it is unexpected.
Corrected: Heritage root **weights the probability** between `Restricted` and `PublicWithHiddenLayer`. The final config is seeded per-building. A minority of buildings of any heritage root must be configurable as the non-dominant type.
---
### C-R5-6 — D-READY-13 MobileMovementState Missing Idle (LOW)
**Source:** Tyre Round 5, Correction 4
`MobileMovementState` was listed as `(Docked / InTransit / InterSystem)`. Tyre's Round 4 canonical includes a fourth state:
- `Idle` = vessel parked at a location but not docked to infrastructure (anchored ship, grounded shuttle)
Added to D-READY-13.
---
### C-R5-7 — D-READY-13 Missing Vessel Visual Grammar Reference (MEDIUM)
**Source:** Araminta Round 5, Correction 3
D-READY-13 specified vessel structure and cultural grammar but had no source for how vessels look different from buildings. Added reference to Araminta's five-rule vessel visual grammar (`araminta-round4.md` §2):
1. Exterior hull uses vessel-identity material, not zone palette
2. Window tiles reveal exterior context (docked vs. in transit)
3. Compression modifier tightens proportions throughout
4. Section transitions use vessel-identity threshold elements
5. Class stratification expressed through proportion, not palette change
---
### C-R5-8 — D-READY-6 Terrain Type Numbering T5/T7 Transposed (MEDIUM)
**Source:** Araminta Round 5, Correction 1
The outcomes document had T5 = mountain and T7 = wetland. Neither is correct per Araminta's Round 3 specification:
- T5 = Coastal water (the terrain type referenced by D-READY-7's horizon view corridor guarantee)
- T6 = Beach/coastal margin
- T7 = Mountain/high terrain
- T8 = Desert/arid
"Wetland" was never in the original 8 types. Added note: if wetland terrain is needed, it requires design work as a new T9.
---
### C-R5-9 — D-READY-9 Araminta's Authoring Domain Incomplete (MEDIUM)
**Source:** Araminta Round 5, Correction 2
Araminta's authoring domain was listed as "object sets, arrangement algorithms, lighting temperature." The full domain covers additional visual expression fields she specified in her Round 4 TOML schema:
- Floor surface variants (`[floor].variant_preference`)
- Overhead flora density and character (`[overhead].density_factor`, `[overhead].character`)
- Wall/structure material character (`[structure].primary_material`, `material_tone_shift`)
- Boundary material type (`[boundaries].fence_type`)
Updated domain description accordingly.
---
### C-R5-10 — D-READY-5 Destruction Stages and Palette Constraint (MEDIUM)
**Source:** Araminta Round 5, Correction 4
D-READY-5 referenced "Stage 2" and "Stage 3" without enumerating the full sequence. Added:
| Stage | Name | Visual state |
|-------|------|-------------|
| 1 | Active | DamageOverlay rendering live |
| 2 | Fresh Aftermath | Structure breached; scorch, rubble, debris |
| 3 | Stabilized | Debris cleared; structural state permanent |
| 4 | Reconstruction | Scaffolding tiles, incomplete floors |
| 5 | Healed Scar | Functional; residual visual tells remain |
Added destruction palette constraint: corruption-only (no new colors introduced by destruction; single exception: `#c8d8f0` open-sky tile when roof removed).
---
### C-R5-11 — D-READY-12 Trauma Intensification Principle (MINOR)
**Source:** Miri Round 5
Added design principle framing to D-READY-12:
> Trauma intensifies culture, it does not transform it. A stressed community becomes a more concentrated version of itself. Decay is toward the community's pre-trauma baseline, not toward a new equilibrium.
---
### C-R5-12 — complexity → complexity_tier Field Naming (MINOR)
**Source:** Gestalt Round 5, Correction 2
`complexity: ComplexityTier` in the Phase 1 diagram corrected to `complexity_tier: ComplexityTier` to parallel `world_tier` naming convention.
---
### Minor Notes Applied
- **Q-NNN-b** (departure schedule model): Added note that D-READY-13 resolves this — recommend closing before sprint planning.
- **Q-NNN-f** (assassination difficulty synthesis): Clarified that on-demand computation is display-only; game logic uses Phase 1 `DerivedDistrictAnalysis` value.
- **Key Tensions table**: Updated WorldTier canonical values from old names to new.
---
## Notes for D-Record Filing
The following items were identified as issues in the D-records to be filed, not errors in the outcomes document:
- **`GuaranteeAuditResult` struct** (Tyre Round 5, Correction 6): Tyre's Round 4 struct was missing `non_institutional_route`, `egress_multiplicity`, `horizon_view_corridor`, `breach_only_zone`, `rooftop_discovery` in the Tier 2/3 sections. These should be added when filing the D-record for D-READY-2/D-READY-8.
- **`Docked` state struct** (Tyre Round 5, Correction 5b): The outcomes doc asserted `scheduled_departure` existed in the canonical struct, but Tyre's Round 4 struct was incomplete. Corrected to clarify these fields must be added at implementation time. Both `docked_since: SimTick` and `scheduled_departure: Option<SimTick>` are required — applied directly to D-READY-13 text.
---
## Post-Correction Status
- Workshop-outcomes.md: all 12 corrections applied. Document is accurate for all six domains.
- 14 D-records remain ready for filing.
- Q-NNN-b recommended for closure (resolved by D-READY-13).
- Q-NNN-d (DramaDensity naming 3 vs 5 levels) remains open for sprint work. Nigel preference on record: preserve `Flashpoint` as distinct peak value.
---
*Round 5 complete. Workshop closed.*