Files
settled-reach/server/data/mosaic_constants.toml
T
jpmschweitzerandClaude Opus 4.8 31b553a3b3 feat(simulation): intra-class micro-habitat mosaic v1 — vegetation/water texture (T-1084, D-246)
Sub-chunk mosaic that modulates the D-228 axes into a spatially-coherent,
relief/moisture-conditioned mosaic of micro-habitats within a terrain class —
the fix for the aliveness probe's uniform "Wetland 100%".

- seed.rs: SeedDomain::VoxelMosaic = 12 (append-only; pinned-discriminant guard)
- voxel.rs: five new D-228 axis values (Vegetation::{Meadow,Deadfall,Lichen},
  TerrainMaterial::{Hardpan,Scree}); the per-family-gated mosaic pass
- detail_scatter.rs: voxel_mosaic() selection field (~8-64 m band)
- atlas/mosaic.rs: surface-class palette + integer-basis-point weighted selection
  with moisture-affinity conditioning; temperate/native baseline palettes
- data/mosaic_constants.toml: source-canonical palette mirror
- believability.rs: micro_habitat_distinct metric + D-245 intra-class criterion

v1 scope (D-246-faithful): modulates vegetation + water only, in the vegetated
classes (Wetland/Forest/Grassland), so the D-239 §8 lithology law is untouched;
water is gated on the T-1040 has_active_channel hydrology rule. Material variants
(hardpan/scree) and the extreme classes are a §8-aware follow-up; the biome-aware
palette variants (T-1085 vocab) extend the baseline before generation.

Goldens regenerated (believability + derivation). Full server suite green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 10:42:20 +02:00

255 lines
4.5 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]]
name = "tussock"
terrain = "Soil"
vegetation = "Grass"
water = "Dry"
weight = 40
affinity = "any"
[[grassland]]
name = "scrub island"
terrain = "Soil"
vegetation = "Scrub"
water = "Dry"
weight = 18
affinity = "dry"
[[grassland]]
name = "wildflower"
terrain = "Soil"
vegetation = "Meadow"
water = "Dry"
weight = 17
affinity = "dry"
[[grassland]]
name = "dry wash"
terrain = "Gravel"
vegetation = "Barren"
water = "Dry"
weight = 10
affinity = "wet"
# ── 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"