Files
settled-reach/docs/workshops/commodity-catalog/tyre-round2.md
T
jpmschweitzerandClaude Opus 4.6 ac05dbd21f data(economics): commodity catalog — 36 types, 21 production chains
Workshop #801 deliverable: commodities.toml (36 commodities across
5 tiers), production_chains.toml (21 Leontief recipes including
2 substitution routes), schema.md (SQL DDL + validation rules).

Key design choices: brands are not commodities (separate layer),
water→fuel at 8:1 yield, 3 political sub-flags replacing single
boolean, gate energy-over-gate as commercial service. Wiki stub
pages generated for all 36 commodities.

Tickets #811–#815 created for follow-up work. #801 closed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 22:00:33 +02:00

31 KiB
Raw Blame History

Tyre — Round 2 Converged Proposal

cracks knuckles — I've cross-read all four Round 1 outputs. Here's the converged technical proposal addressing all five lead directives.


1. Resolving the Luxury Goods Tension (Directive b)

The lead identified the core problem: if "luxury goods" is one abstract commodity, how does Calloway whisky (12-20y aging, terroir ceiling), Kvitfjell marble (800t/y geological ceiling), and VGV wine (F8V stellar lock) coexist in the simulation with their radically different constraints?

Solution: three-layer separation.

Layer What it knows Example
Commodity catalog One entry: luxury_goods. Abstract category. luxury_goods, tier=final, elasticity=highly_elastic
Production chains Multiple recipes produce the same output from different inputs. luxury_from_agriculture, luxury_from_stone, luxury_from_textiles
Corporation data Per-corp production constraints: location lock, capacity ceiling, aging pipeline, terroir. Calloway operates luxury_from_agriculture at Calloway Reach, 12-20y aging, terroir-locked

This works because:

  • The commodity stays abstract (directive a — brands are not commodities)
  • D-173's structural substitution: multiple chains → same output is already in the spec
  • D-176 attaches productivity seeds to corporation×site pairs, not to commodities
  • D-177's hard ceilings (Kvitfjell 800t/y, brach fiber herd, F8V stellar lock) live in corporation constraint data
  • The 987% luxury margin B-S identified IS the brand premium, expressed through Specialist/Monopolist archetype pricing behavior in the corporate agent layer
  • New luxury producers are added by creating a corp and assigning it a chain — zero commodity catalog changes

Three luxury production chains:

[luxury_from_agriculture]
output = "luxury_goods"
output_quantity = 1.0
inputs = [
    { commodity = "agricultural_produce", quantity = 2.0 },
    { commodity = "chemicals", quantity = 0.3 },
]
description = "Spirits, wines, premium food. Terroir/aging constraints per corporation."

[luxury_from_stone]
output = "luxury_goods"
output_quantity = 0.5
inputs = [
    { commodity = "stone", quantity = 3.0 },
]
description = "Decorative stone, luxury marble. Geological ceiling per corporation."

[luxury_from_textiles]
output = "luxury_goods"
output_quantity = 1.0
inputs = [
    { commodity = "textiles", quantity = 1.5 },
    { commodity = "organic_compounds", quantity = 0.5 },
]
description = "Premium garments, technical craft goods. Fiber supply ceiling per corp."

Each chain has independent failure modes: a rare minerals shortage doesn't touch luxury goods. A timber shortage doesn't affect wine production. The scarcity cascades are input-specific, and the corporation layer maps which corps operate which chains where.


2. Unified TOML Schema

Updated field set

I'm merging the best from all four proposals. My Round 1 had 8 fields. The converged schema has 12. Each addition creates distinct simulation behavior.

From B-S (new):

  • production_ubiquity — guides generate_corporations in distributing production across the map. Without it, the initialization binary has no guidance on geographic spread. 5 tiers from B-S: ubiquitous → monopolistic.
  • demand_model — determines tâtonnement behavior: market (standard), utility (population-driven floor, never hits zero), compliance (regulation-driven, tracks Commission presence). This is what makes water/fuel behave differently from consumer goods under the same supply shock.

