Files
settled-reach/docs/workshops/commodity-catalog/burnelli-sheldon-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

42 KiB

Burnelli-Sheldon: Converged Commodity Catalog — Round 2

This is my converged proposal incorporating all four Round 1 outputs and all five lead directives. I'll mark where I'm making a judgment call that the team should confirm.


0. Directive Compliance

Directive How resolved
(a) Brands are not commodities No per-brand entries. Calloway, VGV, Bifrost, thrds are corporations using abstract commodity chains.
(b) Luxury goods tension One commodity, MULTIPLE production chains with different inputs and location constraints. Section 2 details.
(c) Water -> fuel Fuel moves from raw to intermediate. 8.0 water -> 1.0 fuel. Section 1 details.
(d) No gratuitous duplication Unified schema merges Tyre's base + my ubiquity/demand_model + Gestalt's 3 political flags. Eliminated duplicates.
(e) More services is richer 10 services total: 7 professional + 3 luxury. Added Commission certification, habitation, expanded medical.

1. Unified Commodity List

Raw Materials (8)

Slug Name Bulk Ubiquity Demand Base (T) Elasticity Notes
metallic_ore Metallic Ore heavy common market 10 unit_elastic South_reach extraction primary. Stalownia territory
rare_minerals Rare Minerals compact concentrated market 80 elastic Exotic crystals, rare earths. High-value, low-volume
timber Timber heavy regional market 15 unit_elastic Forest worlds only. Nordmark Skog. 40-60y replanting cycle (Miri)
agricultural_produce Agricultural Produce perishable ubiquitous utility 5 inelastic Grain, grapes, livestock, seafood, fermented ingredients. F8V/terroir constraints per D-177
water Water heavy ubiquitous utility 2 perfectly_inelastic Life support critical. Fuel refining feedstock per directive (c)
organic_compounds Organic Compounds perishable regional market 35 unit_elastic Biochemicals, pharmaceutical precursors, brach fiber (Braemar, D-177)
stone Stone & Aggregate heavy common market 8 unit_elastic Construction stone, ceramics. Kvitfjell Blue marble is premium variant (800t/y ceiling, D-177)
lattice_material Lattice-Grade Material precision concentrated market 120 elastic Strategic resource for neural lattice and gate fabrication. Geographically sparse. East_reach anchor (closes Miri's identity gap)

Key decisions:

Why 8 raws, not 7: Stone and ore follow different chains (smelting vs cutting). Lattice-grade material is separated from rare minerals because the supply chain is politically distinct: Commission-controlled, canonical contraband pathway (D-037), and the mechanism that drives the shadow economy. Collapsing it into rare minerals would make a lattice shortage cascade identically to a general rare mineral shortage, which is economically wrong and dramatically uninteresting.

Why lattice material as a raw, not Gestalt's intermediate: Miri and Gestalt both identify this material as geographically sparse and extraction-bound. The "processing" (purification, crystal growth) happens at the extraction site, not at a separate manufacturing step. It enters final goods directly — implant hardware and gate components both consume it as a raw input. This gives it a SHORT chain (raw -> final) that makes supply disruptions cascade immediately to the two most politically sensitive goods. That's the right economic behavior.

Agricultural produce is intentionally broad. Grain (Calloway), grapes (VGV), seafood (east_reach Dagat), fermented ingredients (Jeonnam) are all agricultural_produce. The distinction happens at the production chain level (multiple chains → processed_food and luxury_goods) and the corporation level (Calloway uses grain; VGV uses grapes; east_reach cooperatives use maritime harvest). This follows directive (a): brands are not commodities.

Water is ubiquitous AND perfectly inelastic. On ocean worlds it's nearly free. On bare-rock stations 8 hops from an ice source, it's life-or-death expensive. The geographic gradient for water is enormous in absolute terms despite the low base price because station consumption volumes are massive.

Intermediate Goods (9)

Slug Name Bulk Ubiquity Demand Base (T) Elasticity Primary inputs
fusion_fuel Fusion Fuel standard common utility 25 perfectly_inelastic 8.0 water
refined_metals Refined Metals standard regional market 35 inelastic 2.0 ore + 0.3 fuel
advanced_alloys Advanced Alloys compact concentrated market 100 elastic 1.5 ore + 0.3 rare minerals + 0.2 fuel
structural_panels Structural Panels standard regional market 50 unit_elastic 1.0 timber + 0.5 refined metals
processed_food Processed Food standard common utility 15 inelastic 1.5 agri produce + 0.2 water
electronics Electronics & Components compact concentrated market 130 unit_elastic 0.5 rare minerals + 0.3 refined metals + 0.2 fuel
chemicals Chemicals & Pharmaceuticals standard regional market 65 inelastic 1.0 organic compounds + 0.3 water
drive_cores Drive Cores compact concentrated market 200 elastic 0.4 rare minerals + 0.8 advanced alloys
textiles Textiles & Composites standard regional market 55 unit_elastic 0.8 organic compounds + 0.2 chemicals

Key decisions:

Fusion fuel is an intermediate, not a raw (directive c). Water -> fuel at 8:1 yield. Input cost: 16T. Fuel price: 25T. Margin: 56%. The low yield is what makes fuel expensive despite cheap inputs. This creates the interesting dynamic: every system with water CAN refine fuel, but the economics only work at scale. Small stations import; large operations refine locally.

Fuel appears as an explicit Leontief input to energy-intensive chains only: refined metals (smelting), advanced alloys (precision metallurgy), electronics (fabrication). A fuel shortage cascades through the industrial sector but spares food processing, textiles, and chemicals. This is the right scoping: fuel is critical infrastructure, not a universal bottleneck.

9 intermediates, not 8. Fuel's promotion from raw creates the 9th intermediate. D-173 said "approximately 30" total — 35 is within the spirit given the service expansion the lead mandated.

Tyre's energy question resolved: Local energy (solar, geothermal) is NOT a commodity. It's a site-level production cost modifier. Fusion fuel is the TRADED energy commodity. A site with cheap local energy has lower production costs across all chains but doesn't export "energy" through gates. This is clean: one traded energy good (fuel), one implicit cost factor (local generation).

Final Goods (8)

Slug Name Bulk Ubiquity Demand Base (T) Elasticity Primary inputs
heavy_equipment Heavy Equipment oversized regional market 250 elastic 1.0 refined metals + 0.3 electronics + 0.2 drive cores
vehicles Vehicles & Craft oversized concentrated market 400 elastic 0.8 advanced alloys + 0.3 electronics + 0.3 drive cores
consumer_goods Consumer Goods standard common market 90 unit_elastic 0.3 processed food + 0.3 textiles + 0.2 electronics
luxury_goods Luxury Goods precision monopolistic market 500 luxury_elastic MULTIPLE CHAINS — see section 2
implant_hardware Implant Hardware precision concentrated market 450 luxury_elastic 0.5 electronics + 0.3 chemicals + 0.3 lattice material
gate_components Gate Components oversized monopolistic market 800 luxury_elastic 1.0 advanced alloys + 0.5 drive cores + 0.3 electronics + 0.2 lattice material
habitat_modules Habitat Modules oversized regional market 200 unit_elastic 1.5 structural panels + 0.4 electronics + 0.3 chemicals
freight_haulers Freight Haulers oversized concentrated market 350 elastic 1.5 refined metals + 0.5 drive cores + 0.3 electronics

Key decisions:

Oversized bulk class (from Gestalt). Heavy equipment, vehicles, gate components, freight haulers, and habitat modules are all B-oversized (2.5x transport cost). This creates DURABLE manufacturing centers — shipping finished rigs is prohibitively expensive, so manufacturing stays near raw sources. This is the mechanism that makes Stalownia's south_reach location structurally persistent. Gestalt's insight here is critical for economic geography.

Lattice material feeds directly into implant hardware AND gate components. No intermediate "lattice substrate" step. The short chain (raw -> final) means lattice supply disruptions cascade IMMEDIATELY to the two most politically charged finals. This creates maximum drama per chokepoint — exactly what the storyteller needs.

Freight haulers separate from vehicles. Demand functions differ: freight haulers = f(trade_volume, fleet_age); vehicles = f(population, wealth). A trade boom doesn't increase personal vehicle demand. This distinction matters for the simulation's trade-volume responsiveness.

Professional Services (7)

Slug Name Demand Base (T) Elasticity Notes
legal_services Legal Services compliance 100 inelastic Contract enforcement, arbitration, commercial law. FM south_reach, Crown's Hollow west_reach (Miri)
financial_services Financial Services compliance 120 inelastic Banking, credit, clearing, currency exchange. Groombridge clearing house (D-175 priority gap)
insurance Insurance & Underwriting market 75 unit_elastic Cargo, liability, corporate risk. No Tier 1 corp yet — priority gap (Miri)
commercial_intelligence Commercial Intelligence market 50 unit_elastic Market data, intelligence brokerage. Adams & Ford, Mercado, Ferreira Monteiro, VGV Comptoir
commission_certification Commission Certification compliance 150 perfectly_inelastic Lattice/medical/safety/transport certification. Tractus-denominated. THE mechanism generating shadow economy friction
habitation Habitation & Berths utility 40 inelastic Living space, station berthing, capacity allocation. Backs the D-131 "rent" verb. Node capacity limiter (Gestalt)
medical_services Medical Services utility 200 perfectly_inelastic Healthcare, neural backup, re-embodiment. Includes licensed re-embodiment (Miri's gap). Prometheus network sparsity

Key decisions:

Commission certification is a separate service (directive e). It is not legal services. Certification is a regulatory gatekeeping function performed by the Lattice Commission. Its cost (Tractus-denominated) applied to Compact members who must convert from Mark (at ~3% friction) IS the structural driver of the shadow economy. Making it a separate commodity makes this mechanism visible to the simulation. commission_certification being compact_contested = true is the single most politically charged service in the catalog.

Habitation/berths (from Gestalt). Station capacity is finite. A booming node runs out of berths, which caps growth and creates a natural rent-seeking pressure. This backs the D-131 "rent" verb and creates a node-capacity equilibrium: growth -> berth scarcity -> rising rents -> growth capped. It's an elegant self-limiting mechanism.

Commercial intelligence consolidates my "information brokerage" and Gestalt's "commercial intelligence" (directive d). Same concept, Gestalt's name is better. It covers: market data analysis, trade intelligence, confidential corporate briefings. The shadow variant (D-174: "unregistered commercial intelligence") is handled by shadow_viable = true.

Medical includes re-embodiment (Miri's gap). D-174 lists "unlicensed re-embodiment" as canonical contraband. The licensed version is this service. commission_cert_required = true and shadow_viable = true — the formal service requires Commission licensing, and the informal version fills gaps in Compact/frontier systems.

Logistics management removed (Gestalt's insight). Logistics costs are implicit in the transport cost system. A separate "logistics management" service is redundant with the gate-hop cost model. What Mercado does is better modeled as commercial intelligence (supply chain data) + corporate behavioral advantages (Distributor archetype).

Luxury/Experiential Services (3)

Slug Name Demand Base (T) Elasticity Notes
tourism Tourism market 100 luxury_elastic Destination experiences. VGV wine estates, Calloway distillery circuit. Deep-corridor prestige (Miri)
entertainment Entertainment & Media market 30 elastic Holo-content, performances, commercial media. Adams & Ford adjacent
cultural_experiences Cultural Experiences market 60 elastic Fine dining, gastronomy, cultural consumption. Talbreu territory. Labor-intensive

Total Count

Category Count
Raw materials 8
Intermediate goods 9
Final goods 8
Professional services 7
Luxury services 3
Total 35

D-173 estimated ~30. The 5 additional come from: fuel promotion to intermediate (+1), lattice material as separate raw (+1), and 2 additional services mandated by directive (e). This is within the "approximately" range and each addition has clear economic justification.


2. Resolving the Luxury Goods Tension (Directive b)

The problem

"Luxury goods" as one commodity conflates:

  • Calloway whisky: 12-20y aging, grain input, terroir-locked
  • VGV Grand Vide Classe: 5y+ aging, F8V stellar lock, grape input
  • Kvitfjell Blue marble: 800t/y geological ceiling, stone input
  • thrds garments: brach fiber monopoly, biological ceiling

These have radically different production constraints, inputs, geographic anchors, and scarcity profiles.

The solution: one commodity, multiple production chains

The commodity luxury_goods is abstract. The production chains are specific:

[luxury_goods_beverages]
output = "luxury_goods"
output_quantity = 1.0
inputs = [
    { commodity = "agricultural_produce", quantity = 2.0 },
    { commodity = "chemicals", quantity = 0.3 },
    { commodity = "water", quantity = 0.5 },
]
location_bound = true
description = "Artisan beverages: spirits, wines, ales. Terroir and aging
determine character. Calloway, VGV, Talbreu production pathway."

[luxury_goods_artisan_stone]
output = "luxury_goods"
output_quantity = 1.0
inputs = [
    { commodity = "stone", quantity = 3.0 },
    { commodity = "chemicals", quantity = 0.1 },
]
location_bound = true
description = "Cut and finished decorative stone. Geological source
determines character. Bifrost Marmor pathway."

[luxury_goods_fine_textiles]
output = "luxury_goods"
output_quantity = 1.0
inputs = [
    { commodity = "textiles", quantity = 1.5 },
    { commodity = "chemicals", quantity = 0.2 },
]
location_bound = true
description = "Premium garments, technical textiles. Fiber source
determines quality. thrds pathway."

[luxury_goods_general]
output = "luxury_goods"
output_quantity = 1.0
inputs = [
    { commodity = "processed_food", quantity = 0.3 },
    { commodity = "textiles", quantity = 0.3 },
    { commodity = "electronics", quantity = 0.2 },
]
location_bound = false
description = "Mass-market premium: fragrances, packaged delicacies,
high-end consumer items. Not terroir-locked."

How the layers interact

Layer What it encodes Example
Commodity Abstract category, one price signal, one elasticity luxury_goods: base 500T, luxury_elastic
Production chain Process type, input requirements, location constraint luxury_goods_beverages: agri + chemicals + water, location_bound
Corporation Specific brand, productivity ceiling, behavioral archetype Calloway: Specialist, chain=beverages, site=GJ 3325, aging=12-20y, ceiling per D-177
Productivity seed Per-run variation within lore-consistent bounds Calloway harvest yield: seeded +/-20% (D-177)

D-177's hard constraints (800t/y marble, brach herd limits, F8V lock, aging pipelines) are enforced at the corporation x site level, not the commodity or chain level. The chain says WHAT can be produced; the corporation profile says HOW MUCH at THIS LOCATION.

What this does NOT do (and why that's acceptable)

It does NOT create separate price signals for whisky vs. marble. Both are "luxury goods."

This is acceptable because:

  1. Phase 2 has no player UI for prices — no player observes the aggregate.
  2. The sim's spatial price equilibrium creates GEOGRAPHIC differentiation: north_reach luxury supply drops when Calloway output drops; west_reach luxury supply drops when Bifrost output drops. Same commodity, different geographic prices.
  3. Corporate signals (D-181 signal 6: production_vs_baseline) reveal the specific producer. A player can TRACE "luxury goods price rising in north_reach" to "Calloway output down" via the corporate layer.
  4. If Phase 3+ player UI requires finer resolution, we split the commodity then. But splitting now creates Miri's slippery slope (9+ finals) that the lead rejected.

The real-world analogy

This is how real commodity markets work. "Agricultural commodities" is one price aggregate. A wheat shortage in Kansas and a rice shortage in Thailand produce different geographic price patterns within the same aggregate. The geographic differentiation IS the mechanism — not commodity sub-types.


3. Unified Schema

Commodity record: wiki/economics/commodities.toml

# Commodity catalog for the Settled Reach economics simulation.
# Source of truth — compiled to systems.db via `make economy-db`.
#
# ID convention: flat underscore slugs (e.g., refined_metals, legal_services)
# matching Rust/TOML conventions. No namespace prefixes.

[water]
name = "Water & Volatiles"
tier = "raw"
elasticity = "perfectly_inelastic"
base_price = 2.0
bulk_class = "heavy"
unit = "tonnes"
production_ubiquity = "ubiquitous"
demand_model = "utility"
commission_cert_required = false
compact_contested = false
shadow_viable = false
panic_threshold_weeks = 1
description = "Water ice and atmospheric volatiles. Life support critical. Fuel refining feedstock."

Field definitions

Field Type Source Rationale
name string Tyre Display name. TOML key is the ID
tier enum: raw, intermediate, final, service_professional, service_luxury Tyre 5 tiers per D-173. Services outside the production chain
elasticity enum: perfectly_inelastic, inelastic, unit_elastic, elastic, luxury_elastic Tyre + mine 5 classes per D-173. luxury_elastic replaces Tyre's perfectly_elastic — more descriptive
base_price float > 0 Mine Equilibrium price at typical producing node, in Tractus
bulk_class enum: heavy, perishable, standard, compact, precision, oversized, non_physical Mine + Gestalt 7 classes. perishable and oversized from Gestalt's B-3 and B-5 — essential for geographic behavior
unit enum: tonnes, units, contracts Tyre Keeps production chain quantities unambiguous
production_ubiquity enum: ubiquitous, common, regional, concentrated, monopolistic Mine Guides generate_corporations initialization — how to spread production across the map
demand_model enum: market, utility, compliance Mine utility commodities have demand floors that never drop to zero; compliance demand is regulation-driven
commission_cert_required bool Gestalt Commission must certify before formal-sector sale
compact_contested bool Gestalt Compact officially rejects Commission authority over this commodity
shadow_viable bool Gestalt Shadow market routinely exists for this commodity
panic_threshold_weeks int >= 0 Mine 0 = not panic-flagged. > 0 = stockpile-target panic trigger (demand spikes when stockpile < N weeks)
description string (optional) Tyre Flavor text for wiki/UI. Not consumed by sim

Fields I deliberately excluded

  • No single political_sensitivity boolean. Gestalt's 3 sub-flags (commission_cert_required, compact_contested, shadow_viable) are strictly richer. They compose: a good that is Commission-certified, Compact-contested, AND shadow-viable (like implant hardware) behaves differently from one that is only Commission-certified (like transport vehicles).
  • No transportable field. Derivable from bulk_class != "non_physical" (Tyre's reasoning).
  • No shadow_economy per-commodity flag. D-174 says shadow economy is per-NODE intensity, not per-commodity. shadow_viable means "this commodity HAS a shadow market where intensity > threshold" — but the threshold is nodal.
  • No currency field. All prices are Tractus-denominated (D-171: Tractus is numeraire). Currency zone conversions happen at runtime.
  • No category sub-grouping. The production chain graph provides the categorization. No need for redundant taxonomic labels.

Bulk class transport cost multipliers

Class Modifier Applied to base gate rate (5-12%) Key geographic effect
heavy 1.2x Ore, stone, timber, water Moderate gradient. Raw materials equalize within a corridor
perishable 1.8x Agricultural produce, organic compounds Steep gradient. Fresh food prices vary enormously — creates local food production incentive
standard 1.0x Refined metals, panels, processed food, textiles, chemicals, fuel Baseline. Manufactured intermediates flow through the gate network at standard rates
compact 0.8x Electronics, drive cores, advanced alloys, consumer goods Shallow gradient. High-value items flow far — worth shipping across the Reach
precision 0.6x Rare minerals, lattice material, implant hardware, luxury goods Very shallow. Scarcity-driven pricing, not transport-driven
oversized 2.5x Heavy equipment, vehicles, gate components, freight haulers, habitat modules Very steep. Manufacturing hubs are DURABLE — finished rigs don't ship cheaply. This is what makes Stalownia's location persistent (Gestalt's critical insight)
non_physical infinity All services Cannot traverse gates. Production = consumption node

Production chain record: wiki/economics/production_chains.toml

Schema follows Tyre's design. Key addition: multiple chains can produce the same output (structural substitution per D-173).

[fusion_fuel_from_water]
output = "fusion_fuel"
output_quantity = 1.0
inputs = [
    { commodity = "water", quantity = 8.0 },
]
location_bound = false
description = "Deuterium/tritium extraction. Low yield (8:1) is the cost driver."

[refined_metals_standard]
output = "refined_metals"
output_quantity = 1.0
inputs = [
    { commodity = "metallic_ore", quantity = 2.0 },
    { commodity = "fusion_fuel", quantity = 0.3 },
]
location_bound = false
description = "Standard smelting. Fuel-intensive."

Tyre's validation rules apply fully. All hard failures (dangling refs, circular deps, zero inputs, services in chains, etc.) and soft warnings (orphan commodities, raws as chain outputs, finals as chain inputs). I endorse Tyre's validation spec without modification.

One addendum to Tyre's rules: Allow raw-tier commodities as inputs to final-tier chains (lattice_material -> implant_hardware, lattice_material -> gate_components). This is valid when the raw requires minimal intermediate processing. The soft warning "Raw tier commodities SHOULD NOT appear as chain inputs for final goods" should flag but not fail.


4. Complete Production Chain Recipes

Raw -> Intermediate

Chain slug Output Inputs Input cost (T) Output price (T) Margin
fusion_fuel_from_water fusion_fuel 8.0 water 16 25 56%
refined_metals_standard refined_metals 2.0 ore + 0.3 fuel 27.5 35 27%
advanced_alloys_standard advanced_alloys 1.5 ore + 0.3 rare minerals + 0.2 fuel 44 100 127%
structural_panels_standard structural_panels 1.0 timber + 0.5 refined metals 32.5 50 54%
processed_food_standard processed_food 1.5 agri produce + 0.2 water 7.9 15 90%
electronics_standard electronics 0.5 rare minerals + 0.3 refined metals + 0.2 fuel 55.5 130 134%
chemicals_standard chemicals 1.0 organic compounds + 0.3 water 35.6 65 83%
drive_cores_standard drive_cores 0.4 rare minerals + 0.8 advanced alloys 112 200 79%
textiles_standard textiles 0.8 organic compounds + 0.2 chemicals 41 55 34%

Intermediate -> Final

Chain slug Output Inputs Input cost (T) Output price (T) Margin
heavy_equipment_standard heavy_equipment 1.0 refined metals + 0.3 electronics + 0.2 drive cores 114 250 119%
vehicles_standard vehicles 0.8 advanced alloys + 0.3 electronics + 0.3 drive cores 179 400 123%
consumer_goods_standard consumer_goods 0.3 processed food + 0.3 textiles + 0.2 electronics 47 90 91%
implant_hardware_standard implant_hardware 0.5 electronics + 0.3 chemicals + 0.3 lattice material 120.5 450 273%
gate_components_standard gate_components 1.0 advanced alloys + 0.5 drive cores + 0.3 electronics + 0.2 lattice material 263 800 204%
habitat_modules_standard habitat_modules 1.5 structural panels + 0.4 electronics + 0.3 chemicals 146.5 200 37%
freight_haulers_standard freight_haulers 1.5 refined metals + 0.5 drive cores + 0.3 electronics 191.5 350 83%

Luxury goods — multiple chains

Chain slug Output Inputs Input cost (T) Location bound?
luxury_goods_beverages luxury_goods 2.0 agri produce + 0.3 chemicals + 0.5 water 30.5 Yes
luxury_goods_artisan_stone luxury_goods 3.0 stone + 0.1 chemicals 30.5 Yes
luxury_goods_fine_textiles luxury_goods 1.5 textiles + 0.2 chemicals 95.5 Yes
luxury_goods_general luxury_goods 0.3 processed food + 0.3 textiles + 0.2 electronics 47 No

Note on luxury margins: The beverage and stone chains both cost ~30T to produce luxury goods priced at 500T. The ~1500% margin IS the brand. Per directive (a), the corporate behavioral agent layer (Monopolist/Specialist archetype) maintains this margin. The luxury_goods_general chain has a higher input cost (47T) and lower margin — these are mass-market premium goods without terroir, produced by generic corporations.

Substitution routes (D-173 structural substitution)

Chain slug Output Inputs Notes
refined_metals_from_salvage refined_metals 1.0 metallic_ore Recycling pathway. Lower ore input, no fuel. Available at old stations with decommissioned infrastructure
structural_panels_composite structural_panels 0.8 refined_metals + 0.3 chemicals Metal-and-chemical composite. Substitute for timber-based panels when timber is scarce

These substitution routes create alternative supply paths per D-173. The simulation picks the cheapest available chain at each production site. When timber is scarce, structural panels shift to the composite route (which costs more in refined metals and chemicals but avoids the timber bottleneck). This is realistic — real construction materials have metal, wood, and composite alternatives.


5. Scarcity Cascade Analysis (Revised)

With the new chain structure (fuel as intermediate, lattice as separate raw):

Lattice material shortage

lattice_material DOWN
  -> implant_hardware DOWN (direct input)
  -> gate_components DOWN (direct input)

Shortest cascade in the model. Two final goods hit immediately, both maximally politically sensitive. Commission certification costs don't change, but supply vanishes — creating the price spike that makes shadow-market alternatives competitive. This IS the D-037 contraband genesis: licensed components become scarce, unlicensed versions fill the gap.

Rare minerals shortage

rare_minerals DOWN
  -> electronics DOWN
    -> consumer_goods DOWN, implant_hardware DOWN, gate_components DOWN,
       heavy_equipment DOWN, vehicles DOWN, freight_haulers DOWN, habitat_modules DOWN
  -> advanced_alloys DOWN
    -> vehicles DOWN (double hit), gate_components DOWN (double hit), drive_cores DOWN
      -> heavy_equipment DOWN, freight_haulers DOWN (triple cascade via alloys->cores->haulers)
  -> drive_cores DOWN (direct)
    -> (same downstream as above)

Broadest cascade. Rare minerals touch 3 intermediates, which touch 7 of 8 finals. Only luxury goods (through the beverage/stone/textile chains) are spared. This makes rare minerals the strategic chokepoint of the general economy — distinct from lattice material's narrower but more politically charged cascade.

Fuel shortage (NEW — water disruption cascading through fuel)

water DOWN -> fusion_fuel DOWN
  -> refined_metals DOWN
    -> structural_panels DOWN, heavy_equipment DOWN, freight_haulers DOWN (metals-intensive)
  -> advanced_alloys DOWN
    -> vehicles DOWN, gate_components DOWN, drive_cores DOWN
  -> electronics DOWN
    -> (broad downstream cascade)

The fuel cascade is the deepest. Water -> fuel -> metals/alloys/electronics -> nearly everything. A water supply disruption at a fuel refining hub cascades through the ENTIRE industrial economy. This is realistic: energy is the foundation of all manufacturing. The cascade's depth (5-6 tiers) means the price signal takes many ticks to propagate, creating a slow-building crisis that an attentive player can anticipate before it hits.

Agricultural produce shortage

agricultural_produce DOWN
  -> processed_food DOWN (inelastic demand = massive price spike, small quantity drop)
  -> luxury_goods DOWN (beverage chain only — stone and textile chains unaffected)

Short cascade, dramatic price effect. Food is Category 2 inelastic. A 20% supply drop barely changes demand (-5%) but spikes price by 40-60%. The political fallout (food price riots) is disproportionate to the supply disruption. This is realistic — food price shocks cause more political instability than equivalent-magnitude industrial disruptions.


6. Elasticity Classification (Revised)

Five categories. The categories from my Round 1 output stand with minor adjustments incorporating Gestalt's alpha-modifier insight.

Class Label epsilon range Tatonnement behavior Commodities
E-1 perfectly_inelastic 0.0-0.1 1.5x alpha — prices spike fast, sellers gouge water (stations), fusion_fuel, medical_services, commission_certification
E-2 inelastic 0.2-0.4 1.2x alpha — moderate spike agri_produce, processed_food, chemicals, legal_services, financial_services, refined_metals, habitation
E-3 unit_elastic 0.8-1.2 1.0x alpha (baseline) metallic_ore, structural_panels, electronics, consumer_goods, habitat_modules, insurance, commercial_intelligence, textiles, stone
E-4 elastic 1.5-2.5 0.7x alpha — quantity collapses, price adjusts moderately heavy_equipment, vehicles, freight_haulers, advanced_alloys, drive_cores, entertainment, cultural_experiences
E-5 luxury_elastic 3.0+ 0.5x alpha — market collapses to niche buyers luxury_goods, gate_components, implant_hardware, tourism, rare_minerals (at non-source), lattice_material (at non-source)

Gestalt's alpha modifier is a strong contribution. Rather than just categorizing elasticity, it maps directly to tâtonnement behavior: inelastic goods spike fast (sellers exploit); elastic goods see volume collapse (buyers walk). This creates visibly different market behavior from the same supply shock depending on what got disrupted. I endorse incorporating the modifier into the sim's price adjustment loop.

Panic mechanism (unchanged from Round 1)

Stockpile-target mechanism with thresholds:

Commodity Threshold Demand spike
water < 1 week 3-5x
fusion_fuel < 2 weeks 2-3x
processed_food < 2 weeks 1.5-2x
chemicals < 3 weeks 1.5x
rare_minerals price-triggered when price_trend > +15%/tick for 5+ ticks
lattice_material price-triggered when price_trend > +20%/tick for 3+ ticks

Interacts with D-181 stockpile_weeks signal — the signal IS the mechanism.


7. Political Sensitivity Map (Converged)

Using Gestalt's 3-flag system across the full catalog:

Commodity Cert req? Compact contested? Shadow viable? Drama summary
water No No No Pure utility
metallic_ore No No No Pure commodity
rare_minerals No No Partial Quota evasion at concentrated sources
timber No No No
agricultural_produce Partial No No Organic certification in Assembly; Compact ignores
organic_compounds No No No
stone No No Partial Kvitfjell quota creates minor shadow (Gestalt)
lattice_material Yes (strategic) No High Commission-controlled. Canonical contraband pathway (D-037)
fusion_fuel Yes (safety) Yes Yes Nuclear fuel cert burden. Compact energy independence goal
refined_metals No No No
advanced_alloys No No No
structural_panels No No No
processed_food Partial No No Food safety cert; Compact accepts alternatives
electronics Partial Partial No Precision spec cert; minor friction
chemicals Yes Yes Yes Hazmat cert. Compact views as tariff by another name (Gestalt)
drive_cores Partial Partial Partial Safety cert for propulsion; Compact operates some uncertified
textiles No No No
heavy_equipment No No No Too large to shadow-market (Gestalt)
vehicles Yes (safety) Partial Partial Commission registration; Compact unregistered ops
consumer_goods No No Partial Uncertified goods undercut certified at low-coverage nodes
luxury_goods Partial No Yes Sol-denominated premium goods. Shadow prestige market
implant_hardware Yes High High THE flashpoint — D-037. Commission implant cert is the Compact's core grievance
gate_components Yes Extreme High Gate Corp monopoly + Commission cert = maximum extraction
habitat_modules Partial No No Building codes; minor
freight_haulers Yes (safety) Partial Partial Registration requirements
commission_certification Extreme The service IS the political instrument
legal_services No No No
financial_services No No Partial Shadow banking in Compact zones
insurance No No No
commercial_intelligence No No Yes Unregistered intelligence = D-174 canonical contraband
habitation No No No
medical_services Yes Partial High Licensed re-embodiment. Shadow market fills Compact gaps
tourism No No No
entertainment No No Partial Unlicensed content distribution
cultural_experiences No No No

The three political flashpoints (confirming Gestalt's analysis):

  1. Implant hardware — Commission cert + Assembly control. The Compact's shadow implant market is principled resistance, not criminality (D-174 framing).
  2. Gate components — Gate Corp monopoly + Commission cert. The Assembly's ultimate leverage tool.
  3. Fuel — Compact energy independence is a live political project. Currency zone correlates with energy self-sufficiency.

8. Service Economics Model (Converged)

How services differ from physical commodities

Per D-173 and Gestalt's Round 1 analysis, services are mechanically different in three ways:

A. No transport, no arbitrage. Services have bulk_class = "non_physical". They don't participate in spatial price equilibrium across nodes. A legal service at Matamba cannot be "shipped" to the east_reach.

B. Services consume goods — goods-demand multiplier (Gestalt's contribution). Each service generates local demand for physical commodities:

Service Goods demand generated
legal_services Increases Tractus velocity (fee income)
financial_services Affects cross-zone trade friction; Tractus velocity
insurance Affects trade volume through risk pricing (no direct goods demand)
commercial_intelligence Improves local signal visibility (better official_coverage_ratio)
commission_certification Consumes Tractus (certification fees); generates shadow economy pressure
habitation Consumer goods demand (furnishing); fusion_fuel demand (life support)
medical_services Chemicals demand (pharmaceuticals); electronics demand (medical equipment)
tourism Luxury goods demand; consumer goods demand; fusion_fuel demand
entertainment Electronics demand (production hardware); fusion_fuel demand
cultural_experiences Luxury goods demand; agricultural_produce demand (gastronomy)

This means a high-tourism node pulls increased luxury goods demand. A high-medical node increases chemicals and electronics imports. These cross-commodity interactions create emergent economic clustering without explicit scripting.

C. Service throughput seeds differently. Physical goods use extraction_rate and processing_throughput (D-176). Services use service_throughput (clients/tick) and service_capacity (max concurrent engagements). Both seeded log-normally, but service ceilings are population-dependent — a 500-person station can't sustain a legal practice regardless of the seed.


9. Base Price Verification

Cost chain trace: water to gate components

water (2T) -> [8:1] -> fuel (25T) -> [input to metals]
  -> refined_metals (35T) -> [input to alloys]
    -> advanced_alloys (100T) -> [input to drive cores]
      -> drive_cores (200T) -> [input to gate components]
        + lattice_material (120T, raw, direct)
        + electronics (130T)
          -> gate_components (800T)

6-tier chain from water to gate components. Total accumulated input cost at the gate_components level: 263T. Gate price: 800T (204% margin). The margin reflects Gate Corporation's monopoly power (Monopolist archetype) and the strategic importance of gate infrastructure.

Transport cost sanity (revised with bulk classes)

Example: how does ore price behave across the gate topology?

Ore (10T, heavy, 1.2x modifier). Assuming 8% average base gate rate:

Hops Effective cost/hop Price Increase
0 (source) 10T
3 9.6% 13.2T +32%
6 9.6% 17.4T +74%
10 9.6% 25.0T +150%

Example: heavy equipment (250T, oversized, 2.5x modifier):

Hops Effective cost/hop Price Increase
0 (source) 250T
3 20.0% 432T +73%
6 20.0% 747T +199%
10 20.0% 1,548T +519%

Heavy equipment QUINTUPLES over 10 hops at oversized rates. This is the mechanism that makes Stalownia's south_reach location structurally irreplaceable. You don't ship drilling rigs 10 hops — you build them locally or buy from the nearest Stalownia subsidiary. Geographic manufacturing persistence falls directly out of the bulk class system.

Fresh food (5T base, perishable, 1.8x):

Hops Effective cost/hop Price Increase
0 5T
3 14.4% 7.5T +50%
6 14.4% 11.3T +126%
10 14.4% 19.2T +284%

Fresh food nearly QUADRUPLES over 10 hops. This creates the local food production incentive: every inhabited system with any agricultural capacity grows food locally rather than importing. Only systems without arable land import food, and they pay dearly. This is realistic and creates interesting geographic dependency for bare-rock stations.


10. Open Questions for Team

  1. Lattice material: east_reach anchor or distributed? I've placed it as concentrated with east_reach as the primary. Miri proposed this to close the east_reach economic identity gap. But the location decision affects the entire political economy — if lattice material is east_reach, the east becomes strategically important and Commission attention follows. Team should confirm.

  2. Fuel refining yield (8:1) — tunable? The 8:1 water-to-fuel ratio produces fuel at 25T. This makes frontier fuel roughly 3x more expensive than at-source over 10 hops. Is that the right economic pressure? D-183 says we iterate, so the ratio can be adjusted in the stability-check loop.

  3. Service count (10): too many for Phase 2? The lead said "more is richer." I've proposed 10 services. For Phase 2 (no player UI), the sim just needs to tick service throughput at each node. The authoring burden is in the corporation TOML: each service-sector corporation needs a service commodity assignment. Is 10 services tractable for the corporation authoring pipeline?

  4. Panic mechanism: sim implementation or deferred? The stockpile-target panic mechanism produces realistic hoarding behavior but adds complexity to the tâtonnement. Should it be in the first iteration of the sim binary, or added after the base stability criteria (D-179) are met?

  5. Tyre's base_price question: A single equilibrium price IS sufficient for the tâtonnement. The damping parameters (alpha=0.03, beta=0.4) and stability criteria (D-179: +/-5% in 100 days) bound the price without explicit floors/ceilings. The panic mechanism is the only exception — and it's self-correcting.


Burnelli-Sheldon. Round 2 converged proposal. Ready for lead review.