Files
settled-reach/docs/workshops/system-economic-specialization/round-1-notes.md
T
jpmschweitzerandClaude Opus 4.8 33c083f0ef docs(workshops): system-economic-specialization rounds + outcomes
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>
2026-05-31 18:40:08 +02:00

220 lines
18 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.
# 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.** ~3040 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 ~2030 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 (~2030 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, ~3040 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: Q1Q5 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` (2030 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*