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>
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:
- Phase 2 has no player UI for prices — no player observes the aggregate.
- 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.
- 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.
- 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_sensitivityboolean. 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
transportablefield. Derivable frombulk_class != "non_physical"(Tyre's reasoning). - No
shadow_economyper-commodity flag. D-174 says shadow economy is per-NODE intensity, not per-commodity.shadow_viablemeans "this commodity HAS a shadow market where intensity > threshold" — but the threshold is nodal. - No
currencyfield. All prices are Tractus-denominated (D-171: Tractus is numeraire). Currency zone conversions happen at runtime. - No
categorysub-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):
- Implant hardware — Commission cert + Assembly control. The Compact's shadow implant market is principled resistance, not criminality (D-174 framing).
- Gate components — Gate Corp monopoly + Commission cert. The Assembly's ultimate leverage tool.
- 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
-
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.
-
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.
-
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?
-
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?
-
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.