# Workshop — System economic-specialization field (lore-authored dominant commodity) *Short, focused workshop. Goal: design ONE authored per-system field (maybe two, or a small identity set) that drives each settlement's dominant commodity — so the built world stays in step with GTTR/wiki lore instead of being guessed by a heuristic.* **Participants:** Miri, Burnelli-Sheldon, Paula ## Why we're here (the problem) Layer 2 (#982) needs each settlement's **dominant commodity**, which drives its built form (D-233: `BulkClass` × `ProductionUbiquity` → coverage, vocabulary, spread). We tried deriving it from `economic_role` + corp-HQ + `planet_class`. That heuristic **can contradict authored lore**: it could turn the core's breadbasket into a foundry, or make the MVG homeworld about cereal products. **Decision already taken (the frame — don't relitigate):** authored lore WINS. The dominant commodity for a system is **authored**, lore/GTTR-consistent. The role+corp+planet_class heuristic survives only as a *fallback / weighting basis* for unnamed, generic worlds. This workshop designs the authored layer. ## The shape the human wants (design within this) - **ONE authored field per system** = the system's economic specialization / dominant-commodity character. Lore-driven, GTTR-consistent. - **Maybe a SECOND field — `economy_size`** — a modifier. Decide if it earns its place and what it modifies. - **Within a system, bodies vary *weightedly*** around the system field — an industrial system can still have a farming moon, but the system reads as its authored character. The variation is weighted, not free. - A **300-system content pass** fills this field (Miri + Paula + Burnelli), staying in step with the wiki/GTTR. Keep the authoring burden to ~1 field (2 max, or a tight identity set per Q5) per system. ## Frozen-amber caveat (pin this) The field is **static, authored, t=0** — read at build time into `systems.db`, never the rolling economy. Derivation must stay deterministic (D-010). No `PressureState`, no tâtonnement, no save-state. ## Questions for participants Each participant answers all five from their lens (Miri = lore/GTTR truth; Burnelli-Sheldon = economic credibility + mapping + weighting + integration; Paula = faction/political economy). Be concrete — name the field, propose its vocabulary, name worlds that must be pinned. **Miri / Burnelli-Sheldon / Paula:** 1. **Q1 — The field.** What *exactly* is the single per-system field? Its vocabulary (a commodity id? a specialization category? primary ± secondary?), and how it maps to `dominant_bulk_class` + `dominant_production_ubiquity` (D-233). Does it reuse/replace the existing `system_economy.economic_base_primary /secondary` (already authored, free-text) or supersede it? One value or a small set? 2. **Q2 — Within-system weighted variation.** How do bodies vary around the system field? What weights apply (body `economic_role`, `planet_class`, corp HQ, faction)? How is a minority body (the farming moon in a foundry system) expressed without breaking the system's authored read? Must be deterministic (seed + static data only). 3. **Q3 — `economy_size`?** Is a second field warranted? If so, what does it modify — coverage density (D-220), count of specialized blocks, labor draw (D-233 residential follow-on) — or is it already covered by `population` / `prosperity_baseline`? Decide in or out; don't add a field that duplicates one. 4. **Q4 — The content pass.** The authoring workflow for ~300 systems: who authors what (Miri = lore/GTTR truth; Paula = faction/political economy, esp. faction homeworlds & capitals; Burnelli = economic credibility + the field→commodity mapping + the weighting model); how to stay GTTR-consistent; where the source lives (wiki TOML → `import_economics.py` → `systems.db` column); CI guardrails (every system has the field; values in-vocabulary; flag systems where the field contradicts existing authored prose). 5. **Q5 — Do we want a couple MORE identity fields while the pass is open?** We're touching all ~300 systems by hand once. What other 1–2 authored per-system fields would meaningfully flesh out **identity** and are cheap to fill in the same pass — most obviously the **architecture / cultural character** (the D-232 trait-template / `atlas_body_trait_bias` "hero" pin, so a system reads architecturally as canon, not heuristic), and possibly a dominant cultural/political register. Propose the *minimal* high-value set, with the same system-level + within-system-weighted-variation shape. **Guard against scope creep:** every field is authoring burden ×300 and a maintenance surface — only fields that genuinely change how a system reads earn a slot, and each must degrade to a heuristic/default for unauthored systems. Decide the field set; don't gold-plate. ## Build on what exists (don't restart) - **#982 baseline (provisional, uncommitted):** the role+corp+planet_class heuristic in `import_economics.py` + `city_context_reader.rs` — becomes the fallback/weighting basis, not the primary driver. - **D-233** (economic signal → block-fill; the 2026-05-31 amendment defines the current heuristic — this workshop will re-amend it). - **D-184** (commodity catalogue), **D-199** (economic read-set), **D-200** (build-time tier-1 denormalization), **D-176/D-178** (rolling economy — OUT of scope here, runtime only), **D-220** (density), **D-197** (prosperity), **D-232** (architecture-flavor / trait templates — relevant to Q5). - `system_economy.economic_base_primary/secondary`, `bodies.economic_role`, `bodies.planet_class`, `corp_presence.primary_operation` — the static signals that already exist (Burnelli's earlier data memo has the full inventory). ## Workshop Format Quick, two rounds max, with a mandatory user checkpoint between. - **Round 1 — Opening positions.** Each participant reads this brief + the decisions/data for their angle and writes their answer to Q1–Q5 to `docs/workshops/system-economic-specialization/{agent}-round1.md`. Concrete: name the field, its vocabulary, the weighting model, the Q5 field set, and the worlds that must be pinned. Qatux documents; the lead presents findings to the human before any Round 2. - **Round 2 — Synthesis / convergence (only if the human approves).** Resolve forks surfaced in Round 1 into a single proposed field schema + content-pass plan. Output → a D-record (re-amending D-233 + any new record) and the ticket set (SI). Qatux (documenter) and SI (ticket prep) join and are never dismissed early. Sonnet-pinned participants.