From Gestalt (replaces my political_sensitivity boolean):

  • commission_certified — requires Commission certification for formal sale. The cost of certification IS the shadow economy incentive.
  • compact_contested — Compact officially contests Commission authority. Creates the political friction.
  • shadow_viable — shadow market routinely exists. Flags where the shadow economy bites.

Three booleans instead of one gives the sim three independent political signals per commodity. A commodity can be Commission-certified but NOT Compact-contested (e.g., food safety certification — everyone accepts it). Or Compact-contested but NOT shadow-viable (e.g., vehicle registration — contested in principle, but impractical to shadow-market a starship).

Retained from my Round 1 (no change):

  • tier, elasticity, base_price, unit, description

Refined from my Round 1:

  • bulk_class — expanded from 4 to 7 values, incorporating B-S's transport cost analysis and Gestalt's oversized/perishable insights

Complete TOML record format

# wiki/economics/commodities.toml
#
# Source of truth for the simulation's commodity vocabulary.
# Compiled to systems.db via `make economy-db`.
#
# Fields:
#   name                    — display name (Title Case)
#   tier                    — raw | intermediate | final | service_professional | service_luxury
#   elasticity              — perfectly_inelastic | inelastic | unit_elastic | elastic | highly_elastic
#   base_price              — equilibrium price in Tractus (float, must be > 0)
#   bulk_class              — bulk | liquid | standard | compact | precision | oversized | non_physical
#   unit                    — tonnes | units | contracts
#   production_ubiquity     — ubiquitous | common | regional | concentrated | monopolistic
#   demand_model            — market | utility | compliance
#   commission_certified    — bool; requires Commission certification for formal sale
#   compact_contested       — bool; Compact contests Commission authority over this
#   shadow_viable           — bool; shadow market routinely exists for this commodity
#   description             — optional flavor text (for wiki/UI, not consumed by sim)

Updated bulk_class (7 values)

Class Transport multiplier Rationale
bulk 1.2x Heavy, low-value-density. Ore, stone, timber, agricultural produce
liquid 1.3x Requires containment. Water, chemical feedstock, fusion fuel
standard 1.0x Normal cargo. Refined metals, panels, processed food, textiles
compact 0.8x High-value, low-mass. Electronics, consumer goods, drive cores
precision 0.6x Very high value, special handling. Rare minerals, implant hardware, luxury goods
oversized 2.0x+ Physically awkward, partial assembly. Heavy equipment, vehicles, habitat modules
non_physical Cannot traverse gates. All services

B-S's transport cost analysis (section 5 of his Round 1) shows these multipliers produce 3:14:1 ratios for bulk goods and 1.5:12:1 for precision goods across the Reach diameter. This is the right range for meaningful geographic specialization without absurd price extremes.

Gestalt's oversized class is the key addition: heavy equipment, vehicles, freight haulers, and habitat modules at 2.0x+ creates durable manufacturing hub economics. You can't arbitrage away Stalownia's advantage by shipping finished rigs — the transport cost is too high. This is what makes manufacturing centers structural rather than transient.

Elasticity labels (5 values)

Label ε range Behavior Examples
perfectly_inelastic 0.00.1 Price absorbs all adjustment. Dramatic spikes water (on stations), fusion_fuel, medical_services
inelastic 0.20.4 Modest demand reduction, significant price effect agricultural_produce, processed_food, chemicals, legal_services, financial_services
unit_elastic 0.81.2 Proportional adjustment metallic_ore, structural_panels, electronics, consumer_goods, habitat_modules
elastic 1.52.5 Buyers defer/substitute heavy_equipment, vehicles, freight_haulers, entertainment, drive_cores
highly_elastic 3.0+ Market collapses to essential buyers luxury_goods, gate_components, implant_hardware, tourism

B-S's panic mechanism (stockpile-target hoarding) is a sim-runtime behavior, not a commodity property. The sim derives it from elasticity + stockpile thresholds. This keeps the TOML clean and the panic behavior configurable without re-authoring commodity data.


3. Unified Commodity List

Raw Materials (8)

D-173 said ~7. The 8th (chemical_feedstock) serves distinct chains from organic_compounds — geological/gas extraction vs. biosphere harvesting. They are not substitutable.

