Files
jpmschweitzerandClaude Opus 4.8 5fb34675eb feat(simulation): grassland biome-awareness + alien-ecology vocab (T-1085 workstream 4, D-246)
The mosaic palette gains a climate-biome dimension for the Grassland surface-class:
savanna / temperate / boreal / tundra now read distinctly rather than collapsing to
one biome-blind palette (the D-246 biome-awareness fix).

- atlas/mosaic.rs: ClimateBiome (from temperature_c + moisture_q) + four biome-keyed
  Grassland palettes; palette(class, biome). Savanna carries scattered Forest copses,
  tundra carries lichen + sparse bare ground and no forest. §8-safe (veg + water only).
- atlas/voxel.rs: derive the biome; a cold barren district (tundra/boreal) now takes
  the sparse mosaic rather than staying blank — worlds that read "0 vegetated / blank"
  now read structured-sparse (D-245 climate-appropriateness). vegetated_districts
  8→20 and 0→39 on the cold validation bodies.
- data/mosaic_constants.toml: biome-keyed grassland mirror.
- docs/design/alien-ecology-vocabulary.md: Miri's full biome × register naming layer
  (the cane/vane/wrack/husk/drum-root native lexicon + Earth-register names) — the
  derived-label source for the palette and Phase-5 rendering.

Believability golden regenerated. Full server suite green. Forest biomes and the
introduced-Earth register are the noted continuation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 20:30:33 +02:00

377 lines
7.0 KiB
TOML

