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>
18 KiB
Round 1 Notes — System Economic-Specialization Workshop
Documenter: Qatux | Date: 2026-05-31
Source files:
docs/workshops/system-economic-specialization/miri-round1.mddocs/workshops/system-economic-specialization/burnelli-sheldon-round1.mddocs/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:
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_ubiquityanswers: 'how widely is this commodity produced across the Reach?' — a global market statement. D-233'sProductionUbiquityanswers: '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_hubrather thanextraction_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