diff --git a/server/data/systems.db b/server/data/systems.db index 3080f69a6..f5165b096 100644 Binary files a/server/data/systems.db and b/server/data/systems.db differ diff --git a/wiki/economics/corp_hq_placement.toml b/wiki/economics/corp_hq_placement.toml index c3689d9d5..f1a404083 100644 --- a/wiki/economics/corp_hq_placement.toml +++ b/wiki/economics/corp_hq_placement.toml @@ -15,74 +15,75 @@ # sits alone). Standalone stanzas carry a second field, # standalone_economic_role, so the emitted atlas_city_names # row has a real economic_role (the existing 10-value -# D-195/D-197 vocabulary — manufacturing | financial | -# agricultural | extraction | service_mixed | institutional | -# transit_hub | research | military | residential) instead -# of a generic fallback. CityTenant stanzas do not carry this -# field — no settlement is emitted for them, so it would be -# dead data. +# D-195/D-197 vocabulary). CityTenant stanzas do not carry +# this field — no settlement is emitted for them. +# +# THE BOUNDARY (Jeroen's ruling, T-1076 item 0 — supersedes the earlier +# bulk_class-derived default, which over-generalized: it mapped every +# physical-goods value Standalone and produced a winery and a leatherworks +# as standalone asteroid-belt settlements). Standalone applies ONLY where +# the HQ is ITSELF an industrial complex / company town: +# +# - extraction / mining / quarrying (the deposit IS the site) +# - heavy vehicle + shipyard manufacturing (the yard IS the site) +# - heavy energy: refinery / extraction complexes (the plant IS the site) +# - gate / orbital infrastructure fabrication (the works IS the site) +# +# EVERYTHING else is CityTenant — explicitly including craft/consumer +# manufacturing (distilleries, breweries, wineries, ceramics, textiles, +# furniture), agriculture of every scale (the estate/agribusiness OFFICE +# sits in a market town; the fields are not the HQ), and high-tech fabs. +# Jeroen's rendering note (recorded in D-242): CityTenant HQs often sit on +# a settlement's EDGE or in industrial clusters — that is rendering / +# district-placement color for later phases, NOT a third placement class. # # This file has exactly one stanza per corp_specialization value — the # REUSED D-237 specialization_vocabulary id-space (see # wiki/economics/specialization_vocabulary.toml): the original 27 -# system-authored values plus 4 corp-only Services-extension values added -# alongside this file (trade_distribution, hospitality_hub, -# professional_services, licensed_clinical_services — real gaps the T-1074 -# corp categorization pass found: ~10% of corps do logistics/hospitality/ -# consulting/licensed-clinical work no original value covered; the fourth -# landed via PR #177 M1). D-242 asked for an authored "specialization -> HQ-placement -# map"; this vocabulary already exists and already carries the signal that -# decides placement (bulk_class_projected: NonPhysical vs everything else), -# so rather than invent a second, parallel corp-only taxonomy, the map below -# is this vocabulary keyed onto the two-value placement enum (D-242 -# amendment, recorded 2026-07-16 alongside T-1074). +# system-authored values plus 4 corp-only Services-extension values +# (trade_distribution, hospitality_hub, professional_services, +# licensed_clinical_services). Flipped stanzas below carry a one-line +# justification against the boundary. # -# The default follows bulk_class_projected exactly: -# NonPhysical (financial/institutional/media/legal/research services) -# -> CityTenant — an office; no physical plant needed. -# Everything else (BulkSolid/BulkLiquid/PrecisionDense/Perishable — -# farms, mines, refineries, shipyards, factories) -# -> Standalone — needs land/plant of its own. -# -# hq_placement is authored EXPLICITLY per value (not computed from -# bulk_class_projected at import time) so a future ticket can flip one -# value without touching import code — three values in the Services group -# (governance_center, transit_hub, research_station) are individually -# lore-ambiguous (a "transit hub" corp could plausibly BE its own -# spaceport-town, e.g. Gateway/Wolf 359 read as whole transit-identity -# systems in the vocabulary's own descriptions) but are pinned to the -# bulk_class_projected default here for consistency; revisit case-by-case -# if a specific corp's placement reads wrong once bodies are walkable. -# -# Decisions: D-242 (this map), D-237 (the reused vocabulary + the -# bulk_class_projected signal this defaults from). Ticket: T-1074. +# Decisions: D-242 (this map + the boundary), D-237 (the reused +# vocabulary). Tickets: T-1074 (map created), T-1076 item 0 (boundary +# correction). PR #177 review created the 4th extension value (M1). # ========================================================================== # ------------------------------------------------------------------------- -# Agricultural — Standalone (farms/estates need land) +# Agricultural — ALL CityTenant (T-1076 item 0). The land/terroir is the +# production site, but the HQ is the estate/agribusiness office, and offices +# sit in market towns. (Previously Standalone via the bulk_class shortcut.) # ------------------------------------------------------------------------- [estate_farming] -hq_placement = "Standalone" -standalone_economic_role = "agricultural" +hq_placement = "CityTenant" +# FLIPPED: estate agriculture — Jeroen's explicit example; the estate office +# sits in a market town, the manor grounds are not a corporate settlement. [breadbasket] -hq_placement = "Standalone" -standalone_economic_role = "agricultural" +hq_placement = "CityTenant" +# FLIPPED: industrial-scale agribusiness is still agriculture — the grain +# combine's HQ is an office in the region's market hub, not a company town +# on the fields. [terroir_agriculture] -hq_placement = "Standalone" -standalone_economic_role = "agricultural" +hq_placement = "CityTenant" +# FLIPPED: agriculture; the terroir lock is about the LAND, not the HQ. [terroir_spirits] -hq_placement = "Standalone" -standalone_economic_role = "agricultural" +hq_placement = "CityTenant" +# FLIPPED: distilleries are craft manufacturing — Jeroen's explicit example +# (Groot Karoo Cellars as a standalone belt settlement was the named +# failure mode this correction eliminates). [terroir_organics] -hq_placement = "Standalone" -standalone_economic_role = "agricultural" +hq_placement = "CityTenant" +# FLIPPED: herd/ecosystem-origin organics are agriculture; the fiber/dye +# house's HQ is a town office. # ------------------------------------------------------------------------- -# Energy — Standalone (extraction/refinery infrastructure) +# Energy — Standalone (heavy energy: the refinery/extraction complex IS the +# corporate site — explicitly inside Jeroen's boundary). # ------------------------------------------------------------------------- [fuel_production] hq_placement = "Standalone" @@ -93,7 +94,8 @@ hq_placement = "Standalone" standalone_economic_role = "extraction" # ------------------------------------------------------------------------- -# Extraction — Standalone (mine/quarry sits on the deposit) +# Extraction — Standalone (mining/quarrying: the deposit IS the site; the +# company town is the archetype of the whole Standalone class). # ------------------------------------------------------------------------- [ore_extraction] hq_placement = "Standalone" @@ -116,11 +118,17 @@ hq_placement = "Standalone" standalone_economic_role = "extraction" # ------------------------------------------------------------------------- -# Manufacturing — Standalone (factory/yard footprint) +# Manufacturing — SPLIT by the boundary: heavy vehicle/shipyard/gate works +# stay Standalone; craft/consumer fabrication flips to CityTenant. # ------------------------------------------------------------------------- [general_industrial] -hq_placement = "Standalone" -standalone_economic_role = "manufacturing" +hq_placement = "CityTenant" +# FLIPPED: this value is carried overwhelmingly by craft/consumer +# fabricators (leatherworks, furniture, ceramics, glassworks, apparel — +# Kalahari Leatherworks as a standalone belt settlement was a named failure +# mode). Not heavy vehicle/shipyard work. A future true steel-complex +# identity would need its own vocabulary value rather than re-coarsening +# this one. [shipbuilding] hq_placement = "Standalone" @@ -131,8 +139,9 @@ hq_placement = "Standalone" standalone_economic_role = "manufacturing" [consumer_goods_bazaar] -hq_placement = "Standalone" -standalone_economic_role = "manufacturing" +hq_placement = "CityTenant" +# FLIPPED: consumer manufacturing, and literally an urban bazaar of small +# workshops (Lu Ban) — the epitome of in-city production. [gate_fabrication] hq_placement = "Standalone" @@ -143,19 +152,21 @@ hq_placement = "Standalone" standalone_economic_role = "military" # ------------------------------------------------------------------------- -# High-tech — Standalone (fabrication/aquaculture plant) +# High-tech — CityTenant (T-1076 item 0: "high-tech fabs" are explicitly +# on Jeroen's CityTenant side of the boundary). # ------------------------------------------------------------------------- [precision_tech] -hq_placement = "Standalone" -standalone_economic_role = "manufacturing" +hq_placement = "CityTenant" +# FLIPPED: high-tech fabs — Jeroen's explicit example; a cleanroom campus +# is an urban-edge tenant, not a company town. [marine_farming] -hq_placement = "Standalone" -standalone_economic_role = "agricultural" +hq_placement = "CityTenant" +# FLIPPED: aquaculture is agriculture's marine twin — the operator's HQ +# sits in the harbor town, the kelp beds are not a settlement. # ------------------------------------------------------------------------- -# Services (all NonPhysical) — CityTenant (an office, no plant); no -# standalone_economic_role — no settlement is ever emitted for these. +# Services (all NonPhysical) — CityTenant (unchanged; an office, no plant). # ------------------------------------------------------------------------- [financial_hub] hq_placement = "CityTenant" @@ -179,11 +190,7 @@ hq_placement = "CityTenant" hq_placement = "CityTenant" # ------------------------------------------------------------------------- -# Services extension (4, all NonPhysical) — added alongside the vocabulary -# extension in specialization_vocabulary.toml (D-242/T-1074; the fourth via -# PR #177 M1). Same rule as the rest of Services: NonPhysical -> CityTenant -# (an office/depot/clinic, not a factory — this is exactly what made these -# corps hard to place in the original 27). +# Services extension (4, all NonPhysical) — CityTenant (unchanged). # ------------------------------------------------------------------------- [trade_distribution] hq_placement = "CityTenant" diff --git a/wiki/economics/settlement_name_locked.toml b/wiki/economics/settlement_name_locked.toml index 61b658805..936d77102 100644 --- a/wiki/economics/settlement_name_locked.toml +++ b/wiki/economics/settlement_name_locked.toml @@ -31,17 +31,20 @@ # markers.json pool. Every entry below is verified against real, repeated # `make regen-db` runs — see the note on each stanza for its actual source # row. Note (PR #177 H1/H3): corporations.headquarters_body is RECOMPUTED -# from source on every run now, so the three corp-named Standalone-HQ pins -# below (Cygni Combines, The Gate Corporation, Mastroianni Vehicle Group) -# hold because their HQ bodies carry real authored population — the -# population-first tiebreak re-derives the same body every run (verified: -# two consecutive regens, all 8 pins applied, zero placement drift) — not -# because a stale first-run value is being kept. Prometheus (GJ 702B) is -# DROPPED from this list — verified live: every one of its 12 bodies has -# zero authored markers.json city names AND zero population, so there is -# no settlement to pin at all (a genuine wiki content gap: the Reach's -# longevity-monopoly hero system has no named city anywhere — T-1115 -# authors the missing names; the bake cannot invent a name to pin). +# from source on every run now, so the two corp-named Standalone-HQ pins +# below (The Gate Corporation, Mastroianni Vehicle Group) hold because +# their HQ bodies carry real authored population — the population-first +# tiebreak re-derives the same body every run — not because a stale +# first-run value is being kept. (T-1076 item 0: the former third +# corp-named pin, "Cygni Combines", was retired when Jeroen's placement +# boundary flipped general_industrial to CityTenant — that corp no longer +# emits a settlement; Cygni B's pin moved to its pure-pool city +# 'Metropolis'.) Prometheus (GJ 702B) is DROPPED from this list — +# verified live: every one of its 12 bodies has zero authored markers.json +# city names AND zero population, so there is no settlement to pin at all +# (a genuine wiki content gap: the Reach's longevity-monopoly hero system +# has no named city anywhere — T-1115 authors the missing names; the bake +# cannot invent a name to pin). # # Match key: (body_id, name) against atlas_city_names — NOT the numeric # atlas_city_names.id, which is regen-volatile (AUTOINCREMENT, no @@ -60,8 +63,8 @@ note = "Kallast / GJ 144 (Ran) — THE breadbasket; lore-anchored plains body (D [[hero]] body_id = "GJ820Bc" -name = "Cygni Combines" -note = "Cygni B / GJ 820B — shipbuilding cluster, 7 competing combines (D-237). D-242 Standalone-HQ settlement (general_industrial corp_specialization) — the corp's own settlement IS the hero identity here; the pure pool has only 'Metropolis' (generic)." +name = "Metropolis" +note = "Cygni B / GJ 820B — shipbuilding cluster, 7 competing combines (D-237). Pure-pool city. (T-1076 item 0: previously pinned the 'Cygni Combines' Standalone-HQ settlement, retired when general_industrial flipped CityTenant under Jeroen's placement boundary.)" [[hero]] body_id = "GJ251c"