# Intra-class micro-habitat mosaic palettes — D-246, T-1084.
#
# SOURCE-CANONICAL MIRROR. The authoritative runtime source today is the embedded
# `atlas::mosaic` const tables; this file mirrors them and is the file to edit when
# tuning weights (the same embedded-default + TOML-mirror pattern as
# `climate_constants.toml`; runtime loading lands with production tuning). Keep the
# two in sync by hand until then.
#
# Each entry is a micro-habitat = a distinct D-228 axis-triple the mosaic can paint,
# plus its relative `weight` and moisture `affinity` (any | wet | dry). Display names
# are derived labels (D-228) — scree/talus and outcrop/ledge collapse to one triple.
#
# This is the TEMPERATE / NATIVE baseline register. Biome variants (savanna, tundra,
# boreal) and the introduced-Earth register extend the table via T-1085, before
# generation (a later addition re-rolls affected voxels — D-246 determinism rule).
#
# v1 (T-1084) applies only the Wetland / Forest / Grassland palettes, and only their
# vegetation + water — terrain material is left to the family generator so the D-239
# §8 lithology law is untouched. The Sand / Rock / Gravel / Lava palettes below are
# authored for the §8-aware material follow-up.
[[wetland]]
name = "clearing"
terrain = "Wetland"
vegetation = "Barren"
water = "Dry"
weight = 15
affinity = "dry"
[[wetland]]
name = "copse"
terrain = "Wetland"
vegetation = "Forest"
water = "Dry"
weight = 10
affinity = "dry"
[[wetland]]
name = "creek"
terrain = "Wetland"
vegetation = "Barren"
water = "Shallow"
weight = 10
affinity = "wet"
[[wetland]]
name = "meadow"
terrain = "Wetland"
vegetation = "Meadow"
water = "Dry"
weight = 15
affinity = "dry"
[[wetland]]
name = "bog"
terrain = "Wetland"
vegetation = "Scrub"
water = "Shallow"
weight = 12
affinity = "wet"
[[wetland]]
name = "marsh"
terrain = "Wetland"
vegetation = "Grass"
water = "Shallow"
weight = 12
affinity = "wet"
[[forest]]
name = "dense stand"
terrain = "Soil"
vegetation = "Forest"
water = "Dry"
weight = 40
affinity = "any"
[[forest]]
name = "glade"
terrain = "Soil"
vegetation = "Grass"
water = "Dry"
weight = 15
affinity = "dry"
[[forest]]
name = "deadfall"
terrain = "Soil"
vegetation = "Deadfall"
water = "Dry"
weight = 10
affinity = "any"
[[forest]]
name = "brook"
terrain = "Soil"
vegetation = "Thicket"
water = "Shallow"
weight = 10
affinity = "wet"
[[forest]]
name = "fern undergrowth"
terrain = "Soil"
vegetation = "Thicket"
water = "Dry"
weight = 15
affinity = "any"
# Grassland is BIOME-KEYED (T-1085, D-246): the ClimateBiome derived from the district's
# temperature_c + moisture_q selects savanna / temperate / boreal / tundra, so a
# grassland reads distinctly per climate rather than as one biome-blind palette. §8-safe
# (vegetation + water; terrain stays Soil in v1). Names per
# docs/design/alien-ecology-vocabulary.md.
[[grassland_temperate]]
name = "cane-tassel sweep"
terrain = "Soil"
vegetation = "Grass"
water = "Dry"
weight = 40
affinity = "any"
[[grassland_temperate]]
name = "drum-root knot"
terrain = "Soil"
vegetation = "Scrub"
water = "Dry"
weight = 18
affinity = "dry"
[[grassland_temperate]]
name = "wrack-bloom"
terrain = "Soil"
vegetation = "Meadow"
water = "Dry"
weight = 17
affinity = "dry"
[[grassland_temperate]]
name = "husk-line seep"
terrain = "Soil"
vegetation = "Barren"
water = "Dry"
weight = 10
affinity = "wet"
# Savanna: scattered Forest copses in a grass matrix — the vane-crown copse is the
# clearest distinction from temperate grassland.
[[grassland_savanna]]
name = "cane-tassel sweep"
terrain = "Soil"
vegetation = "Grass"
water = "Dry"
weight = 38
affinity = "any"
[[grassland_savanna]]
name = "vane-crown copse"
terrain = "Soil"
vegetation = "Forest"
water = "Dry"
weight = 12
affinity = "dry"
[[grassland_savanna]]
name = "husk-thorn scrub"
terrain = "Soil"
vegetation = "Scrub"
water = "Dry"
weight = 18
affinity = "dry"
[[grassland_savanna]]
name = "husk-pan waterhole"
terrain = "Soil"
vegetation = "Grass"
water = "Shallow"
weight = 10
affinity = "wet"
[[grassland_savanna]]
name = "drum-mound flat"
terrain = "Soil"
vegetation = "Barren"
water = "Dry"
weight = 12
affinity = "dry"
# Boreal grassland: cooler, sparser — more scrub, a lichen fraction, no meadow.
[[grassland_boreal]]
name = "cane-tassel sweep"
terrain = "Soil"
vegetation = "Grass"
water = "Dry"
weight = 30
affinity = "any"
[[grassland_boreal]]
name = "wrack-scrub"
terrain = "Soil"
vegetation = "Scrub"
water = "Dry"
weight = 25
affinity = "dry"
[[grassland_boreal]]
name = "husk-line seep"
terrain = "Soil"
vegetation = "Grass"
water = "Shallow"
weight = 10
affinity = "wet"
[[grassland_boreal]]
name = "wrack-lichen mat"
terrain = "Soil"
vegetation = "Lichen"
water = "Dry"
weight = 12
affinity = "any"
[[grassland_boreal]]
name = "cold scald"
terrain = "Soil"
vegetation = "Barren"
water = "Dry"
weight = 15
affinity = "dry"
# Tundra: sparse and cold — scrub, lichen, bare patterned ground, NO forest.
[[grassland_tundra]]
name = "husk-heath brake"
terrain = "Soil"
vegetation = "Scrub"
water = "Dry"
weight = 26
affinity = "any"
[[grassland_tundra]]
name = "wrack-lichen mat"
terrain = "Soil"
vegetation = "Lichen"
water = "Dry"
weight = 24
affinity = "any"
[[grassland_tundra]]
name = "thermokarst husk-pool"
terrain = "Soil"
vegetation = "Grass"
water = "Shallow"
weight = 10
affinity = "wet"
[[grassland_tundra]]
name = "lichen-scald flat"
terrain = "Soil"
vegetation = "Barren"
water = "Dry"
weight = 30
affinity = "dry"
# ── Follow-up (§8-aware material pass): Sand / Rock / Gravel / Lava ──────────────
[[sand]]
name = "dune crest"
terrain = "Sand"
vegetation = "Barren"
water = "Dry"
weight = 25
affinity = "dry"
[[sand]]
name = "slack"
terrain = "Sand"
vegetation = "Grass"
water = "Dry"
weight = 15
affinity = "wet"
[[sand]]
name = "hardpan"
terrain = "Hardpan"
vegetation = "Barren"
water = "Dry"
weight = 20
affinity = "dry"
[[sand]]
name = "oasis"
terrain = "Sand"
vegetation = "Forest"
water = "Shallow"
weight = 5
affinity = "wet"
[[sand]]
name = "scrub clump"
terrain = "Sand"
vegetation = "Scrub"
water = "Dry"
weight = 15
affinity = "any"
[[rock]]
name = "outcrop"
terrain = "Rock"
vegetation = "Barren"
water = "Dry"
weight = 45
affinity = "any"
[[rock]]
name = "scree"
terrain = "Scree"
vegetation = "Barren"
water = "Dry"
weight = 30
affinity = "any"
[[rock]]
name = "lichen"
terrain = "Rock"
vegetation = "Lichen"
water = "Dry"
weight = 25
affinity = "any"
[[gravel]]
name = "bar"
terrain = "Gravel"
vegetation = "Barren"
water = "Dry"
weight = 45
affinity = "any"
[[gravel]]
name = "active channel"
terrain = "Gravel"
vegetation = "Barren"
water = "Shallow"
weight = 25
affinity = "wet"
[[gravel]]
name = "vegetated island"
terrain = "Gravel"
vegetation = "Scrub"
water = "Dry"
weight = 30
affinity = "dry"
[[lava]]
name = "fresh sheet"
terrain = "Lava"
vegetation = "Barren"
water = "Dry"
weight = 50
affinity = "any"
[[lava]]
name = "weathered crust"
terrain = "Lava"
vegetation = "Lichen"
water = "Dry"
weight = 30
affinity = "any"
[[lava]]
name = "pioneer scrub"
terrain = "Lava"
vegetation = "Scrub"
water = "Dry"
weight = 20
affinity = "dry"