Files
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

27 KiB
Raw Permalink Blame History

Gestalt — #801 Commodity Catalog: Round 2 Converged Proposal

Date: 2026-04-05 Status: Round 2 proposal


What I'm Taking From Each Agent

Tyre: Flat slug IDs. Production chain TOML with location_bound and output_quantity fields. Hard build-step validation. The energy-as-non-physical carve-out problem is now cleanly resolved by the water→fuel chain.

Miri: Commission certification as a distinct service (not collapsed into legal). Re-embodiment as a required luxury service. Cooperage timber as a separate Calloway chain input. Lattice-grade materials anchoring the east reach. Prometheus maintenance network sparsity as a geographic availability constraint.

Burnelli-Sheldon: production_ubiquity flag (guides initialization geographic distribution). demand_model field (utility/compliance changes tâtonnement behavior). Panic mechanism for critical supply goods. Price table with margin analysis. Transport cost differentials showing geographic specialization emergence.

My own Round 1: 3 political sub-flags (commission_cert_required / compact_contested / shadow_viable). Service demand multiplier mechanics. Chokepoint identification. Elasticity classes with α modifiers.


1. The Luxury Goods Tension — Resolved

The problem: Calloway whisky (1220y aging, terroir lock), Kvitfjell marble (800t/y geological ceiling), and VGV wine (F8V stellar lock) have radically different production constraints. But they are all "luxury goods." One commodity record cannot encode all three simultaneously without becoming three commodity records.

The solution: Per-site, location-bound production chains. The commodity record carries the category-level properties. The chain records carry the constraint-specific properties.

The luxury_goods commodity record:

  • tier = final
  • production_ubiquity = monopolistic
  • elasticity_class = e4_elastic
  • base_price = 500T

Each real-world luxury source has its own chain record:

Chain ID Location Key inputs Aging Ceiling Corporate archetype
luxury_calloway Calloway Reach agri_produce(0.4), timber(0.15, cooperage), industrial_chemicals(0.05) 1220 game years D-177 seeding bounds Specialist
luxury_vgv_long Confluent (F8V) agri_produce(0.5, F8V grapes), industrial_chemicals(0.03) 5+ game years F8V stellar lock Monopolist
luxury_vgv_short Confluent (F8V) agri_produce(0.5, F8V grapes) 12 game years F8V stellar lock Producer
luxury_kvitfjell Kvitfjell/Nyrheim stone_aggregate(1.0, Kvitfjell Blue) None 800t/y hard ceiling Monopolist
luxury_thrds Braemar organic_biomass(0.6, brach fiber), textiles_composites(0.3) None Herd ceiling; actively defended monopoly Specialist

Brand premiums live in the corporate behavioral layer, not the commodity catalog. The Specialist archetype running the luxury_calloway chain maintains elevated pricing through behavioral parameters. A Monopolist running luxury_kvitfjell holds pricing through the 800t/y ceiling constraint. The underlying luxury_goods commodity price reflects the aggregate market; corporate agents extract rent by being the only licensed operators of site-bound chains.

Miri's VGV split (Grand Vide Classé vs. Vins de Corridors) is preserved without two commodity entries. Two chains at the same site with different aging depths, run by VGV behaving as both Monopolist (long line) and Producer (short line) with different behavioral pricing parameters. The simulation sees one luxury_goods commodity; the player observes that VGV bottles trade at very different prices and can investigate why.

The aging_ticks field on the chain record encodes the pipeline delay. At game start, the Calloway pipeline already contains 1220 years of maturing stock — D-177 states pipeline contents are fixed by lore, not seeded. The sim inherits this initial state and manages forward flow.


2. The Water→Fuel Chain (Lead Directive)

This is the most important structural change from Round 1. It resolves Tyre's "energy-as-non-physical carve-out" problem entirely.

Water/volatiles becomes an explicit raw material with demand_model = utility.

Fusion fuel becomes an intermediate — refined from water at low yield.

Chain: chain_fusion_fuel

