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>
This commit is contained in:
2026-07-04 20:30:33 +02:00
co-authored by Claude Opus 4.8
parent 388168eef5
commit 5fb34675eb
7 changed files with 616 additions and 33 deletions
+131 -9
View File
@@ -107,38 +107,160 @@ water = "Dry"
weight = 15
affinity = "any"
[[grassland]]
name = "tussock"
# 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]]
name = "scrub island"
[[grassland_temperate]]
name = "drum-root knot"
terrain = "Soil"
vegetation = "Scrub"
water = "Dry"
weight = 18
affinity = "dry"
[[grassland]]
name = "wildflower"
[[grassland_temperate]]
name = "wrack-bloom"
terrain = "Soil"
vegetation = "Meadow"
water = "Dry"
weight = 17
affinity = "dry"
[[grassland]]
name = "dry wash"
terrain = "Gravel"
[[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]]