Three-round design workshop (Miri, Burnelli-Sheldon, Paula; documented by Qatux, ticketed by SI) that produced D-237. Includes per-agent round outputs, round notes, the independent scout critique, and the final workshop-outcomes.md with the consolidated schema, 27-value economic vocabulary, cultural + faction vocabularies, deterministic-varied fallback spec, must-pin table, and CI guardrails. Clerk-Skip: workshop discussion docs, no D-record surface (D-237 filed separately) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
220 lines
18 KiB
Markdown
220 lines
18 KiB
Markdown
# Round 1 Notes — System Economic-Specialization Workshop
|
||
*Documenter: Qatux | Date: 2026-05-31*
|
||
|
||
Source files:
|
||
- `docs/workshops/system-economic-specialization/miri-round1.md`
|
||
- `docs/workshops/system-economic-specialization/burnelli-sheldon-round1.md`
|
||
- `docs/workshops/system-economic-specialization/paula-round1.md`
|
||
|
||
---
|
||
|
||
## 1. Confirmed Consensus (all three participants agree)
|
||
|
||
| Topic | Agreement |
|
||
|---|---|
|
||
| Authored lore wins | The heuristic (`economic_role` + corp HQ + `planet_class`) becomes fallback only for unnamed/generic systems. |
|
||
| One authored field per system | One primary authored field per system. Disagreement on form — see Fork 1. |
|
||
| Coexistence with prose | `economic_base_primary/secondary` free-text survives unchanged. The new field is the machine-readable counterpart; the prose is the human record. |
|
||
| Source file | `wiki/economics/system_specialization.toml` — new TOML, one record per system, compiled via `import_economics.py` → new column on `system_economy`. |
|
||
| Static, t=0, deterministic | Field is build-time authored, D-010 compliant. No PressureState, no tâtonnement. |
|
||
| NULL for uninhabited systems | NULL = absent = heuristic runs. Inhabited systems with NULL trigger CI error after the pass is complete. |
|
||
| `economy_size` OUT | **Unanimous.** Population × `prosperity_baseline` (D-197) already cover the function. Adding `economy_size` risks contradicting existing fields. (Burnelli §Q3; Paula §Q3; Miri §Q3) |
|
||
| `atlas_body_trait_bias` hero pins in same pass | **Unanimous.** ~30–40 hero body pins using the existing D-232 `pin` mechanism. Authoring burden is per-hero-body, not per-system. Miri + Araminta author content; Burnelli confirms economic eligibility. |
|
||
| Content pass division | **Miri**: GTTR truth, named/hero systems. **Paula**: faction homeworlds, Compact capitals, politically-complex systems. **Burnelli**: economic credibility review of all ~300 entries + economic plausibility + fallback validation for unnamed systems. |
|
||
| CI guardrails needed | Hard errors: uninhabited FK integrity, vocabulary constraint. Soft warnings: monopoly assignments, prose/field divergence, distribution imbalance. Burnelli's §Q4 has the most detailed spec. |
|
||
| World-to-pin list is non-trivial | At minimum 18 core/near-core systems + 5 D-177 terroir pins require explicit authoring before the generator runs on #982 / Layer 2. |
|
||
|
||
---
|
||
|
||
## 2. Fork 1 — Primary Field Form (major structural fork)
|
||
|
||
This is the workshop's central unresolved question. Round 2 must resolve it.
|
||
|
||
### Position A: Commodity FK (Burnelli + Miri)
|
||
|
||
**Burnelli** proposes:
|
||
```sql
|
||
dominant_commodity_id TEXT REFERENCES commodities(commodity_id)
|
||
```
|
||
One FK into the 36-commodity catalog. The commodity record's `bulk_class` → `BulkClass` and `production_ubiquity` → `ProductionUbiquity` provide the D-233 mapping directly. The FK is the mapping.
|
||
|
||
**Miri** endorses Burnelli's FK, but adds one structural gap and a proposed second field:
|
||
|
||
> *"The catalog's `production_ubiquity` answers: 'how widely is this commodity produced across the Reach?' — a global market statement. D-233's `ProductionUbiquity` answers: 'how spatially concentrated is this commodity in THIS settlement's built form?' — a local identity statement."*
|
||
|
||
Miri proposes `dominant_production_scale TEXT` (optional, same vocabulary as `commodities.production_ubiquity`) as an override when the catalog's global ubiquity would misrepresent the system's local identity. Allowed only equal-or-higher concentration than catalog default. Estimated ~20–30 systems need this (Ran, Groombridge, Prometheus, Calloway, VGV, Keid, Lu Ban, Vuurkloof, Sindri, etc.).
|
||
|
||
**Examples of scale-gap systems (Miri §Q1):**
|
||
|
||
| System | Commodity | Catalog `production_ubiquity` | Required scale | Why |
|
||
|---|---|---|---|---|
|
||
| Ran | `agricultural_produce` | `ubiquitous` | `concentrated` | THE breadbasket — scattered instances wrong |
|
||
| Groombridge | `financial_services` | `common` | `concentrated` | Financial district identity, not scattered |
|
||
| Prometheus | `medical_services` | `regional` | `monopolistic` | Only facility of its kind in the Reach |
|
||
| Calloway Reach | `processed_food` | `ubiquitous` | `monopolistic` | D-177 terroir lock — cannot be reproduced |
|
||
| VGV system | `agricultural_produce` | `ubiquitous` | `monopolistic` | D-177 F8V stellar spectrum lock |
|
||
|
||
### Position B: Specialization Enum (Paula)
|
||
|
||
**Paula** proposes:
|
||
```
|
||
system_specialization — 9-value enum
|
||
```
|
||
Values: `transit_hub`, `governance_center`, `financial_hub`, `research_station`, `military_bastion`, `manufacturing_hub`, `precision_industry`, `agricultural_base`, `extraction_colony`. Each value directly maps to a (BulkClass, ProductionUbiquity) pair.
|
||
|
||
Paula's rationale: the heuristic fails for *political* reasons (institutional mandate, Compact self-sufficiency doctrine, corporate homeworld identity), not just geographic ones. A 9-value vocabulary is more politically legible than asking authors to choose among 36 commodity IDs.
|
||
|
||
**Key note on `governance_center` vs `research_station`:** Both map to (NonPhysical, Specialist) and produce the same building vocabulary under D-233. Paula explicitly notes: differentiation is achieved at the D-232 level via `dominant_faction` weighting — Assembly → institutional templates, Veil Institute → research/observatory templates. This means Paula's proposal depends on `dominant_faction` being authored (see Fork 2).
|
||
|
||
### Comparison Table
|
||
|
||
| Dimension | Position A (Burnelli+Miri FK) | Position B (Paula enum) |
|
||
|---|---|---|
|
||
| Vocabulary size | 36 commodity IDs | 9 enum values |
|
||
| Authoring clarity | Requires knowing which commodity | Politically legible |
|
||
| D-233 mapping | Derived from commodity catalog | Directly encoded |
|
||
| Scale gap handling | Miri's optional `dominant_production_scale` field | Some implicit (enum values encode concentration level) |
|
||
| `governance_center` vs `research_station` | Two different commodity IDs (`commission_certification` vs `tourism`/`medical_services`) | Same enum output; relies on `dominant_faction` to differentiate at D-232 |
|
||
| Services economy | Any NonPhysical commodity works | Two dedicated enum values |
|
||
| D-177 monopoly cases | `dominant_production_scale = monopolistic` | `precision_industry` or `extraction_colony` as applicable |
|
||
|
||
**Unresolved tension:** Positions A and B are not mutually exclusive (could be combined), but they are not the same design. Round 2 must produce a single schema.
|
||
|
||
---
|
||
|
||
## 3. Fork 2 — `dominant_faction` Authored Pin: In or Out of This Pass?
|
||
|
||
**Paula's position:** Author `dominant_faction` for all named systems in this same pass. This field already exists as a required input in D-199's 6-field minimum read-set for `CityGenerationContext`. It is consumed by D-214 (PoliticalArchetype) and D-232 (template weight). Three specific heuristic failures demonstrate why the *value* needs to be authored, not derived:
|
||
- Groombridge: syndics govern, not the Assembly; affects D-214 layout archetype
|
||
- Ostmark: Compact founding member, not generic frontier; affects D-232 and D-214
|
||
- Altmark: genuinely independent, neither Assembly nor Compact; affects everything downstream
|
||
|
||
Paula proposes vocabulary: `concord_assembly | compact | compact_sympathetic | syndic_dominant | veil_institute | lattice_commission | independent | disputed`
|
||
|
||
Paula further notes D-172 compliance gap: without authored `dominant_faction`, the system infers Compact membership from currency zone (circular) or hop distance (explicitly wrong per D-172).
|
||
|
||
**Miri's position:** Does not explicitly oppose `dominant_faction` authoring. Notes that `system_culture` already has `cultural_register`, `cultural_register_secondary`, `primary_archetype`, `secondary_archetype`, `atmospheric_tone` — and characterizes adding *cultural* fields as out of scope. `dominant_faction` is a different category (political, not cultural), and Miri's rejection is directed at cultural register duplication, not at faction authoring.
|
||
|
||
**Burnelli's position:** Notes `political_register` is "Paula's domain" and defers; neither advocates for nor against it. From economic integration perspective, `political_register` would not touch the commodity-building pipeline — consumed by NPC generation and dialogue only (Burnelli §Q5).
|
||
|
||
**Assessment:** This is a domain-boundary question more than a design disagreement. Paula needs `dominant_faction` to make her enum differentiation work (see Fork 1). Burnelli defers. Miri's objection is specifically to cultural duplication, not to faction authoring.
|
||
|
||
---
|
||
|
||
## 4. Fork 3 — `dominant_production_scale` Field: Needed or Not?
|
||
|
||
**Miri (yes):** Proposes `dominant_production_scale TEXT` as an optional field. Identifies 7 explicit cases in §Q1 where the catalog's global `production_ubiquity` understates the system's local identity. If not present, Ran looks like any farming moon; Groombridge looks like scattered financial services; Prometheus looks like a regional medical center.
|
||
|
||
**Burnelli (not proposed):** Burnelli's proposal does not include a scale override. The implicit assumption is that `production_ubiquity` from the catalog is correct as-is. If Ran is pinned to `agricultural_produce`, it gets `Ubiquitous → scattered instances in mixed-use`, which Miri identifies as wrong.
|
||
|
||
**Paula (not applicable):** Paula's enum directly encodes concentration into the value (e.g., `agricultural_base = Perishable × Ubiquitous`). This does not resolve the Ran-vs-Arbour distinction — both would be `agricultural_base` but one is the Reach's breadbasket and the other is an estate world.
|
||
|
||
**Note to user:** This fork is directly tied to Fork 1. If Position A (commodity FK) is chosen, Miri's `dominant_production_scale` field may be necessary to achieve correct built-form output for hero systems. If Position B (enum) is chosen, some scale cases are handled by the enum directly, but the Ran-vs-Arbour distinction remains.
|
||
|
||
---
|
||
|
||
## 5. Consensus on Named Systems: Must-Pin List
|
||
|
||
The following systems were named by two or more participants as requiring explicit authoring before the generator runs. GJ IDs from Paula and Miri where provided.
|
||
|
||
### Core/Near-Core (Unanimous Priority)
|
||
|
||
| System | GJ ID | Burnelli pin | Paula pin | Miri pin | Overlap status |
|
||
|---|---|---|---|---|---|
|
||
| Sirius | GJ 244A | `commission_certification` | `governance_center` | `commission_certification` | All three agree; form differs by Fork 1 |
|
||
| Gateway | GJ 71 | `commission_certification` | `transit_hub` | `commission_certification` | All three agree |
|
||
| Groombridge | GJ 380 | `financial_services` | `financial_hub` | `financial_services` (concentrated) | All three agree |
|
||
| Keid | GJ 166A | `legal_services` (implied) | `research_station` | `tourism` (monopolistic) | Paula and Miri diverge on commodity |
|
||
| Prometheus | GJ 702B | `medical_services` implied | `precision_industry` | `medical_services` (monopolistic) | All three agree on identity |
|
||
| Ran | GJ 144 | `agricultural_produce` | `agricultural_base` | `agricultural_produce` (concentrated) | All three agree; Miri adds scale override |
|
||
| Bastion | GJ 570A | `commission_certification` implied | `military_bastion` | `commission_certification` | All three agree |
|
||
| Cygni B | GJ 820B | `refined_metals` (fallback) | `manufacturing_hub` | `freight_haulers` | **Fork: Miri says outputs, not inputs** |
|
||
| Renaissance | GJ 251 | `refined_metals` (fallback) | `precision_industry` | `gate_components` | **Fork: Miri identifies specific commodity** |
|
||
| Altmark | GJ 357 | — | `transit_hub` (independent) | — | Paula only; high-stakes political case |
|
||
|
||
### D-177 Terroir Pins (Non-Negotiable per Miri)
|
||
|
||
| System | Commodity | Scale | D-177 constraint | GJ confirmation needed? |
|
||
|---|---|---|---|---|
|
||
| Calloway Reach | `processed_food` | `monopolistic` | Terroir lock, 12-20y aging | Yes — GJ 3325 (Paula confirms) |
|
||
| VGV system | `agricultural_produce` | `monopolistic` | F8V stellar spectrum lock | GJ designation needs confirmation |
|
||
| Braemar | `organic_compounds` | `monopolistic` | Brach fiber: herd expansion decades | Yes — GJ 475 (Paula confirms) |
|
||
| Kvitfjell / Nyrheim | `stone` | `monopolistic` | ~800t/y geological ceiling | Yes — GJ 3737 (Paula confirms) |
|
||
| East reach lattice anchor | `lattice_grade_material` | — (catalog already monopolistic) | Strategic material, D-177 | GJ designation needs confirmation |
|
||
|
||
### North Reach, West Reach, Other Named (Paula + Miri coverage)
|
||
|
||
| System | GJ ID | Paula pin | Miri pin | Notes |
|
||
|---|---|---|---|---|
|
||
| Ostmark | GJ 601A | `agricultural_base` (compact) | — | Paula: Compact founding member, 5-century agricultural base |
|
||
| Confluent | GJ 395 | `agricultural_base` (compact_sympathetic) | — | Paula: VGV wine, F8V lock, D-177 |
|
||
| Dagat | GJ 482A | `agricultural_base` (independent) | — | Paula: deep ocean kelp, Blue dye monopoly |
|
||
| Arbour | GJ 338B | — | `agricultural_produce` (no scale override) | Miri: catalog ubiquitous IS correct for estate farming |
|
||
| Sindri | GJ 3522 | — | `metallic_ore` (concentrated) | Miri: DSMC dominance understated at common |
|
||
| Nova Roma | GJ 764 | — | `transport_vehicles` (concentrated) | Miri: MVG output identity |
|
||
| Vuurkloof | GJ 35 | — | `fusion_fuel` (concentrated) | Miri: unusual stellar type; heuristic has no path |
|
||
| Lu Ban | GJ 15A | — | `consumer_goods` (concentrated) | Miri: 300-workshop bazaar; heuristic has no signal |
|
||
| Tessera | GJ 3877 | — | `legal_services` (concentrated) | Miri: Assembly Interpretive Registry |
|
||
| Parallax | GJ 280A | — | `entertainment` (concentrated) | Miri: media/news economy; heuristic can't reach this |
|
||
| Barnard's Star | GJ 699 | — | no pin needed | Miri: residential suburb for Cygni B; heuristic correct |
|
||
|
||
---
|
||
|
||
## 6. Open Questions (Q-record candidates for Round 2 agenda)
|
||
|
||
### Q-??-A: Field form — FK or enum?
|
||
Which structure is adopted as the primary authored field? Burnelli + Miri favor `dominant_commodity_id` FK (36-value). Paula favors `system_specialization` enum (9-value). Could they coexist (an enum that compiles to the FK via a mapping table)?
|
||
|
||
**Stakes:** If the 9-value enum is adopted, what is the commodity identity for the generator? If the 36-value FK is adopted, what is the political legibility for authors?
|
||
|
||
### Q-??-B: `dominant_production_scale` — in or out?
|
||
If Position A (FK) is chosen, does `dominant_production_scale` earn its slot? Miri identifies 7 specific cases where it is required for correct D-233 output. The authoring burden is small (~20–30 entries), but it is an additional schema column and CI maintenance surface.
|
||
|
||
### Q-??-C: `dominant_faction` in this pass or deferred?
|
||
Paula makes a credible case for authoring `dominant_faction` during this pass (D-172 compliance, D-214 archetype accuracy, ~30–40 entries for named systems). Burnelli defers. Miri's objection is to cultural field duplication, not to faction authoring. Decision needed.
|
||
|
||
### Q-??-D: Keid's commodity identity
|
||
Paula pins Keid to `research_station` (NonPhysical, Specialist). Miri pins to `tourism` (monopolistic). Both note the Conservancy biosphere as the identity, but they choose different commodities. One of these is wrong, or the field (under Fork 1 resolution) subsumes the question differently.
|
||
|
||
### Q-??-E: Cygni B — freight_haulers or manufacturing_hub?
|
||
Miri: `freight_haulers` (the OUTPUT of the system). Paula: `manufacturing_hub` (the PROCESS of the system). Burnelli's heuristic would land on `refined_metals` or similar (the inputs). All three would agree on the *identity* — Cygni B built the Reach — but they land on different commodity IDs.
|
||
|
||
### Q-??-F: GJ confirmation for D-177 terroir systems
|
||
The east reach lattice anchor, VGV system (F8V spectrum), and possibly others need GJ catalog IDs confirmed before the content pass can proceed. This is a pre-pass lookup task.
|
||
|
||
### Q-??-G: Flagged systems requiring Miri confirmation
|
||
Paula flags two systems where GTTR and corp presence diverge:
|
||
- **Dài Lộ (GJ 136)** — GTTR says "Grand Road" (transit) vs Takamori Lattice Works HQ (precision industry / lattice substrate). Paula's instinct: `precision_industry`; needs Miri's lore confirmation.
|
||
- **Zenzele (GJ 1111)** — GTTR emphasizes electromagnetic hardening expertise vs Baektu Mining Alliance + Umoja Freight HQ. May be `manufacturing_hub` rather than `extraction_colony`. Needs Miri's confirmation.
|
||
|
||
---
|
||
|
||
## 7. Implicit Decisions Observed
|
||
|
||
For the record — these were stated or assumed by participants but not formally voted on:
|
||
|
||
| Implicit decision | Basis |
|
||
|---|---|
|
||
| D-233 will be re-amended | Workshop brief explicitly states this; all participants design within that expectation |
|
||
| `#982` design-blocked stubs in `city_context_reader.rs` will be replaced by this field | Burnelli §integration summary; confirms pipeline endpoint |
|
||
| Trait catalog authoring (D-232) is a downstream co-authoring task for Miri + Araminta | Miri §Q5; confirmed that the trait definitions themselves are not part of this pass |
|
||
| Compact member systematic review rule | Paula proposes: any Compact system where heuristic would produce `extraction_colony` → flag before committing |
|
||
|
||
---
|
||
|
||
## 8. Summary Table: Q1–Q5 by Participant
|
||
|
||
| Question | Burnelli-Sheldon | Paula | Miri | Status |
|
||
|---|---|---|---|---|
|
||
| Q1 — The field | `dominant_commodity_id` FK (36 values) | `system_specialization` enum (9 values) | Endorses FK + adds `dominant_production_scale` override | **FORK 1 (unresolved)** |
|
||
| Q2 — Weighted variation | Integer weighted draw; W_SYS=10,000; algorithm specified | Three-level priority; political modifiers for Compact/Assembly | Endorses algorithm; adds 3 lore-specific patterns | Consensus on mechanism, details in Fork 1 resolution |
|
||
| Q3 — `economy_size`? | **OUT** — redundant with pop × prosperity | **OUT** — redundant | **OUT** — redundant | **Unanimous** |
|
||
| Q4 — Content pass | TOML source; DB schema; detailed CI spec; 300 system authoring division | Same TOML source; 19 specific must-pin systems; Compact systematic rule | 18 core/near-core pins; 5 D-177 terroir pins; 6 high-risk contradiction cases | Consensus on structure; specific pins need reconciliation |
|
||
| Q5 — Additional fields | `atlas_body_trait_bias` hero pins only | + `dominant_faction` authored pin | + `dominant_production_scale` (20–30 systems); no political register (already in `system_culture`) | **FORK 2 (dominant_faction); FORK 3 (production_scale)** |
|
||
|
||
---
|
||
|
||
*Round 1 documented. No final proposal is recorded here — that is Round 2's deliverable after the user checkpoint.*
|
||
*Source files read: `miri-round1.md`, `burnelli-sheldon-round1.md`, `paula-round1.md`.*
|
||
*Qatux — 2026-05-31*
|