Ratified content baked into systems.db as two new tables: - architecture_zone_bias (57 rows): sparse per-template, per-zone_type token-weight overrides (integer bps), Miri-authored — the D-235 step-2 zone bias. V-TT-06: every token must exist in that template's own visual_bundle axis. - color_register_bands (28 rows): per color_register integer HSV bands (hue centidegrees, sat/val bps), Araminta-authored. V-TT-07: full catalog coverage + valid integer bounds (min<max, in range). Both TOMLs registered in generator_sources (stamp coverage); DDL in systems-schema.sql + migration.py; validation wired into import_economics steps 18/19 and test_traits.py failure-branch units (make test-tooling). systems.db regenerated + re-stamped. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
381 lines
15 KiB
TOML
381 lines
15 KiB
TOML
# ==========================================================================
|
|
# Architecture zone-type bias table (T-988, D-235 step 2)
|
|
#
|
|
# D-235's BuildingExteriorTag derivation is 3 steps: (1) the district's
|
|
# dominant trait template (D-232) filters the available token set per axis
|
|
# via its own `visual_bundle`; (2) THIS FILE biases which of those
|
|
# already-filtered tokens a building is likely to draw, keyed on the
|
|
# building's FUNCTION (D-142 zone_type) — "an industrial block stays stone,
|
|
# not corrugated metal, if the template's allow-list says so"; (3) density
|
|
# sets setback_tier. This table is step 2 only.
|
|
#
|
|
# SPARSE / FALLBACK MODEL. This is deliberately NOT a full 28-template x
|
|
# 31-zone_type x 4-axis matrix (3,472 cells). It authors only the cases
|
|
# where cultural or functional logic genuinely demands a lean — a civic
|
|
# building reaching for stone and colonnade, a market stall staying in the
|
|
# lighter/cheaper register, a fishing quay pulling boardwalk over cobble.
|
|
# Every (template, zone_type) pair NOT listed here — and every token within
|
|
# a listed entry not given a weight — falls back to a UNIFORM draw across
|
|
# the template's visual_bundle for that axis. Absence of an entry is not an
|
|
# oversight; it means the template's own visual_bundle already tells the
|
|
# whole story for that function, or (rarely, see note at end) the template
|
|
# has no per-axis choice left to bias.
|
|
#
|
|
# OWNERSHIP. Same co-maintenance split as object_tag_vocabulary.toml
|
|
# (Q-049's resolution: split by concern, not by file) —
|
|
# - Miri owns the CULTURAL/FUNCTIONAL rationale: which zone_type leans
|
|
# toward which already-allowed token, and why (the inline comment above
|
|
# each entry below).
|
|
# - Araminta owns VISUAL-COHERENCE tuning of the bps weights themselves
|
|
# (does the resulting draw distribution actually read well against the
|
|
# shipped art, does a "boost" ever starve a token to invisibility).
|
|
# This pass (T-988 content deliverable) is Miri's cultural-logic
|
|
# authoring pass with initial weights; Araminta's visual-coherence review
|
|
# of the weights is a expected follow-up, same pattern as her parallel
|
|
# `color_register_bands.toml` pass in this same ticket.
|
|
#
|
|
# SCHEMA. Integer basis points (D-010): 10000 = 1.0x the uniform baseline.
|
|
# A weight above 10000 boosts a token above uniform likelihood; a weight
|
|
# below 10000 (never authored as 0 — no hard excludes here, that's what
|
|
# the template's own allow/block already did) suppresses it toward rare.
|
|
# Only tokens already present in the template's own visual_bundle.<axis>
|
|
# may appear (importer-validated, V-TT check) — this file never expands a
|
|
# template's palette, only re-weights within it. Unlisted tokens/axes/zones
|
|
# keep the uniform baseline.
|
|
#
|
|
# [bias.<template_tag>.<zone_type_id>]
|
|
# wall = { <wall_token> = <bps>, ... } # optional per axis
|
|
# roof = { <roof_token> = <bps>, ... }
|
|
# facade = { <facade_token> = <bps>, ... }
|
|
# street = { <street_token> = <bps>, ... }
|
|
# ==========================================================================
|
|
|
|
|
|
# ==========================================================================
|
|
# A. CROSS-CORRIDOR POOL
|
|
# ==========================================================================
|
|
|
|
# mixed_market_vernacular: brick reads load-bearing/durable shopfront vs.
|
|
# rendered's softer domestic finish upstairs.
|
|
[bias.mixed_market_vernacular.commercial_market]
|
|
wall = { brick_wall = 15000 }
|
|
street = { cobble = 14000 }
|
|
|
|
[bias.mixed_market_vernacular.residential_surface]
|
|
wall = { rendered_wall = 14000 }
|
|
street = { paved = 13000 }
|
|
|
|
# speculative_boomtown: freight gets the rawest register (first thing
|
|
# thrown up); the market street is the town's "arrived" storefront.
|
|
[bias.speculative_boomtown.industrial_freight]
|
|
wall = { steel_frame = 16000 }
|
|
roof = { corrugated_roof = 16000 }
|
|
street = { packed_earth = 15000 }
|
|
|
|
[bias.speculative_boomtown.commercial_market]
|
|
wall = { composite_panel = 14000 }
|
|
roof = { flat_roof = 13000 }
|
|
street = { paved = 13000 }
|
|
|
|
# extraction_camp: the works itself is steel; worker housing is poured
|
|
# concrete, not rig-grade steel.
|
|
[bias.extraction_camp.extraction_platform]
|
|
wall = { steel_frame = 18000 }
|
|
|
|
[bias.extraction_camp.residential_surface]
|
|
wall = { concrete_wall = 14000 }
|
|
|
|
# industrial_utilitarian: the production floor is steel/corrugated/heavy-
|
|
# haul; the district's few storefronts keep the older brick frontage.
|
|
[bias.industrial_utilitarian.industrial_manufacturing]
|
|
wall = { steel_frame = 15000 }
|
|
roof = { corrugated_roof = 14000 }
|
|
street = { heavy_haul = 15000 }
|
|
|
|
[bias.industrial_utilitarian.commercial_market]
|
|
wall = { brick_wall = 13000 }
|
|
roof = { flat_roof = 12000 }
|
|
street = { paved = 13000 }
|
|
|
|
# cold_chain_works: the plant is permanent concrete with truck access; the
|
|
# produce-market front is the lighter composite-panel register.
|
|
[bias.cold_chain_works.industrial_processing]
|
|
wall = { concrete_wall = 14000 }
|
|
street = { heavy_haul = 15000 }
|
|
|
|
[bias.cold_chain_works.commercial_market]
|
|
wall = { composite_panel = 13000 }
|
|
street = { paved = 13000 }
|
|
|
|
# precision_arcology: labs get the showcase glass + green roof + clean
|
|
# raised walkways; the production floor behind it stays flat/paved/panel.
|
|
[bias.precision_arcology.research_station]
|
|
roof = { green_roof = 15000 }
|
|
street = { elevated_walkway = 14000 }
|
|
|
|
[bias.precision_arcology.industrial_manufacturing]
|
|
wall = { composite_panel = 13000 }
|
|
roof = { flat_roof = 14000 }
|
|
street = { paved = 13000 }
|
|
|
|
# information_spire: civic seats keep institutional restraint even at the
|
|
# top of the spire; retail/market level gets the reactive screen facade.
|
|
[bias.information_spire.administrative_civil]
|
|
facade = { regular_facade = 15000 }
|
|
street = { elevated_walkway = 13000 }
|
|
|
|
[bias.information_spire.commercial_market]
|
|
facade = { screen_facade = 14000 }
|
|
street = { paved = 13000 }
|
|
|
|
# civic_monumental: the courts get the fullest ceremonial treatment of any
|
|
# building in the catalog; a mere checkpoint in an Administrative district
|
|
# is NOT a courthouse — utilitarian concrete, ornament suppressed hard.
|
|
[bias.civic_monumental.administrative_civil]
|
|
wall = { stone_wall = 16000 }
|
|
roof = { vaulted_roof = 15000 }
|
|
facade = { colonnade = 15000 }
|
|
street = { cobble = 14000 }
|
|
|
|
[bias.civic_monumental.administrative_judicial]
|
|
wall = { stone_wall = 16000 }
|
|
roof = { vaulted_roof = 16000 }
|
|
facade = { colonnade = 16000 }
|
|
street = { cobble = 14000 }
|
|
|
|
[bias.civic_monumental.security_checkpoint]
|
|
wall = { concrete_wall = 15000 }
|
|
roof = { flat_roof = 15000 }
|
|
facade = { ornamental_facade = 6000 }
|
|
|
|
# foreign_quarter: the transplant that draws a crowd gets the grand vaulted/
|
|
# lattice register; the quiet domestic import stays plainer.
|
|
[bias.foreign_quarter.entertainment_venue]
|
|
roof = { vaulted_roof = 15000 }
|
|
facade = { lattice_screen = 14000 }
|
|
|
|
[bias.foreign_quarter.residential_surface]
|
|
roof = { clay_tile_roof = 13000 }
|
|
facade = { screen_facade = 13000 }
|
|
|
|
|
|
# ==========================================================================
|
|
# B. PER-CORRIDOR BASELINE POOLS
|
|
# ==========================================================================
|
|
|
|
# core_cosmopolitan: the old ministries stay stone/ornamental; modern retail
|
|
# layers glass over the old core; ordinary old-town housing stays brick.
|
|
[bias.core_cosmopolitan.administrative_civil]
|
|
wall = { stone_wall = 15000 }
|
|
facade = { ornamental_facade = 14000 }
|
|
|
|
[bias.core_cosmopolitan.commercial_market]
|
|
wall = { glass_curtain_wall = 14000 }
|
|
facade = { regular_facade = 13000 }
|
|
|
|
[bias.core_cosmopolitan.residential_surface]
|
|
wall = { brick_wall = 13000 }
|
|
roof = { pitched_roof = 13000 }
|
|
|
|
# north_anglo_frontier: civic restraint in brick vs. timber farm sheds with
|
|
# corrugated roofs on packed-earth farm tracks.
|
|
[bias.north_anglo_frontier.administrative_civil]
|
|
wall = { brick_wall = 14000 }
|
|
facade = { regular_facade = 14000 }
|
|
street = { paved = 13000 }
|
|
|
|
[bias.north_anglo_frontier.rural_agricultural]
|
|
wall = { timber_wall = 14000 }
|
|
roof = { corrugated_roof = 15000 }
|
|
street = { packed_earth = 15000 }
|
|
|
|
# south_lusophone: the praça-facing arcade for the market vs. the shuttered
|
|
# private house.
|
|
[bias.south_lusophone.commercial_market]
|
|
facade = { arcade_facade = 15000 }
|
|
street = { cobble = 14000 }
|
|
|
|
[bias.south_lusophone.residential_surface]
|
|
facade = { shuttered_facade = 14000 }
|
|
wall = { stucco_wall = 13000 }
|
|
|
|
# west_germanic_ordered: engineered brick precision for manufacturing vs.
|
|
# the plain rendered residential street.
|
|
[bias.west_germanic_ordered.industrial_manufacturing]
|
|
wall = { brick_wall = 14000 }
|
|
street = { paved = 14000 }
|
|
|
|
[bias.west_germanic_ordered.residential_surface]
|
|
wall = { rendered_wall = 13000 }
|
|
street = { cobble = 12000 }
|
|
|
|
# west_compact_cooperative: the civic hall is visibly held in common
|
|
# (colonnade + green roof) vs. plain cooperative housing.
|
|
[bias.west_compact_cooperative.administrative_civil]
|
|
facade = { colonnade = 16000 }
|
|
roof = { green_roof = 14000 }
|
|
|
|
[bias.west_compact_cooperative.residential_surface]
|
|
facade = { regular_facade = 13000 }
|
|
wall = { rendered_wall = 13000 }
|
|
|
|
# east_dense_utilitarian: signage-saturated screen facade at the retail/
|
|
# transit level vs. lattice-screened concrete housing above.
|
|
[bias.east_dense_utilitarian.commercial_market]
|
|
facade = { screen_facade = 15000 }
|
|
street = { elevated_walkway = 14000 }
|
|
|
|
[bias.east_dense_utilitarian.residential_surface]
|
|
facade = { lattice_screen = 14000 }
|
|
wall = { concrete_wall = 13000 }
|
|
street = { paved = 13000 }
|
|
|
|
# frontier_surname_settlement: the founder-family's one formal stone
|
|
# building vs. rammed-earth farm outbuildings on packed earth.
|
|
[bias.frontier_surname_settlement.administrative_civil]
|
|
wall = { stone_wall = 16000 }
|
|
facade = { regular_facade = 14000 }
|
|
street = { cobble = 15000 }
|
|
|
|
[bias.frontier_surname_settlement.rural_agricultural]
|
|
wall = { rammed_earth_wall = 14000 }
|
|
roof = { flat_roof = 13000 }
|
|
street = { packed_earth = 15000 }
|
|
|
|
# frontier_hardscrabble: only the wall axis has any choice here — a
|
|
# checkpoint gets the standardized defensive concrete; a frontier outpost
|
|
# gets the locally hand-built rammed earth.
|
|
[bias.frontier_hardscrabble.security_checkpoint]
|
|
wall = { concrete_wall = 15000 }
|
|
|
|
[bias.frontier_hardscrabble.wilderness_frontier]
|
|
wall = { rammed_earth_wall = 14000 }
|
|
|
|
|
|
# ==========================================================================
|
|
# C. HERITAGE SUB-POOLS
|
|
# ==========================================================================
|
|
|
|
# scottish_highland_vernacular: scattered crofts (pitched roof, packed
|
|
# earth track) vs. the one village market building (tile roof, cobble).
|
|
[bias.scottish_highland_vernacular.residential_dispersed]
|
|
roof = { pitched_roof = 14000 }
|
|
street = { packed_earth = 14000 }
|
|
|
|
[bias.scottish_highland_vernacular.commercial_market]
|
|
roof = { clay_tile_roof = 13000 }
|
|
street = { cobble = 13000 }
|
|
|
|
# west_african_compound: the market-facing arcade vs. the private family
|
|
# compound behind its shuttered rammed-earth wall.
|
|
[bias.west_african_compound.commercial_market]
|
|
facade = { arcade_facade = 15000 }
|
|
street = { cobble = 13000 }
|
|
|
|
[bias.west_african_compound.residential_surface]
|
|
facade = { shuttered_facade = 14000 }
|
|
wall = { rammed_earth_wall = 13000 }
|
|
street = { packed_earth = 14000 }
|
|
|
|
# iberian_hacienda: the estate-office colonnade reads institutional vs. the
|
|
# veranda-fronted domestic hacienda.
|
|
[bias.iberian_hacienda.administrative_civil]
|
|
facade = { colonnade = 15000 }
|
|
wall = { stone_wall = 14000 }
|
|
|
|
[bias.iberian_hacienda.residential_surface]
|
|
facade = { arcade_facade = 14000 }
|
|
wall = { stucco_wall = 13000 }
|
|
|
|
# atlantic_creole_maritime: the working waterfront (timber, boardwalk) vs.
|
|
# inland creole housing (render, cobble).
|
|
[bias.atlantic_creole_maritime.port_fishing]
|
|
wall = { timber_wall = 14000 }
|
|
street = { boardwalk = 15000 }
|
|
|
|
[bias.atlantic_creole_maritime.residential_surface]
|
|
wall = { rendered_wall = 13000 }
|
|
street = { cobble = 13000 }
|
|
|
|
# nordic_timber: the coastal fishing quay pulls boardwalk; inland housing
|
|
# keeps the turf/green-roof domestic register on cobble.
|
|
[bias.nordic_timber.port_fishing]
|
|
street = { boardwalk = 15000 }
|
|
|
|
[bias.nordic_timber.residential_surface]
|
|
roof = { green_roof = 13000 }
|
|
street = { cobble = 13000 }
|
|
|
|
# central_european_blok: civic solidity keeps its ornament in reserve (but
|
|
# still reaches for it) vs. the plain perimeter-block housing stock.
|
|
[bias.central_european_blok.administrative_civil]
|
|
facade = { ornamental_facade = 14000 }
|
|
wall = { brick_wall = 14000 }
|
|
|
|
[bias.central_european_blok.residential_surface]
|
|
facade = { regular_facade = 13000 }
|
|
wall = { rendered_wall = 13000 }
|
|
|
|
# east_asian_temple_enclave: ceremonial reception gets the full vaulted-
|
|
# colonnade register; the ordinary residential quarter around the temple
|
|
# stays in the softer timber/lattice domestic register.
|
|
[bias.east_asian_temple_enclave.diplomatic_elite]
|
|
roof = { vaulted_roof = 16000 }
|
|
facade = { colonnade = 15000 }
|
|
|
|
[bias.east_asian_temple_enclave.residential_surface]
|
|
wall = { timber_wall = 14000 }
|
|
roof = { clay_tile_roof = 13000 }
|
|
facade = { lattice_screen = 13000 }
|
|
street = { cobble = 13000 }
|
|
|
|
# vietnamese_water_village: working water trade backs onto the canal;
|
|
# land-fronting tube-houses face the boardwalk instead.
|
|
[bias.vietnamese_water_village.port_fishing]
|
|
wall = { timber_wall = 14000 }
|
|
street = { canal_way = 15000 }
|
|
|
|
[bias.vietnamese_water_village.rural_aquaculture]
|
|
street = { canal_way = 15000 }
|
|
|
|
[bias.vietnamese_water_village.residential_surface]
|
|
wall = { rendered_wall = 13000 }
|
|
street = { boardwalk = 13000 }
|
|
|
|
# afrikaans_kraal: the werf/farmstead register (render, pitched roof, dirt
|
|
# track) vs. the more formal Cape civic building (stone, tile, cobble).
|
|
[bias.afrikaans_kraal.rural_pastoral]
|
|
wall = { rendered_wall = 14000 }
|
|
roof = { pitched_roof = 14000 }
|
|
street = { packed_earth = 14000 }
|
|
|
|
[bias.afrikaans_kraal.administrative_civil]
|
|
wall = { stone_wall = 14000 }
|
|
roof = { clay_tile_roof = 13000 }
|
|
street = { cobble = 13000 }
|
|
|
|
# arab_oasis_qanat: the shaded souk-adjacent market lane vs. the courtyard
|
|
# house with its wind-tower privacy screen.
|
|
[bias.arab_oasis_qanat.commercial_market]
|
|
wall = { stucco_wall = 14000 }
|
|
facade = { lattice_screen = 14000 }
|
|
street = { cobble = 14000 }
|
|
|
|
[bias.arab_oasis_qanat.residential_surface]
|
|
wall = { rammed_earth_wall = 14000 }
|
|
roof = { terraced_roof = 14000 }
|
|
facade = { screen_facade = 14000 }
|
|
street = { packed_earth = 14000 }
|
|
|
|
|
|
# ==========================================================================
|
|
# NOT BIASED — flagged, not an oversight
|
|
# ==========================================================================
|
|
# generic_baseline is the one template with ZERO degrees of freedom: every
|
|
# axis (wall/roof/facade/street) carries exactly one token in its
|
|
# visual_bundle. There is nothing left to bias — any zone_type drawing this
|
|
# template gets that one token per axis regardless. This is correct: it is
|
|
# the corridor-neutral fallback the draw can always reach (catalog line 57),
|
|
# and a single-token axis is definitionally already "uniform."
|
|
# ==========================================================================
|