inputs:  water_volatiles (6.0)
output:  fusion_fuel (1.0)
description: "Deuterium/tritium extraction via centrifuge and electrolysis.
              6 tonnes of water processed per tonne of fusion fuel.
              Processing overhead is baked into base_price markup, not
              modeled as an additional input."

Geographic implications:

  • water_volatiles base_price ≈ 2T (near-free on ocean worlds and ice moons; expensive on bare-rock stations)
  • fusion_fuel base_price ≈ 30T (input cost: 12T of water + processing overhead)
  • Remote, dry stations pay full transport cost on both water AND fuel — compounding disadvantage
  • Ocean worlds and ice-moon systems have structural fuel production advantage
  • Every active station consumes fusion_fuel continuously (demand_model = utility): demand floor never drops to zero

What this replaces: My Round 1's R-06 (Energy raw: fissile, reaction mass) is removed. The fissile/nuclear concept is folded into the fusion model — the Reach runs on fusion power. "Energy-rich" systems in the lore = systems with ocean worlds or ice moons that can produce cheap water → cheap fuel. Tyre's energy commodity (non-physical, chain-input carve-out) is no longer needed; fusion_fuel is a standard transportable intermediate.


3. Unified Schema

Commodity Record (wiki/economics/commodities.toml)

[commodity_id]
name                    = "..."           # Display name, Title Case
tier                    = "raw | intermediate | final | service_professional | service_luxury"
elasticity_class        = "e1_perfectly_inelastic | e2_inelastic | e3_moderate | e4_elastic | e5_location_bound"
demand_model            = "market | utility | compliance"
base_price              = 0.0             # Equilibrium price in Tractus; must be > 0
bulk_class              = "dense_bulk | standard | perishable | precision | oversized | non_physical"
production_ubiquity     = "ubiquitous | common | regional | concentrated | monopolistic"
commission_cert_required = false          # Commission must certify; costs Tractus; Compact friction
compact_contested        = false          # Compact rejects Commission authority over this commodity
shadow_viable            = false          # Shadow market routinely operates for this commodity
panic_flagged            = false          # Critical supply: stockpile-target mechanism applies
panic_threshold_weeks    = 0             # Only set when panic_flagged = true
unit                    = "tonnes | units | contracts"
description             = "..."          # Optional flavor; wiki/UI tooltip

Field provenance and rationale:

Field Source Over alternative
tier (5 values) Tyre Services as tiers rather than a separate file — clean single-record approach
elasticity_class Gestalt / Tyre I defined numeric behavior + α modifiers; Tyre named the enum
demand_model Burnelli-Sheldon Utility/compliance goods have floors that never go to zero — not derivable from elasticity alone
base_price Burnelli-Sheldon Single equilibrium anchor; tâtonnement starts here
bulk_class (6 values) Gestalt (synthesized from B-S 5-class) Transport cost multiplier; drives geographic price differentials
production_ubiquity Burnelli-Sheldon Guides generate_corporations binary; determines initialization distribution
commission_cert_required Gestalt Encodes the Assembly/Compact friction mechanism precisely
compact_contested Gestalt Encodes "principled resistance" framing of D-174; not derivable from cert flag alone
shadow_viable Gestalt Encodes shadow economy risk per commodity; interacts with node-level intensity
panic_flagged + panic_threshold_weeks Burnelli-Sheldon Critical supply goods have qualitatively different shortage behavior
unit Tyre Keeps chain recipe quantities unambiguous

Eliminated:

  • Tyre's single political_sensitivity boolean → superseded by 3 sub-flags; lead-endorsed
  • Tyre's transportable → derivable from bulk_class == non_physical
  • Tyre's energy commodity (non-physical carve-out) → replaced by water→fuel chain

Production Chain Record (wiki/economics/production_chains.toml)

[chain_id]
output               = "commodity_id"
output_quantity      = 1.0               # Units produced per cycle; default 1.0
inputs = [
    { commodity = "commodity_id", quantity = 0.0 },
]
location_bound       = false             # If true, chain only operates at site_id
site_id              = ""                # Body reference from systems.db; requires location_bound = true
max_output_per_cycle = 0.0              # Optional hard ceiling (Kvitfjell 800t/y equivalent)
aging_ticks          = 0                # Optional pipeline delay (Calloway 12-20 game years)
description          = "..."

