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>
This commit is contained in:
@@ -0,0 +1,525 @@
|
||||
# Tyre — Round 2 Converged Proposal
|
||||
|
||||
*cracks knuckles* — I've cross-read all four Round 1 outputs. Here's the converged technical proposal addressing all five lead directives.
|
||||
|
||||
---
|
||||
|
||||
## 1. Resolving the Luxury Goods Tension (Directive b)
|
||||
|
||||
The lead identified the core problem: if "luxury goods" is one abstract commodity, how does Calloway whisky (12-20y aging, terroir ceiling), Kvitfjell marble (800t/y geological ceiling), and VGV wine (F8V stellar lock) coexist in the simulation with their radically different constraints?
|
||||
|
||||
**Solution: three-layer separation.**
|
||||
|
||||
| Layer | What it knows | Example |
|
||||
|-------|--------------|---------|
|
||||
| **Commodity catalog** | One entry: `luxury_goods`. Abstract category. | `luxury_goods`, tier=final, elasticity=highly_elastic |
|
||||
| **Production chains** | Multiple recipes produce the same output from different inputs. | `luxury_from_agriculture`, `luxury_from_stone`, `luxury_from_textiles` |
|
||||
| **Corporation data** | Per-corp production constraints: location lock, capacity ceiling, aging pipeline, terroir. | Calloway operates `luxury_from_agriculture` at Calloway Reach, 12-20y aging, terroir-locked |
|
||||
|
||||
This works because:
|
||||
- The commodity stays abstract (directive a — brands are not commodities)
|
||||
- D-173's structural substitution: multiple chains → same output is already in the spec
|
||||
- D-176 attaches productivity seeds to corporation×site pairs, not to commodities
|
||||
- D-177's hard ceilings (Kvitfjell 800t/y, brach fiber herd, F8V stellar lock) live in corporation constraint data
|
||||
- The 987% luxury margin B-S identified IS the brand premium, expressed through Specialist/Monopolist archetype pricing behavior in the corporate agent layer
|
||||
- New luxury producers are added by creating a corp and assigning it a chain — zero commodity catalog changes
|
||||
|
||||
**Three luxury production chains:**
|
||||
|
||||
```toml
|
||||
[luxury_from_agriculture]
|
||||
output = "luxury_goods"
|
||||
output_quantity = 1.0
|
||||
inputs = [
|
||||
{ commodity = "agricultural_produce", quantity = 2.0 },
|
||||
{ commodity = "chemicals", quantity = 0.3 },
|
||||
]
|
||||
description = "Spirits, wines, premium food. Terroir/aging constraints per corporation."
|
||||
|
||||
[luxury_from_stone]
|
||||
output = "luxury_goods"
|
||||
output_quantity = 0.5
|
||||
inputs = [
|
||||
{ commodity = "stone", quantity = 3.0 },
|
||||
]
|
||||
description = "Decorative stone, luxury marble. Geological ceiling per corporation."
|
||||
|
||||
[luxury_from_textiles]
|
||||
output = "luxury_goods"
|
||||
output_quantity = 1.0
|
||||
inputs = [
|
||||
{ commodity = "textiles", quantity = 1.5 },
|
||||
{ commodity = "organic_compounds", quantity = 0.5 },
|
||||
]
|
||||
description = "Premium garments, technical craft goods. Fiber supply ceiling per corp."
|
||||
```
|
||||
|
||||
Each chain has independent failure modes: a rare minerals shortage doesn't touch luxury goods. A timber shortage doesn't affect wine production. The scarcity cascades are input-specific, and the corporation layer maps which corps operate which chains where.
|
||||
|
||||
---
|
||||
|
||||
## 2. Unified TOML Schema
|
||||
|
||||
### Updated field set
|
||||
|
||||
I'm merging the best from all four proposals. My Round 1 had 8 fields. The converged schema has 12. Each addition creates distinct simulation behavior.
|
||||
|
||||
**From B-S (new):**
|
||||
- `production_ubiquity` — guides `generate_corporations` in distributing production across the map. Without it, the initialization binary has no guidance on geographic spread. 5 tiers from B-S: ubiquitous → monopolistic.
|
||||
- `demand_model` — determines tâtonnement behavior: `market` (standard), `utility` (population-driven floor, never hits zero), `compliance` (regulation-driven, tracks Commission presence). This is what makes water/fuel behave differently from consumer goods under the same supply shock.
|
||||
|
||||
**From Gestalt (replaces my `political_sensitivity` boolean):**
|
||||
- `commission_certified` — requires Commission certification for formal sale. The cost of certification IS the shadow economy incentive.
|
||||
- `compact_contested` — Compact officially contests Commission authority. Creates the political friction.
|
||||
- `shadow_viable` — shadow market routinely exists. Flags where the shadow economy bites.
|
||||
|
||||
Three booleans instead of one gives the sim three independent political signals per commodity. A commodity can be Commission-certified but NOT Compact-contested (e.g., food safety certification — everyone accepts it). Or Compact-contested but NOT shadow-viable (e.g., vehicle registration — contested in principle, but impractical to shadow-market a starship).
|
||||
|
||||
**Retained from my Round 1 (no change):**
|
||||
- `tier`, `elasticity`, `base_price`, `unit`, `description`
|
||||
|
||||
**Refined from my Round 1:**
|
||||
- `bulk_class` — expanded from 4 to 7 values, incorporating B-S's transport cost analysis and Gestalt's oversized/perishable insights
|
||||
|
||||
### Complete TOML record format
|
||||
|
||||
```toml
|
||||
# wiki/economics/commodities.toml
|
||||
#
|
||||
# Source of truth for the simulation's commodity vocabulary.
|
||||
# Compiled to systems.db via `make economy-db`.
|
||||
#
|
||||
# Fields:
|
||||
# name — display name (Title Case)
|
||||
# tier — raw | intermediate | final | service_professional | service_luxury
|
||||
# elasticity — perfectly_inelastic | inelastic | unit_elastic | elastic | highly_elastic
|
||||
# base_price — equilibrium price in Tractus (float, must be > 0)
|
||||
# bulk_class — bulk | liquid | standard | compact | precision | oversized | non_physical
|
||||
# unit — tonnes | units | contracts
|
||||
# production_ubiquity — ubiquitous | common | regional | concentrated | monopolistic
|
||||
# demand_model — market | utility | compliance
|
||||
# commission_certified — bool; requires Commission certification for formal sale
|
||||
# compact_contested — bool; Compact contests Commission authority over this
|
||||
# shadow_viable — bool; shadow market routinely exists for this commodity
|
||||
# description — optional flavor text (for wiki/UI, not consumed by sim)
|
||||
```
|
||||
|
||||
### Updated bulk_class (7 values)
|
||||
|
||||
| Class | Transport multiplier | Rationale |
|
||||
|-------|---------------------|-----------|
|
||||
| `bulk` | 1.2x | Heavy, low-value-density. Ore, stone, timber, agricultural produce |
|
||||
| `liquid` | 1.3x | Requires containment. Water, chemical feedstock, fusion fuel |
|
||||
| `standard` | 1.0x | Normal cargo. Refined metals, panels, processed food, textiles |
|
||||
| `compact` | 0.8x | High-value, low-mass. Electronics, consumer goods, drive cores |
|
||||
| `precision` | 0.6x | Very high value, special handling. Rare minerals, implant hardware, luxury goods |
|
||||
| `oversized` | 2.0x+ | Physically awkward, partial assembly. Heavy equipment, vehicles, habitat modules |
|
||||
| `non_physical` | ∞ | Cannot traverse gates. All services |
|
||||
|
||||
B-S's transport cost analysis (section 5 of his Round 1) shows these multipliers produce 3:1–4:1 ratios for bulk goods and 1.5:1–2:1 for precision goods across the Reach diameter. This is the right range for meaningful geographic specialization without absurd price extremes.
|
||||
|
||||
Gestalt's `oversized` class is the key addition: heavy equipment, vehicles, freight haulers, and habitat modules at 2.0x+ creates durable manufacturing hub economics. You can't arbitrage away Stalownia's advantage by shipping finished rigs — the transport cost is too high. This is what makes manufacturing centers structural rather than transient.
|
||||
|
||||
### Elasticity labels (5 values)
|
||||
|
||||
| Label | ε range | Behavior | Examples |
|
||||
|-------|---------|----------|---------|
|
||||
| `perfectly_inelastic` | 0.0–0.1 | Price absorbs all adjustment. Dramatic spikes | water (on stations), fusion_fuel, medical_services |
|
||||
| `inelastic` | 0.2–0.4 | Modest demand reduction, significant price effect | agricultural_produce, processed_food, chemicals, legal_services, financial_services |
|
||||
| `unit_elastic` | 0.8–1.2 | Proportional adjustment | metallic_ore, structural_panels, electronics, consumer_goods, habitat_modules |
|
||||
| `elastic` | 1.5–2.5 | Buyers defer/substitute | heavy_equipment, vehicles, freight_haulers, entertainment, drive_cores |
|
||||
| `highly_elastic` | 3.0+ | Market collapses to essential buyers | luxury_goods, gate_components, implant_hardware, tourism |
|
||||
|
||||
B-S's panic mechanism (stockpile-target hoarding) is a sim-runtime behavior, not a commodity property. The sim derives it from elasticity + stockpile thresholds. This keeps the TOML clean and the panic behavior configurable without re-authoring commodity data.
|
||||
|
||||
---
|
||||
|
||||
## 3. Unified Commodity List
|
||||
|
||||
### Raw Materials (8)
|
||||
|
||||
D-173 said ~7. The 8th (chemical_feedstock) serves distinct chains from organic_compounds — geological/gas extraction vs. biosphere harvesting. They are not substitutable.
|
||||
|
||||
| ID | Name | Bulk | Ubiquity | Demand | Elasticity | Base (T) | Commission | Compact | Shadow |
|
||||
|----|------|------|----------|--------|------------|----------|------------|---------|--------|
|
||||
| `metallic_ore` | Metallic Ore | bulk | common | market | unit_elastic | 10 | no | no | no |
|
||||
| `rare_minerals` | Rare Minerals | precision | concentrated | market | unit_elastic | 80 | no | no | partial |
|
||||
| `timber` | Timber/Biomass | bulk | regional | market | unit_elastic | 15 | no | no | no |
|
||||
| `agricultural_produce` | Agricultural Produce | bulk | ubiquitous | utility | inelastic | 5 | partial | no | no |
|
||||
| `water` | Water/Volatiles | liquid | ubiquitous | utility | perfectly_inelastic | 2 | no | no | no |
|
||||
| `organic_compounds` | Organic Compounds | standard | regional | market | unit_elastic | 35 | no | no | no |
|
||||
| `stone` | Stone/Aggregate | bulk | common | market | unit_elastic | 8 | no | no | no |
|
||||
| `chemical_feedstock` | Chemical Feedstock | liquid | common | market | unit_elastic | 12 | yes (hazmat) | yes | yes |
|
||||
|
||||
Notes:
|
||||
- `water` is raw. `fusion_fuel` is intermediate — directive (c).
|
||||
- `rare_minerals` subsumes Gestalt's "lattice-grade material" and Miri's "precision-grade minerals" at the abstract level. The lore texture (east_reach lattice substrates, exotic crystals) lives in corporation data.
|
||||
- `chemical_feedstock` is Commission-certified (hazmat) and Compact-contested (Compact views hazmat certification as tariff by another name — Gestalt's analysis, section 4).
|
||||
- `agricultural_produce` has `demand_model = utility` because populations need food regardless of economic conditions (B-S's point about demand floors).
|
||||
|
||||
### Intermediate Goods (9)
|
||||
|
||||
D-173 said ~8. The 9th (fusion_fuel) is mandated by directive (c).
|
||||
|
||||
| ID | Name | Bulk | Ubiquity | Demand | Elasticity | Base (T) | Commission | Compact | Shadow |
|
||||
|----|------|------|----------|--------|------------|----------|------------|---------|--------|
|
||||
| `refined_metals` | Refined Metals | standard | common | market | inelastic | 30 | no | no | no |
|
||||
| `advanced_alloys` | Advanced Alloys | standard | regional | market | unit_elastic | 100 | no | no | no |
|
||||
| `fusion_fuel` | Fusion Fuel | liquid | common | utility | perfectly_inelastic | 20 | yes (safety) | yes | yes |
|
||||
| `processed_food` | Processed Food | standard | ubiquitous | utility | inelastic | 15 | partial | no | no |
|
||||
| `electronics` | Electronics/Components | compact | regional | market | unit_elastic | 120 | no | no | no |
|
||||
| `chemicals` | Chemicals/Pharmaceuticals | standard | regional | market | inelastic | 60 | yes | yes | yes |
|
||||
| `textiles` | Textiles/Composites | standard | regional | market | unit_elastic | 50 | no | no | no |
|
||||
| `structural_panels` | Structural Panels | standard | regional | market | unit_elastic | 45 | no | no | no |
|
||||
| `drive_cores` | Drive Cores | compact | concentrated | market | elastic | 200 | no | no | no |
|
||||
|
||||
Notes:
|
||||
- `fusion_fuel` from water with low yield per directive (c). `demand_model = utility` because every station needs continuous power. Commission-certified (fissile safety), Compact-contested (energy independence is a Compact political project — Gestalt section 4), shadow-viable (frontier fuel without certification).
|
||||
- `chemicals` is Commission-certified, Compact-contested, shadow-viable — same pattern as chemical_feedstock. The certification chain cascades.
|
||||
|
||||
### Final Goods (8)
|
||||
|
||||
D-173 said ~7. The 8th (freight_haulers) has a different demand function from vehicles — B-S's argument that freight hauler demand = f(trade_volume, fleet_age) while vehicle demand = f(population, wealth) is compelling. They respond to different economic signals.
|
||||
|
||||
| ID | Name | Bulk | Ubiquity | Demand | Elasticity | Base (T) | Commission | Compact | Shadow |
|
||||
|----|------|------|----------|--------|------------|----------|------------|---------|--------|
|
||||
| `heavy_equipment` | Heavy Equipment | oversized | regional | market | elastic | 250 | no | no | no |
|
||||
| `vehicles` | Vehicles/Craft | oversized | regional | market | elastic | 350 | yes (safety) | partial | partial |
|
||||
| `freight_haulers` | Freight Haulers | oversized | concentrated | market | elastic | 300 | yes (safety) | partial | partial |
|
||||
| `consumer_goods` | Consumer Goods | compact | ubiquitous | market | unit_elastic | 80 | no | no | partial |
|
||||
| `luxury_goods` | Luxury Goods | precision | monopolistic | market | highly_elastic | 500 | partial | no | yes |
|
||||
| `implant_hardware` | Implant Hardware | precision | concentrated | market | highly_elastic | 400 | yes (medical) | HIGH | HIGH |
|
||||
| `gate_components` | Gate Components | oversized | monopolistic | market | highly_elastic | 800 | yes (strategic) | extreme | high |
|
||||
| `habitat_modules` | Habitat Modules | oversized | regional | market | unit_elastic | 150 | no | no | no |
|
||||
|
||||
Notes:
|
||||
- `luxury_goods` at `production_ubiquity = monopolistic` because premium luxury production is location-locked (terroir, geological ceilings). Generic luxury goods might be produced more widely, but the high-margin stuff is rare. Multiple production chains handle the variety (section 1).
|
||||
- `implant_hardware` is THE political flashpoint — Commission certification + Compact rejection. D-037 canonical contraband territory. Both `compact_contested` and `shadow_viable` are maximally true.
|
||||
- `gate_components` is the Commission's ultimate leverage tool. Monopoly pricing (Gate Corp) + Commission certification = maximum structural extraction. Gestalt nailed this in section 4.
|
||||
- `freight_haulers` with `demand_model = market` but demand function driven by trade volume (the sim derives this from trade flow signals, not population). B-S's separation from vehicles is correct.
|
||||
|
||||
### Professional Services (7)
|
||||
|
||||
D-173 said ~5. Directive (e): more is richer.
|
||||
|
||||
| ID | Name | Ubiquity | Demand | Elasticity | Base (T) | Commission | Compact | Shadow |
|
||||
|----|------|----------|--------|------------|----------|------------|---------|--------|
|
||||
| `legal_services` | Legal Services | common | compliance | inelastic | 100 | yes | partial | partial |
|
||||
| `financial_services` | Financial Services | common | market | inelastic | 120 | no | no | no |
|
||||
| `medical_services` | Medical/Re-embodiment | regional | utility | perfectly_inelastic | 200 | yes (medical) | partial | HIGH |
|
||||
| `insurance` | Insurance/Risk | regional | market | unit_elastic | 75 | no | no | no |
|
||||
| `information_brokerage` | Information Brokerage | regional | market | unit_elastic | 50 | no | no | partial |
|
||||
| `commission_certification` | Commission Certification | concentrated | compliance | inelastic | 100 | inherent | extreme | N/A |
|
||||
| `habitation` | Habitation/Berths | common | utility | inelastic | 40 | no | no | no |
|
||||
|
||||
Notes:
|
||||
- `information_brokerage` consolidates "intelligence" and "information brokerage" per directive (d). Adams & Ford, Ferreira Monteiro, Mercado all provide intelligence products through this service. One service, multiple corporate providers.
|
||||
- `commission_certification` is separate from `legal_services` per Miri's argument: the Commission's own regulatory process is the mechanism that creates the shadow economy. Its cost, availability, and Tractus-denomination is what makes the Compact's alternative economy rational. This is the most politically charged "commodity" in the simulation.
|
||||
- `habitation` covers Gestalt's "rent" verb from D-131 and creates station-capacity pressure. A booming node runs out of berths → caps service growth → creates real estate price signal → forces expansion or migration. Mechanically important.
|
||||
- `medical_services` subsumes Miri's separate "re-embodiment" service. Re-embodiment is the premium tier within medical services, not a separate service. The corporation providing it (Prometheus-adjacent) determines whether re-embodiment is available at a given node.
|
||||
- Logistics management dropped per Gestalt: redundant with transport cost model.
|
||||
|
||||
### Luxury/Experiential Services (3)
|
||||
|
||||
| ID | Name | Ubiquity | Demand | Elasticity | Base (T) | Commission | Compact | Shadow |
|
||||
|----|------|----------|--------|------------|----------|------------|---------|--------|
|
||||
| `tourism` | Tourism | concentrated | market | highly_elastic | 100 | no | no | no |
|
||||
| `entertainment` | Entertainment/Holo-content | common | market | elastic | 30 | no | no | no |
|
||||
| `hospitality` | Fine Dining/Hospitality | regional | market | elastic | 60 | no | no | no |
|
||||
|
||||
---
|
||||
|
||||
## 4. Complete Production Chain Set
|
||||
|
||||
### Raw → Intermediate
|
||||
|
||||
| Chain ID | Output | Inputs | Notes |
|
||||
|----------|--------|--------|-------|
|
||||
| `smelt_ore` | refined_metals (1.0) | metallic_ore (2.0) | High volume, simple processing |
|
||||
| `alloy_fabrication` | advanced_alloys (1.0) | metallic_ore (1.5), rare_minerals (0.3) | Rare minerals are bottleneck |
|
||||
| `fuel_refining` | fusion_fuel (1.0) | water (5.0) | Low yield — directive (c). 5:1 ratio makes fuel expensive despite cheap input |
|
||||
| `food_processing` | processed_food (1.0) | agricultural_produce (1.5), water (0.2) | Ubiquitous, low margin |
|
||||
| `electronics_fabrication` | electronics (1.0) | rare_minerals (0.5), refined_metals (0.3) | Rare minerals are scarcity driver |
|
||||
| `chemical_processing` | chemicals (1.0) | chemical_feedstock (1.0), water (0.3) | Industrial chemistry |
|
||||
| `chemical_from_organics` | chemicals (0.8) | organic_compounds (1.0), water (0.3) | **Substitution route**: biochem path to same output, lower yield |
|
||||
| `textile_production` | textiles (1.0) | organic_compounds (0.8), chemicals (0.2) | Includes brach fiber processing pathway |
|
||||
| `panel_milling` | structural_panels (1.0) | timber (1.0), refined_metals (0.5) | Timber-dependent — forest world proximity matters |
|
||||
| `drive_core_assembly` | drive_cores (1.0) | rare_minerals (0.4), advanced_alloys (0.8) | Double rare_minerals dependency (direct + via alloys) |
|
||||
|
||||
### Intermediate → Final
|
||||
|
||||
| Chain ID | Output | Inputs | Notes |
|
||||
|----------|--------|--------|-------|
|
||||
| `heavy_equipment_assembly` | heavy_equipment (1.0) | refined_metals (1.0), electronics (0.3), drive_cores (0.2) | Stalownia's recipe |
|
||||
| `vehicle_manufacturing` | vehicles (1.0) | advanced_alloys (0.8), electronics (0.3), drive_cores (0.3) | MVG uses alloys, not base metal |
|
||||
| `freight_hauler_construction` | freight_haulers (1.0) | refined_metals (1.5), drive_cores (0.5), electronics (0.3) | Metal and drive-core intensive |
|
||||
| `consumer_goods_assembly` | consumer_goods (1.0) | processed_food (0.3), textiles (0.3), electronics (0.2) | Broad input mix — diversified |
|
||||
| `luxury_from_agriculture` | luxury_goods (1.0) | agricultural_produce (2.0), chemicals (0.3) | Spirits, wines, premium food. Aging/terroir per corp |
|
||||
| `luxury_from_stone` | luxury_goods (0.5) | stone (3.0) | Decorative stone, marble. Geological ceiling per corp |
|
||||
| `luxury_from_textiles` | luxury_goods (1.0) | textiles (1.5), organic_compounds (0.5) | Premium garments, craft goods. Fiber ceiling per corp |
|
||||
| `implant_fabrication` | implant_hardware (1.0) | electronics (0.5), chemicals (0.3), advanced_alloys (0.2) | Electronics-dependent — rare mineral cascade |
|
||||
| `gate_component_assembly` | gate_components (1.0) | advanced_alloys (1.0), drive_cores (0.5), electronics (0.4) | Most input-intensive final. Triple rare_minerals dependency |
|
||||
| `habitat_module_assembly` | habitat_modules (1.0) | structural_panels (1.5), electronics (0.4), chemicals (0.3) | Panel-heavy — timber scarcity cascades here |
|
||||
|
||||
### Substitution Routes (structural, per D-173)
|
||||
|
||||
Two substitution routes in the intermediate tier:
|
||||
1. **chemicals**: two recipes (`chemical_processing` from chemical_feedstock, `chemical_from_organics` from organic_compounds). Different yields, same output. A node near biosphere worlds uses the organic path; a node near gas extraction uses the chemical path. Both produce chemicals.
|
||||
2. **luxury_goods**: three recipes from different raw inputs (agriculture, stone, textiles). Each has independent failure modes and geographic anchors.
|
||||
|
||||
### Scarcity Cascade Analysis (from B-S, validated)
|
||||
|
||||
B-S's cascade analysis holds with the unified list. The critical cascades:
|
||||
|
||||
| Raw shortage | Direct impact | Downstream | Severity |
|
||||
|-------------|--------------|------------|----------|
|
||||
| **rare_minerals** | electronics ↓, advanced_alloys ↓, drive_cores ↓ | implant_hardware ↓↓, gate_components ↓↓↓, vehicles ↓↓ | **CRITICAL** — entire high-tech sector |
|
||||
| **metallic_ore** | refined_metals ↓, advanced_alloys ↓ | heavy_equipment ↓↓, freight_haulers ↓↓, habitat_modules ↓ | Construction + heavy industry halt |
|
||||
| **water** | fusion_fuel ↓↓, processed_food ↓, chemicals ↓ | Nearly everything downstream | **CRITICAL** — water is the hidden universal dependency |
|
||||
| **timber** | structural_panels ↓ | habitat_modules ↓↓ | Narrow but politically explosive (no new stations) |
|
||||
| **organic_compounds** | textiles ↓, chemicals (partial) ↓ | luxury_goods ↓, consumer_goods ↓ | Quality of life degradation |
|
||||
| **agricultural_produce** | processed_food ↓, luxury_goods ↓ | consumer_goods ↓ | Short chain but inelastic — massive price effect |
|
||||
|
||||
**New cascade from directive (c): water → fusion_fuel.** Every system needs fuel. The 5:1 yield ratio means a water disruption creates a 5x amplified fuel shortage. Water-poor stations far from ice sources have permanently elevated operating costs AND energy costs. This is a structural double-whammy that creates real geographic disadvantage for bare-rock frontier stations. Elegant.
|
||||
|
||||
---
|
||||
|
||||
## 5. Service Demand Model (Gestalt integration)
|
||||
|
||||
Services don't participate in production chains (D-173). They are demand sinks on the physical commodity chain. Gestalt's goods-demand multiplier model (section 5 of his Round 1) is the right approach:
|
||||
|
||||
| Service | Goods consumed | Mechanism |
|
||||
|---------|---------------|-----------|
|
||||
| legal_services | fusion_fuel (office power) | Tractus velocity (fees accelerate currency circulation) |
|
||||
| financial_services | — | Tractus velocity; affects cross-zone trade friction |
|
||||
| medical_services | chemicals, electronics | Hospital/clinic consumables |
|
||||
| insurance | — | Affects trade volume through risk pricing |
|
||||
| information_brokerage | — | Affects signal visibility (improves `official_coverage_ratio`) |
|
||||
| commission_certification | — | Tractus sink (certification fees); inverse of shadow economy |
|
||||
| habitation | consumer_goods, fusion_fuel | Station life support and amenities |
|
||||
| tourism | luxury_goods, consumer_goods | Destination consumption |
|
||||
| entertainment | electronics (production hardware), fusion_fuel | Content creation infrastructure |
|
||||
| hospitality | agricultural_produce, processed_food | Kitchen/restaurant inputs |
|
||||
|
||||
This means a high-tourism node pulls increased luxury goods demand. A high-medical-services node increases chemicals demand. These are emergence-generating interactions without explicit service transaction modeling. The service's throughput seed (D-176) determines volume; the goods-demand multiplier creates the supply chain link.
|
||||
|
||||
---
|
||||
|
||||
## 6. Updated SQL Schema (for #804)
|
||||
|
||||
```sql
|
||||
CREATE TABLE commodities (
|
||||
commodity_id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
tier TEXT NOT NULL CHECK(tier IN (
|
||||
'raw', 'intermediate', 'final',
|
||||
'service_professional', 'service_luxury'
|
||||
)),
|
||||
elasticity TEXT NOT NULL CHECK(elasticity IN (
|
||||
'perfectly_inelastic', 'inelastic', 'unit_elastic',
|
||||
'elastic', 'highly_elastic'
|
||||
)),
|
||||
base_price REAL NOT NULL CHECK(base_price > 0),
|
||||
bulk_class TEXT NOT NULL CHECK(bulk_class IN (
|
||||
'bulk', 'liquid', 'standard', 'compact',
|
||||
'precision', 'oversized', 'non_physical'
|
||||
)),
|
||||
unit TEXT NOT NULL CHECK(unit IN ('tonnes', 'units', 'contracts')),
|
||||
production_ubiquity TEXT NOT NULL CHECK(production_ubiquity IN (
|
||||
'ubiquitous', 'common', 'regional',
|
||||
'concentrated', 'monopolistic'
|
||||
)),
|
||||
demand_model TEXT NOT NULL CHECK(demand_model IN (
|
||||
'market', 'utility', 'compliance'
|
||||
)),
|
||||
commission_certified INTEGER NOT NULL DEFAULT 0,
|
||||
compact_contested INTEGER NOT NULL DEFAULT 0,
|
||||
shadow_viable INTEGER NOT NULL DEFAULT 0,
|
||||
description TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE production_chains (
|
||||
chain_id TEXT PRIMARY KEY,
|
||||
output_commodity TEXT NOT NULL REFERENCES commodities(commodity_id),
|
||||
output_quantity REAL NOT NULL DEFAULT 1.0 CHECK(output_quantity > 0),
|
||||
location_bound INTEGER NOT NULL DEFAULT 0,
|
||||
description TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE chain_inputs (
|
||||
chain_id TEXT NOT NULL REFERENCES production_chains(chain_id) ON DELETE CASCADE,
|
||||
commodity_id TEXT NOT NULL REFERENCES commodities(commodity_id),
|
||||
quantity REAL NOT NULL CHECK(quantity > 0),
|
||||
PRIMARY KEY (chain_id, commodity_id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_commodities_tier ON commodities(tier);
|
||||
CREATE INDEX idx_commodities_ubiquity ON commodities(production_ubiquity);
|
||||
CREATE INDEX idx_chains_output ON production_chains(output_commodity);
|
||||
CREATE INDEX idx_chain_inputs_commodity ON chain_inputs(commodity_id);
|
||||
```
|
||||
|
||||
12 fields per commodity. 1:1 TOML→DB mapping. No computed columns.
|
||||
|
||||
---
|
||||
|
||||
## 7. Updated Validation Rules
|
||||
|
||||
All Round 1 rules remain. Additions for new fields:
|
||||
|
||||
### New hard failures
|
||||
|
||||
| Rule | Rationale |
|
||||
|------|-----------|
|
||||
| All `production_ubiquity` values must match enum | Typo protection |
|
||||
| All `demand_model` values must match enum | Typo protection |
|
||||
| All `bulk_class` values must match enum (7 values now) | Expanded from 4 |
|
||||
| Services must have `bulk_class = "non_physical"` | Services can't be transported |
|
||||
| `demand_model = "utility"` commodities must have `elasticity` ∈ {perfectly_inelastic, inelastic} | Utility goods can't be highly elastic — people need them |
|
||||
| `demand_model = "compliance"` commodities must have `commission_certified = true` | Compliance demand requires a certifying authority |
|
||||
| `fusion_fuel` must appear as an intermediate, not raw | Directive (c) constraint |
|
||||
|
||||
### New soft warnings
|
||||
|
||||
| Rule | Rationale |
|
||||
|------|-----------|
|
||||
| Commodities with `shadow_viable = true` SHOULD have `commission_certified = true` OR `compact_contested = true` | Shadow markets arise from regulatory friction — if there's no friction, why shadow? |
|
||||
| `production_ubiquity = "monopolistic"` commodities SHOULD have `elasticity` ∈ {elastic, highly_elastic} | Monopolistic supply + inelastic demand = runaway prices with no equilibrium |
|
||||
|
||||
---
|
||||
|
||||
## 8. Complete Example TOML Records
|
||||
|
||||
### Raw material example
|
||||
|
||||
```toml
|
||||
[water]
|
||||
name = "Water/Volatiles"
|
||||
tier = "raw"
|
||||
elasticity = "perfectly_inelastic"
|
||||
base_price = 2.0
|
||||
bulk_class = "liquid"
|
||||
unit = "tonnes"
|
||||
production_ubiquity = "ubiquitous"
|
||||
demand_model = "utility"
|
||||
commission_certified = false
|
||||
compact_contested = false
|
||||
shadow_viable = false
|
||||
description = "Water ice, atmospheric gases. Life support critical. Fusion fuel feedstock."
|
||||
```
|
||||
|
||||
### Intermediate example (directive c — the new water→fuel chain)
|
||||
|
||||
```toml
|
||||
[fusion_fuel]
|
||||
name = "Fusion Fuel"
|
||||
tier = "intermediate"
|
||||
elasticity = "perfectly_inelastic"
|
||||
base_price = 20.0
|
||||
bulk_class = "liquid"
|
||||
unit = "tonnes"
|
||||
production_ubiquity = "common"
|
||||
demand_model = "utility"
|
||||
commission_certified = true
|
||||
compact_contested = true
|
||||
shadow_viable = true
|
||||
description = "Deuterium/tritium refined from water. Low yield. Continuous consumption."
|
||||
```
|
||||
|
||||
### Final good example (the politically charged one)
|
||||
|
||||
```toml
|
||||
[implant_hardware]
|
||||
name = "Implant Hardware"
|
||||
tier = "final"
|
||||
elasticity = "highly_elastic"
|
||||
base_price = 400.0
|
||||
bulk_class = "precision"
|
||||
unit = "units"
|
||||
production_ubiquity = "concentrated"
|
||||
demand_model = "market"
|
||||
commission_certified = true
|
||||
compact_contested = true
|
||||
shadow_viable = true
|
||||
description = "Neural interfaces, lattice components. Commission-certified. THE Compact flashpoint."
|
||||
```
|
||||
|
||||
### Production chain example (with substitution)
|
||||
|
||||
```toml
|
||||
[chemical_processing]
|
||||
output = "chemicals"
|
||||
output_quantity = 1.0
|
||||
inputs = [
|
||||
{ commodity = "chemical_feedstock", quantity = 1.0 },
|
||||
{ commodity = "water", quantity = 0.3 },
|
||||
]
|
||||
description = "Industrial chemistry from geological/gas feedstock."
|
||||
|
||||
[chemical_from_organics]
|
||||
output = "chemicals"
|
||||
output_quantity = 0.8
|
||||
inputs = [
|
||||
{ commodity = "organic_compounds", quantity = 1.0 },
|
||||
{ commodity = "water", quantity = 0.3 },
|
||||
]
|
||||
description = "Biochemical processing. Lower yield, different source. Substitution route."
|
||||
```
|
||||
|
||||
### Service example
|
||||
|
||||
```toml
|
||||
[commission_certification]
|
||||
name = "Commission Certification"
|
||||
tier = "service_professional"
|
||||
elasticity = "inelastic"
|
||||
base_price = 100.0
|
||||
bulk_class = "non_physical"
|
||||
unit = "contracts"
|
||||
production_ubiquity = "concentrated"
|
||||
demand_model = "compliance"
|
||||
commission_certified = true
|
||||
compact_contested = true
|
||||
shadow_viable = false
|
||||
description = "Commission regulatory certification. Tractus-denominated. Availability inverse to shadow economy."
|
||||
```
|
||||
|
||||
(Shadow-viable is false for certification itself — you can't shadow-market the Commission's own stamp. You shadow-market the GOODS that skip certification.)
|
||||
|
||||
---
|
||||
|
||||
## 9. Totals and Delta from D-173
|
||||
|
||||
| Category | D-173 target | This proposal | Delta | Justification |
|
||||
|----------|-------------|---------------|-------|---------------|
|
||||
| Raw materials | ~7 | 8 | +1 | chemical_feedstock distinct from organic_compounds |
|
||||
| Intermediate goods | ~8 | 9 | +1 | fusion_fuel per directive (c) |
|
||||
| Final goods | ~7 | 8 | +1 | freight_haulers per B-S demand function analysis |
|
||||
| Professional services | ~5 | 7 | +2 | commission_certification (shadow economy mechanism), habitation (rent verb) |
|
||||
| Luxury services | ~3 | 3 | 0 | — |
|
||||
| **Total** | **~30** | **35** | **+5** | Each addition creates distinct simulation behavior |
|
||||
|
||||
D-173 said "approximately 30." Five additions, each with a clear mechanical justification. None are brand-level splits (directive a). None are gratuitous duplication (directive d). The count follows from what the civilization needs (task framing).
|
||||
|
||||
---
|
||||
|
||||
## 10. Difficulty Assessment (unchanged)
|
||||
|
||||
- **TOML schema**: Tier 1 (straightforward). More fields per record, same flat structure.
|
||||
- **Build step**: Tier 2 (moderate). ~250 lines now (was ~200), extra validation for new fields.
|
||||
- **Schema alignment**: Tier 1 (straightforward). 12-column table, direct mapping.
|
||||
- **Validation rules**: Tier 2 (moderate). Cross-field consistency checks added.
|
||||
|
||||
Total: feasible, well-bounded. The risk remains content completeness, not technical complexity.
|
||||
|
||||
---
|
||||
|
||||
## 11. Open Questions for the Team
|
||||
|
||||
1. **B-S:** Is the 5:1 water→fuel yield ratio right for the economic dynamics you want? Lower ratio = fuel cheaper, less geographic pressure. Higher ratio = more frontier economic stress.
|
||||
|
||||
2. **Gestalt:** The service goods-demand multipliers (section 5) — should these be authored in a TOML file, or hardcoded in the sim? If TOML, we need a `service_demand.toml` schema alongside commodities and chains.
|
||||
|
||||
3. **Miri:** The `description` field — placeholder quality for now, or should Mellanie do a pass before the TOML ships? (This is orthogonal to the schema question but affects the authoring timeline.)
|
||||
|
||||
4. **All:** Is 35 commodities the right count, or should any of my 5 additions be collapsed? I can defend all five, but I'm not attached to chemical_feedstock if it truly collapses into organic_compounds.
|
||||
Reference in New Issue
Block a user