ID Name Bulk Ubiquity Demand Elasticity Base (T) Commission Compact Shadow
metallic_ore Metallic Ore bulk common market unit_elastic 10 no no no
rare_minerals Rare Minerals precision concentrated market unit_elastic 80 no no partial
timber Timber/Biomass bulk regional market unit_elastic 15 no no no
agricultural_produce Agricultural Produce bulk ubiquitous utility inelastic 5 partial no no
water Water/Volatiles liquid ubiquitous utility perfectly_inelastic 2 no no no
organic_compounds Organic Compounds standard regional market unit_elastic 35 no no no
stone Stone/Aggregate bulk common market unit_elastic 8 no no no
chemical_feedstock Chemical Feedstock liquid common market unit_elastic 12 yes (hazmat) yes yes

Notes:

  • water is raw. fusion_fuel is intermediate — directive (c).
  • rare_minerals subsumes Gestalt's "lattice-grade material" and Miri's "precision-grade minerals" at the abstract level. The lore texture (east_reach lattice substrates, exotic crystals) lives in corporation data.
  • chemical_feedstock is Commission-certified (hazmat) and Compact-contested (Compact views hazmat certification as tariff by another name — Gestalt's analysis, section 4).
  • agricultural_produce has demand_model = utility because populations need food regardless of economic conditions (B-S's point about demand floors).

Intermediate Goods (9)

D-173 said ~8. The 9th (fusion_fuel) is mandated by directive (c).

ID Name Bulk Ubiquity Demand Elasticity Base (T) Commission Compact Shadow
refined_metals Refined Metals standard common market inelastic 30 no no no
advanced_alloys Advanced Alloys standard regional market unit_elastic 100 no no no
fusion_fuel Fusion Fuel liquid common utility perfectly_inelastic 20 yes (safety) yes yes
processed_food Processed Food standard ubiquitous utility inelastic 15 partial no no
electronics Electronics/Components compact regional market unit_elastic 120 no no no
chemicals Chemicals/Pharmaceuticals standard regional market inelastic 60 yes yes yes
textiles Textiles/Composites standard regional market unit_elastic 50 no no no
structural_panels Structural Panels standard regional market unit_elastic 45 no no no
drive_cores Drive Cores compact concentrated market elastic 200 no no no

Notes:

  • fusion_fuel from water with low yield per directive (c). demand_model = utility because every station needs continuous power. Commission-certified (fissile safety), Compact-contested (energy independence is a Compact political project — Gestalt section 4), shadow-viable (frontier fuel without certification).
  • chemicals is Commission-certified, Compact-contested, shadow-viable — same pattern as chemical_feedstock. The certification chain cascades.

Final Goods (8)

D-173 said ~7. The 8th (freight_haulers) has a different demand function from vehicles — B-S's argument that freight hauler demand = f(trade_volume, fleet_age) while vehicle demand = f(population, wealth) is compelling. They respond to different economic signals.

ID Name Bulk Ubiquity Demand Elasticity Base (T) Commission Compact Shadow
heavy_equipment Heavy Equipment oversized regional market elastic 250 no no no
vehicles Vehicles/Craft oversized regional market elastic 350 yes (safety) partial partial
freight_haulers Freight Haulers oversized concentrated market elastic 300 yes (safety) partial partial
consumer_goods Consumer Goods compact ubiquitous market unit_elastic 80 no no partial
luxury_goods Luxury Goods precision monopolistic market highly_elastic 500 partial no yes
implant_hardware Implant Hardware precision concentrated market highly_elastic 400 yes (medical) HIGH HIGH
gate_components Gate Components oversized monopolistic market highly_elastic 800 yes (strategic) extreme high
habitat_modules Habitat Modules oversized regional market unit_elastic 150 no no no

Notes:

  • luxury_goods at production_ubiquity = monopolistic because premium luxury production is location-locked (terroir, geological ceilings). Generic luxury goods might be produced more widely, but the high-margin stuff is rare. Multiple production chains handle the variety (section 1).
  • implant_hardware is THE political flashpoint — Commission certification + Compact rejection. D-037 canonical contraband territory. Both compact_contested and shadow_viable are maximally true.
  • gate_components is the Commission's ultimate leverage tool. Monopoly pricing (Gate Corp) + Commission certification = maximum structural extraction. Gestalt nailed this in section 4.
  • freight_haulers with demand_model = market but demand function driven by trade volume (the sim derives this from trade flow signals, not population). B-S's separation from vehicles is correct.

Professional Services (7)

D-173 said ~5. Directive (e): more is richer.

ID Name Ubiquity Demand Elasticity Base (T) Commission Compact Shadow
legal_services Legal Services common compliance inelastic 100 yes partial partial
financial_services Financial Services common market inelastic 120 no no no
medical_services Medical/Re-embodiment regional utility perfectly_inelastic 200 yes (medical) partial HIGH
insurance Insurance/Risk regional market unit_elastic 75 no no no
information_brokerage Information Brokerage regional market unit_elastic 50 no no partial
commission_certification Commission Certification concentrated compliance inelastic 100 inherent extreme N/A
habitation Habitation/Berths common utility inelastic 40 no no no

Notes:

  • information_brokerage consolidates "intelligence" and "information brokerage" per directive (d). Adams & Ford, Ferreira Monteiro, Mercado all provide intelligence products through this service. One service, multiple corporate providers.
  • commission_certification is separate from legal_services per Miri's argument: the Commission's own regulatory process is the mechanism that creates the shadow economy. Its cost, availability, and Tractus-denomination is what makes the Compact's alternative economy rational. This is the most politically charged "commodity" in the simulation.
  • habitation covers Gestalt's "rent" verb from D-131 and creates station-capacity pressure. A booming node runs out of berths → caps service growth → creates real estate price signal → forces expansion or migration. Mechanically important.
  • medical_services subsumes Miri's separate "re-embodiment" service. Re-embodiment is the premium tier within medical services, not a separate service. The corporation providing it (Prometheus-adjacent) determines whether re-embodiment is available at a given node.
  • Logistics management dropped per Gestalt: redundant with transport cost model.

Luxury/Experiential Services (3)

ID Name Ubiquity Demand Elasticity Base (T) Commission Compact Shadow
tourism Tourism concentrated market highly_elastic 100 no no no
entertainment Entertainment/Holo-content common market elastic 30 no no no
hospitality Fine Dining/Hospitality regional market elastic 60 no no no

4. Complete Production Chain Set

Raw → Intermediate

Chain ID Output Inputs Notes
smelt_ore refined_metals (1.0) metallic_ore (2.0) High volume, simple processing
alloy_fabrication advanced_alloys (1.0) metallic_ore (1.5), rare_minerals (0.3) Rare minerals are bottleneck
fuel_refining fusion_fuel (1.0) water (5.0) Low yield — directive (c). 5:1 ratio makes fuel expensive despite cheap input
food_processing processed_food (1.0) agricultural_produce (1.5), water (0.2) Ubiquitous, low margin
electronics_fabrication electronics (1.0) rare_minerals (0.5), refined_metals (0.3) Rare minerals are scarcity driver
chemical_processing chemicals (1.0) chemical_feedstock (1.0), water (0.3) Industrial chemistry
chemical_from_organics chemicals (0.8) organic_compounds (1.0), water (0.3) Substitution route: biochem path to same output, lower yield
textile_production textiles (1.0) organic_compounds (0.8), chemicals (0.2) Includes brach fiber processing pathway
panel_milling structural_panels (1.0) timber (1.0), refined_metals (0.5) Timber-dependent — forest world proximity matters
drive_core_assembly drive_cores (1.0) rare_minerals (0.4), advanced_alloys (0.8) Double rare_minerals dependency (direct + via alloys)

Intermediate → Final

Chain ID Output Inputs Notes
heavy_equipment_assembly heavy_equipment (1.0) refined_metals (1.0), electronics (0.3), drive_cores (0.2) Stalownia's recipe
vehicle_manufacturing vehicles (1.0) advanced_alloys (0.8), electronics (0.3), drive_cores (0.3) MVG uses alloys, not base metal
freight_hauler_construction freight_haulers (1.0) refined_metals (1.5), drive_cores (0.5), electronics (0.3) Metal and drive-core intensive
consumer_goods_assembly consumer_goods (1.0) processed_food (0.3), textiles (0.3), electronics (0.2) Broad input mix — diversified
luxury_from_agriculture luxury_goods (1.0) agricultural_produce (2.0), chemicals (0.3) Spirits, wines, premium food. Aging/terroir per corp
luxury_from_stone luxury_goods (0.5) stone (3.0) Decorative stone, marble. Geological ceiling per corp
luxury_from_textiles luxury_goods (1.0) textiles (1.5), organic_compounds (0.5) Premium garments, craft goods. Fiber ceiling per corp
implant_fabrication implant_hardware (1.0) electronics (0.5), chemicals (0.3), advanced_alloys (0.2) Electronics-dependent — rare mineral cascade
gate_component_assembly gate_components (1.0) advanced_alloys (1.0), drive_cores (0.5), electronics (0.4) Most input-intensive final. Triple rare_minerals dependency
habitat_module_assembly habitat_modules (1.0) structural_panels (1.5), electronics (0.4), chemicals (0.3) Panel-heavy — timber scarcity cascades here

Substitution Routes (structural, per D-173)

Two substitution routes in the intermediate tier:

  1. chemicals: two recipes (chemical_processing from chemical_feedstock, chemical_from_organics from organic_compounds). Different yields, same output. A node near biosphere worlds uses the organic path; a node near gas extraction uses the chemical path. Both produce chemicals.
  2. luxury_goods: three recipes from different raw inputs (agriculture, stone, textiles). Each has independent failure modes and geographic anchors.

Scarcity Cascade Analysis (from B-S, validated)

B-S's cascade analysis holds with the unified list. The critical cascades:

Raw shortage Direct impact Downstream Severity
rare_minerals electronics ↓, advanced_alloys ↓, drive_cores ↓ implant_hardware ↓↓, gate_components ↓↓↓, vehicles ↓↓ CRITICAL — entire high-tech sector
metallic_ore refined_metals ↓, advanced_alloys ↓ heavy_equipment ↓↓, freight_haulers ↓↓, habitat_modules ↓ Construction + heavy industry halt
water fusion_fuel ↓↓, processed_food ↓, chemicals ↓ Nearly everything downstream CRITICAL — water is the hidden universal dependency
timber structural_panels ↓ habitat_modules ↓↓ Narrow but politically explosive (no new stations)
organic_compounds textiles ↓, chemicals (partial) ↓ luxury_goods ↓, consumer_goods ↓ Quality of life degradation
agricultural_produce processed_food ↓, luxury_goods ↓ consumer_goods ↓ Short chain but inelastic — massive price effect

New cascade from directive (c): water → fusion_fuel. Every system needs fuel. The 5:1 yield ratio means a water disruption creates a 5x amplified fuel shortage. Water-poor stations far from ice sources have permanently elevated operating costs AND energy costs. This is a structural double-whammy that creates real geographic disadvantage for bare-rock frontier stations. Elegant.


5. Service Demand Model (Gestalt integration)

Services don't participate in production chains (D-173). They are demand sinks on the physical commodity chain. Gestalt's goods-demand multiplier model (section 5 of his Round 1) is the right approach:

Service Goods consumed Mechanism
legal_services fusion_fuel (office power) Tractus velocity (fees accelerate currency circulation)
financial_services Tractus velocity; affects cross-zone trade friction
medical_services chemicals, electronics Hospital/clinic consumables
insurance Affects trade volume through risk pricing
information_brokerage Affects signal visibility (improves official_coverage_ratio)
commission_certification Tractus sink (certification fees); inverse of shadow economy
habitation consumer_goods, fusion_fuel Station life support and amenities
tourism luxury_goods, consumer_goods Destination consumption
entertainment electronics (production hardware), fusion_fuel Content creation infrastructure
hospitality agricultural_produce, processed_food Kitchen/restaurant inputs

This means a high-tourism node pulls increased luxury goods demand. A high-medical-services node increases chemicals demand. These are emergence-generating interactions without explicit service transaction modeling. The service's throughput seed (D-176) determines volume; the goods-demand multiplier creates the supply chain link.


6. Updated SQL Schema (for #804)

CREATE TABLE commodities (
    commodity_id TEXT PRIMARY KEY,
    name TEXT NOT NULL,
    tier TEXT NOT NULL CHECK(tier IN (
        'raw', 'intermediate', 'final',
        'service_professional', 'service_luxury'
    )),
    elasticity TEXT NOT NULL CHECK(elasticity IN (
        'perfectly_inelastic', 'inelastic', 'unit_elastic',
        'elastic', 'highly_elastic'
    )),
    base_price REAL NOT NULL CHECK(base_price > 0),
    bulk_class TEXT NOT NULL CHECK(bulk_class IN (
        'bulk', 'liquid', 'standard', 'compact',
        'precision', 'oversized', 'non_physical'
    )),
    unit TEXT NOT NULL CHECK(unit IN ('tonnes', 'units', 'contracts')),
    production_ubiquity TEXT NOT NULL CHECK(production_ubiquity IN (
        'ubiquitous', 'common', 'regional',
        'concentrated', 'monopolistic'
    )),
    demand_model TEXT NOT NULL CHECK(demand_model IN (
        'market', 'utility', 'compliance'
    )),
    commission_certified INTEGER NOT NULL DEFAULT 0,
    compact_contested INTEGER NOT NULL DEFAULT 0,
    shadow_viable INTEGER NOT NULL DEFAULT 0,
    description TEXT
);

CREATE TABLE production_chains (
    chain_id TEXT PRIMARY KEY,
    output_commodity TEXT NOT NULL REFERENCES commodities(commodity_id),
    output_quantity REAL NOT NULL DEFAULT 1.0 CHECK(output_quantity > 0),
    location_bound INTEGER NOT NULL DEFAULT 0,
    description TEXT
);

CREATE TABLE chain_inputs (
    chain_id TEXT NOT NULL REFERENCES production_chains(chain_id) ON DELETE CASCADE,
    commodity_id TEXT NOT NULL REFERENCES commodities(commodity_id),
    quantity REAL NOT NULL CHECK(quantity > 0),
    PRIMARY KEY (chain_id, commodity_id)
);

CREATE INDEX idx_commodities_tier ON commodities(tier);
CREATE INDEX idx_commodities_ubiquity ON commodities(production_ubiquity);
CREATE INDEX idx_chains_output ON production_chains(output_commodity);
CREATE INDEX idx_chain_inputs_commodity ON chain_inputs(commodity_id);

12 fields per commodity. 1:1 TOML→DB mapping. No computed columns.


7. Updated Validation Rules

All Round 1 rules remain. Additions for new fields:

New hard failures

Rule Rationale
All production_ubiquity values must match enum Typo protection
All demand_model values must match enum Typo protection
All bulk_class values must match enum (7 values now) Expanded from 4
Services must have bulk_class = "non_physical" Services can't be transported
demand_model = "utility" commodities must have elasticity ∈ {perfectly_inelastic, inelastic} Utility goods can't be highly elastic — people need them
demand_model = "compliance" commodities must have commission_certified = true Compliance demand requires a certifying authority
fusion_fuel must appear as an intermediate, not raw Directive (c) constraint

New soft warnings

Rule Rationale
Commodities with shadow_viable = true SHOULD have commission_certified = true OR compact_contested = true Shadow markets arise from regulatory friction — if there's no friction, why shadow?
production_ubiquity = "monopolistic" commodities SHOULD have elasticity ∈ {elastic, highly_elastic} Monopolistic supply + inelastic demand = runaway prices with no equilibrium

8. Complete Example TOML Records

Raw material example

[water]
name = "Water/Volatiles"
tier = "raw"
elasticity = "perfectly_inelastic"
base_price = 2.0
bulk_class = "liquid"
unit = "tonnes"
production_ubiquity = "ubiquitous"
demand_model = "utility"
commission_certified = false
compact_contested = false
shadow_viable = false
description = "Water ice, atmospheric gases. Life support critical. Fusion fuel feedstock."

Intermediate example (directive c — the new water→fuel chain)

[fusion_fuel]
name = "Fusion Fuel"
tier = "intermediate"
elasticity = "perfectly_inelastic"
base_price = 20.0
bulk_class = "liquid"
unit = "tonnes"
production_ubiquity = "common"
demand_model = "utility"
commission_certified = true
compact_contested = true
shadow_viable = true
description = "Deuterium/tritium refined from water. Low yield. Continuous consumption."

Final good example (the politically charged one)

[implant_hardware]
name = "Implant Hardware"
tier = "final"
elasticity = "highly_elastic"
base_price = 400.0
bulk_class = "precision"
unit = "units"
production_ubiquity = "concentrated"
demand_model = "market"
commission_certified = true
compact_contested = true
shadow_viable = true
description = "Neural interfaces, lattice components. Commission-certified. THE Compact flashpoint."

Production chain example (with substitution)

[chemical_processing]
output = "chemicals"
output_quantity = 1.0
inputs = [
    { commodity = "chemical_feedstock", quantity = 1.0 },
    { commodity = "water", quantity = 0.3 },
]
description = "Industrial chemistry from geological/gas feedstock."

[chemical_from_organics]
output = "chemicals"
output_quantity = 0.8
inputs = [
    { commodity = "organic_compounds", quantity = 1.0 },
    { commodity = "water", quantity = 0.3 },
]
description = "Biochemical processing. Lower yield, different source. Substitution route."

Service example

[commission_certification]
name = "Commission Certification"
tier = "service_professional"
elasticity = "inelastic"
base_price = 100.0
bulk_class = "non_physical"
unit = "contracts"
production_ubiquity = "concentrated"
demand_model = "compliance"
commission_certified = true
compact_contested = true
shadow_viable = false
description = "Commission regulatory certification. Tractus-denominated. Availability inverse to shadow economy."

(Shadow-viable is false for certification itself — you can't shadow-market the Commission's own stamp. You shadow-market the GOODS that skip certification.)


9. Totals and Delta from D-173

Category D-173 target This proposal Delta Justification
Raw materials ~7 8 +1 chemical_feedstock distinct from organic_compounds
Intermediate goods ~8 9 +1 fusion_fuel per directive (c)
Final goods ~7 8 +1 freight_haulers per B-S demand function analysis
Professional services ~5 7 +2 commission_certification (shadow economy mechanism), habitation (rent verb)
Luxury services ~3 3 0
Total ~30 35 +5 Each addition creates distinct simulation behavior

D-173 said "approximately 30." Five additions, each with a clear mechanical justification. None are brand-level splits (directive a). None are gratuitous duplication (directive d). The count follows from what the civilization needs (task framing).


10. Difficulty Assessment (unchanged)

  • TOML schema: Tier 1 (straightforward). More fields per record, same flat structure.
  • Build step: Tier 2 (moderate). ~250 lines now (was ~200), extra validation for new fields.
  • Schema alignment: Tier 1 (straightforward). 12-column table, direct mapping.
  • Validation rules: Tier 2 (moderate). Cross-field consistency checks added.

Total: feasible, well-bounded. The risk remains content completeness, not technical complexity.


11. Open Questions for the Team

  1. B-S: Is the 5:1 water→fuel yield ratio right for the economic dynamics you want? Lower ratio = fuel cheaper, less geographic pressure. Higher ratio = more frontier economic stress.

  2. Gestalt: The service goods-demand multipliers (section 5) — should these be authored in a TOML file, or hardcoded in the sim? If TOML, we need a service_demand.toml schema alongside commodities and chains.

  3. Miri: The description field — placeholder quality for now, or should Mellanie do a pass before the TOML ships? (This is orthogonal to the schema question but affects the authoring timeline.)

  4. All: Is 35 commodities the right count, or should any of my 5 additions be collapsed? I can defend all five, but I'm not attached to chemical_feedstock if it truly collapses into organic_compounds.