4. Full Commodity List

Raw Materials (8)

One raw added versus D-173's 7: water_volatiles, required by the water→fuel chain (lead directive). stone_aggregate absorbs my Round 1's silicate_mineral. organic_biomass absorbs my Round 1's chemical_feedstock (both are organic sources for the industrial chemicals chain). timber added as a separate raw from organic_biomass because its 4060y recovery cycle and cooperage-specific use in the Calloway chain are mechanically distinct.

ID Name Elasticity Demand Bulk class Ubiquity Cert Contested Shadow Notes
metallic_ore Metallic Ore E-2 market dense_bulk common No No No Stalownia primary; asteroid and planetary mines
stone_aggregate Stone / Aggregate E-3 market dense_bulk common No No Partial Kvitfjell Blue marble = monopolistic luxury variant; standard aggregate ubiquitous
agricultural_produce Agricultural Produce E-1 utility perishable ubiquitous Partial No No Crops, grain, grapes, livestock; F8V and terroir constraints per site
organic_biomass Organic Biomass E-2 market standard regional No No No Brach fiber (Braemar hard lock), marine catch, biological feedstock; chemical chain input
water_volatiles Water / Volatiles E-1 utility dense_bulk ubiquitous No No No Ocean worlds cheap; bare-rock stations expensive; primary fusion fuel input
rare_minerals Rare Minerals E-3 market precision concentrated No No Partial Rare earths, crystals; 510 systems; electronics and alloys bottleneck
timber Timber E-3 market perishable regional No No No Nordmark structural; Dunbar cooperage grade (Calloway chain); 4060y recovery cycle
lattice_grade_material Lattice-Grade Material E-4 market precision monopolistic Yes (strategic) No High East reach anchor export; neural/gate substrate; Gate Corp strategic interest; no substitute

Intermediate Goods (8)

fusion_fuel replaces my Round 1's power_cell_fuel (renamed and now derived from water). electronics_components absorbs the "fabricated components" dependency role — it is now the intermediate required by the most finals. structural_materials has two production chain routes (stone or timber), giving flexibility in supply.

ID Name Primary inputs Elasticity Bulk class Ubiquity Cert Contested Shadow Notes
refined_metals Refined Metals metallic_ore E-2 standard common No No No Smelted steel and alloys; Stalownia processes
structural_materials Structural Materials stone_aggregate OR timber + refined_metals E-3 oversized regional No No No Prefab panels, construction composites; two substitute routes
processed_food Processed Food agricultural_produce OR organic_biomass E-1 standard common Partial No No Shelf-stable; fisheries = second route; Mercado distribution
textiles_composites Textiles / Composites organic_biomass E-3 standard regional No No No Clothing, technical fabrics; brach fiber variant = premium Braemar-locked route
industrial_chemicals Industrial Chemicals organic_biomass E-2 standard regional Yes (hazmat) Yes Yes Pharma, solvents, reagents; cert = Assembly tariff by another name
electronics_components Electronics / Components rare_minerals + refined_metals E-3 precision concentrated No No No Circuits, processors; rare minerals bottleneck cascades to implants, gates, vehicles
fusion_fuel Fusion Fuel water_volatiles (6:1 input) E-1 standard common Yes (safety) Yes Yes 6t water → 1t fuel; every station consumes continuously; water-rich systems have structural advantage
lattice_substrate Lattice Substrate lattice_grade_material E-2 precision monopolistic Yes (strategic) No High No substitute; feeds implant_hardware and gate_infrastructure — THE dual chokepoint

Final Goods (7)

habitat_modules (Burnelli-Sheldon's F7) is folded into heavy_industrial_equipment as a production chain variant. Its demand function (population-driven) is handled at the corporate behavioral layer, not the commodity catalog. Count stays at 7.

ID Name Inputs Elasticity Bulk class Ubiquity Cert Contested Shadow Notes
heavy_industrial_equipment Heavy Industrial Equipment refined_metals + electronics_components + structural_materials E-4 oversized regional No No No Stalownia rigs, Cygni B station sections; 13y lead time; B-5 means manufacturing hubs are structural
consumer_goods Consumer Goods processed_food + textiles_composites E-3 standard common No No Partial Daily necessities; uncertified variants undercut in low-coverage nodes
luxury_goods Luxury Goods [5 site-bound chains — see §1] E-4 precision/oversized monopolistic Partial No Yes One catalog entry; brand in corporate behavior; biological ceilings on production chains
transport_vehicles Transport Vehicles refined_metals + fusion_fuel + electronics_components E-4 oversized regional Yes (safety) Partial Partial Ships, MVG; Commission registration; Compact often operates unregistered
implant_hardware Implant Hardware lattice_substrate + electronics_components E-4 precision concentrated Yes (medical) High High THE political flashpoint; D-037 adjacent; Commission cert = THE Compact grievance
gate_infrastructure Gate / Infrastructure refined_metals + lattice_substrate + electronics_components + fusion_fuel E-4 oversized monopolistic Yes (strategic) Extreme High Gate Corp monopoly + Commission cert = maximum structural extraction; double chokepoint dependency
medical_goods Medical Goods industrial_chemicals + electronics_components E-2 precision regional Yes (medical) Partial High Healthcare + re-embodiment supporting goods; D-174 canonical contraband adjacent

5. Service List (9 total)

Why 6 professional services (not 5): Commission certification has demand_model = compliance, is only available in Commission-presence systems, and is mechanically the smuggling incentive mechanism from D-174. It cannot be collapsed into legal_services without losing that behavior. The lead directive explicitly endorsed it.

Why logistics management was removed: Logistics management is redundant with the transport cost model. The 512%/hop gate cost already encodes logistics overhead. Sova Logistics and other logistics corporations operate on commercial_intelligence and habitation_berths (berth and route management), not a separate logistics-management service commodity.

Why re_embodiment is not collapsed into medical_goods: Medical goods is a transportable physical commodity. Re_embodiment is a location-bound procedure. Different bulk class (non_physical vs. precision), different demand model (compliance vs. market), different shadow economy profile. D-174 names unlicensed re-embodiment as canonical contraband — the licensed service must be distinct.

Professional Services (6)

ID Name Demand Cert Contested Shadow Key simulation behavior
legal_services Legal Services market No No Partial Demand = f(economic activity, dispute rate); FM south reach, Crown's Hollow west reach
commission_certification Commission Certification compliance N/A (IS certification) High High Demand = f(regulated goods production); only in Commission-presence nodes; IS the smuggling incentive from D-174
financial_services Financial Services market No Partial Partial Tractus velocity; cross-zone trade friction; Groombridge clearing house = priority Tier 1 gap
insurance Insurance market No No No Affects trade volume via risk pricing; no goods demand; mutual insurance in south reach
commercial_intelligence Commercial Intelligence market No No Partial Improves official_coverage_ratio signal; consolidates B-S's "information brokerage" per lead directive
habitation_berths Habitation / Berths utility No No Partial Covers D-131 "rent" verb; fixed supply per node; booming nodes run out of berths → real estate signal

Luxury / Experiential Services (3)

ID Name Demand Notes
tourism Tourism market Pulls luxury_goods and consumer_goods demand; deep-corridor prestige; Confluent estates, Calloway distillery circuit
entertainment_media Entertainment / Media market Holo-content, cultural production; pulls fusion_fuel and electronics_components
re_embodiment Re-embodiment Services compliance Commission-licensed; Prometheus-adjacent; shadow market = unlicensed (D-174 canonical); demand_model = compliance because clients go where licensed facilities exist

6. Complete Chain Graph (Summary)

Raws → Intermediates

Chain ID Output Inputs Sub routes?
ore_smelting refined_metals metallic_ore(2.0)
stone_panel_fab structural_materials stone_aggregate(1.5) + refined_metals(0.5) Substitute for timber route
timber_panel_fab structural_materials timber(1.0) + refined_metals(0.3) Substitute for stone route; Nordmark territory
food_processing processed_food agricultural_produce(1.5) Main food chain
seafood_processing processed_food organic_biomass(1.2) Alternative; east reach fisheries anchor
fiber_processing textiles_composites organic_biomass(0.8) Brach fiber = premium Braemar-locked variant of same chain
chemical_synthesis industrial_chemicals organic_biomass(1.0) Pharma + industrial reagents
electronics_fab electronics_components rare_minerals(0.5) + refined_metals(0.3) Rare minerals bottleneck
fusion_fuel_extraction fusion_fuel water_volatiles(6.0) Low yield; key new chain
lattice_processing lattice_substrate lattice_grade_material(1.0) No substitute

Intermediates → Finals

Chain ID Output Inputs
industrial_assembly heavy_industrial_equipment refined_metals(1.0) + electronics_components(0.3) + structural_materials(0.5)
consumer_assembly consumer_goods processed_food(0.3) + textiles_composites(0.3)
luxury_calloway luxury_goods agricultural_produce(0.4) + timber(0.15, cooperage) + industrial_chemicals(0.05)
luxury_vgv_long luxury_goods agricultural_produce(0.5, F8V grapes) + industrial_chemicals(0.03)
luxury_vgv_short luxury_goods agricultural_produce(0.5, F8V grapes)
luxury_kvitfjell luxury_goods stone_aggregate(1.0, Kvitfjell Blue)
luxury_thrds luxury_goods organic_biomass(0.6, brach fiber) + textiles_composites(0.3)
vehicle_assembly transport_vehicles refined_metals(0.8) + fusion_fuel(0.3) + electronics_components(0.3)
implant_manufacturing implant_hardware lattice_substrate(0.5) + electronics_components(0.3)
gate_construction gate_infrastructure refined_metals(1.0) + lattice_substrate(0.5) + electronics_components(0.4) + fusion_fuel(0.2)
medical_manufacturing medical_goods industrial_chemicals(0.3) + electronics_components(0.2)

7. Chokepoints — Updated for Round 2

Three chokepoints drive gameplay tension, same locations as Round 1 but one upgraded:

1. Lattice chain: lattice_grade_material → lattice_substrate → implant_hardware + gate_infrastructure

  • Still the richest chokepoint
  • Now strengthened: gate_infrastructure requires lattice_substrate AND fusion_fuel (two chokepoints converge on gates)
  • Geographic anchor: east reach. If east reach lattice-grade material exports are disrupted, both Commission-certified implants AND gate maintenance cascade

2. Electronics cascade: rare_minerals → electronics_components

  • Required by: transport_vehicles, implant_hardware, gate_infrastructure, heavy_industrial_equipment, medical_goods
  • That's 5 of 7 finals
  • Replaces my Round 1's "fabricated components" as the broad dependency
  • Rare minerals at 510 systems means geographic concentration; a single region controlling rare mineral supply has leverage over ALL manufacturing

3. Luxury goods biological ceilings

  • Now structurally encoded in per-chain max_output_per_cycle and aging_ticks fields
  • The player observes that no amount of economic activity can increase Kvitfjell marble output past 800t/y
  • This is the simulation teaching its own rules: some scarcity is structural, not addressable through trade

8. Base Prices (Reference Table)

Building on Burnelli-Sheldon's margin analysis, adjusted for the water→fuel chain.

Commodity Base price (T) Key margin note
water_volatiles 2 Near-free on ocean worlds; expensive on dry stations
agricultural_produce 5 Common output; staple food chain anchor
stone_aggregate 8 Ubiquitous; Kvitfjell Blue commands 1550× at source
metallic_ore 10 Bulk mining reference commodity
organic_biomass 18 Complex biospheres only; brach fiber in premium tier
timber 15 Less common; cooperage grade commands premium
rare_minerals 80 Scarce; location-specific; electronics bottleneck
lattice_grade_material 120 Strategic; monopolistic; east reach anchor
refined_metals 28 ~180% margin on ore; bulk volume
structural_materials 40 Input cost ~25T; moderate margin
processed_food 15 Near-input-cost; high volume, low margin
textiles_composites 50 Value-add from organic biomass
industrial_chemicals 60 Higher value-add; hazmat cert adds friction
electronics_components 120 High value-add from rare minerals bottleneck
fusion_fuel 30 12T input (6× water) + ~18T processing overhead
lattice_substrate 180 Near-input-cost; value is the raw material scarcity
heavy_industrial_equipment 250 Complex assembly; B-5 bulk protects manufacturing hubs
consumer_goods 80 Mass market; broad input mix
luxury_goods 500 Price is demand-driven, not cost-driven; brand premium in corporate layer
transport_vehicles 350 Three-input assembly; fusion_fuel dependency
implant_hardware 400 Enormous value-add; political premium
gate_infrastructure 800 Monopoly pricing; strategic premium; four-input cascade
medical_goods 150 High-value; regulatory overhead in cert cost

9. Delta from Round 1

Change Round 1 Round 2 Why
Energy raw removed R-06 (fissile, reaction mass) Removed Lead directive; replaced by water→fuel chain
Raw count 7 8 water_volatiles required; directive-driven
Silicate/mineral Separate raw Merged into stone_aggregate Same production chains
Chemical feedstock Separate raw (R-05) Merged into organic_biomass Both organic sources for industrial chemicals
Fabricated components Separate intermediate Dissolved; electronics_components inherits role Electronics is the natural high-tech bottleneck
Timber Not separate Added as 8th raw Cooperage dependency; 4060y recovery is distinct behavior
Luxury goods One commodity, no chain detail One commodity, 5 site-bound chains with aging_ticks and ceilings Resolves brand vs. commodity tension
Services 5 professional + 3 luxury 6 professional + 3 luxury Commission certification added per lead directive
Logistics management In service list Removed Redundant with transport cost model
Schema: political_sensitivity 1 boolean 3 sub-flags Lead-endorsed; richer encoding
Schema: production_ubiquity Absent Added B-S contribution; initialization distribution
Schema: demand_model Absent Added B-S contribution; utility/compliance tâtonnement behavior
Schema: panic_flagged Absent Added B-S contribution; stockpile mechanism

10. Outstanding Questions for Round 3

Q1: Rare minerals vs. lattice-grade material — one or two raws? I kept them separate: rare_minerals feeds electronics_components and advanced manufacturing broadly; lattice_grade_material is the specialized neural/gate substrate. If we collapse them, east reach loses its distinctive export identity (it would just be another rare minerals source). Recommendation: keep separate.

Q2: thrds garments — luxury_goods or consumer_goods output? Argument for luxury: brach exclusivity makes it a prestige product. Argument for consumer: north reach workers treat it as functional gear, not luxury. My proposal puts it in luxury_goods with Specialist markup. If we want thrds penetration in everyday outer-corridor markets, it might need a consumer_goods production variant alongside the luxury output. Worth discussion.

Q3: Habitat modules as a separate final? Burnelli-Sheldon argued for distinct demand function (population-driven vs. industrial-driven). I folded it into heavy_industrial_equipment as a production chain variant. If the simulation needs to model new-settlement expansion as a distinct signal, habitat_modules may need its own entry. Flagged.

Q4: water_volatiles bulk class I set it as dense_bulk (shippable as ice or liquid). Is there an argument for splitting the bulk class into "water-as-infrastructure" (local plumbing, not a cargo item) vs. "water-as-cargo" (ice hauled from a distant source)? Or does dense_bulk handle both cases correctly via transport cost?


Total: 8 raw + 8 intermediate + 7 final + 9 services = 32 commodity types.

One above Burnelli-Sheldon's 32 (we have the same count by different routes). Within D-173's "approximately 30" spirit. The additions are lead-directive-driven (water/fuel chain, commission_certification) — not scope creep.