--- title: "Miri Round 1 — Morphological realism and named-feature stability" workshop: tile-derivation-contract participant: Miri round: 1 date: 2026-06-07 note: "Authored by the Miri agent (read-only tool-set); transcribed to disk by the lead." --- # Miri Round 1: What the Morphology Family Must Honor ## Framing: what "reads true" on an alien world The Reach's bodies are not Earth — different gravity, hydrospheres, tectonic histories — but they obey the same physical laws. "Reads true" ≠ "looks like Earth"; it means terrain behaviour is internally consistent with the body's parameters. A moonless world shows no tidal flats; a tropical ocean world shows no fjords; a volcanic body has immature drainage and lava sheets, not deeply incised river valleys; a GlaciationGrade-0 body has V-shaped fluvial valleys, never glacial U-profiles. The uncanny valley in terrain is one rule broken visibly in one spot — one river flowing uphill destroys a hundred correct ones. ## 1. Morphological laws the derivation must honour - **Drainage consistency (non-negotiable).** Channels descend monotonically; the meander algorithm adds sinuosity but must respect the D8 thalweg direction (D-208) — never raise the channel floor. Tributaries join from upstream; river mouths sit at sea level, no exceptions. - **Lithology → landform.** TerrainMaterial bounds the allowed slope/form: Rock → vertical faces/cliffs; Sand → ≤ angle of repose (~32°), dunes not cliffs; Gravel → braided channels/fans (not single-thread meander); Soil → rolling/floodplain; Wetland → ≤5° flats; Lava → sheets/shield slopes + lava tubes, immature drainage. The family selector must honour this at region scale (no dune algorithm on a rock coast; no incised-gorge family on high-Lava regions). - **Glaciation history → form (globally visible).** Fjord requires GlaciationGrade ≥ 2; U-valleys ≥ 1; moraine ridges ≥ 1; cirques ≥ 2. GlaciationGrade-0 high-relief is knife-edge V-ridges from fluvial erosion, not glacial. Fjord-vs-cliff-coast is a **boolean exclusion** on GlaciationGrade, not a weighted roll. - **Climate → vegetation coherence.** Treeline transitions Forest → Scrub → Barren (no direct Forest→Barren); polar latitudes are Tundra/Barren even at sea level; riparian Thicket/Scrub band 1–3 tiles along every perennial waterway (visual + tactical); natural vegetation boundaries follow contours/moisture, not chunk edges. - **Coast type is multi-factor** (slope × lithology × glaciation × tidal/moon × sediment): fjord / cliff coast / dune strand / tidal flat / delta / lava coast, with the fjord↔cliff gate hard-keyed on GlaciationGrade. ## 2. Named features — the wiki/atlas consistency contract D-228 is right that named types are derived display labels, never stored — which makes **label derivation canonical + stable** load-bearing: the `MorphologyZone` enum→label-string mapping must be frozen at content-authoring time, or every named feature across all bodies shifts at once (bulk lore contradiction). The stable API wiki authors/Atlas depend on is the **zone vocabulary**, not the underlying axis tuple. **Priority-1 lore-anchored bodies (direct wiki→generator contracts):** - **Kallast (Ran)** — "grain fields visible from low orbit" ⇒ alluvial-plain dominance, Soil, very low slope; no mountain ranges/fjords. - **Velen (Van Maanen's Star, D-050)** — temperate-maritime, fog ⇒ CoastalLowland, tidal-flat/dune coast, no cliff coasts/fjords. - **Ross 128 primary** — "predominantly ocean" ⇒ low-elevation island terrain, dune/tidal coast, no cliff coasts/fjords. - **Cygni B** — dense high-iron ⇒ Rock/Lava substrate, volcanic plains, immature drainage; not incised valleys/alluvial plains. - **Grünfeld** — dim flux + decades of soil amendment ⇒ marginal Gravel/Rock substrate, Scrub/Barren natural baseline (settlement layer adds Crop). **Priority-2 type-consistency:** wherever the Atlas shows "fjord"/"mountain pass"/ "river bank"/"delta", the geometry must follow through (deep water by cliff walls; saddle profile + flanking elevation; riparian band + bench; distributary fan). **Proposed canonical MorphologyZone vocabulary (~17):** open ocean, lake, tidal flat, dune strand, cliff coast, fjord, delta, estuarine, alluvial plain, river bank, meander reach, braided plain, valley floor, mountain pass, alpine, volcanic, wetland. Agree these before Phase-4 content authoring resumes (named now, not necessarily implemented). ## 3. Answers to Tyre's questions - **Sub-chunk variation:** no secondary zone field needed on `ChunkContext`. Meander reach (ox-bows) and delta (distributary islands) handle sub-chunk features *internally*; tidal-flat wet/dry is a whole-region state from the Q-105 water height. Tyre's `ChunkContext` as sketched suffices. - **RegionProfile persistence:** store `RegionProfile` (incl. `morphology_zone`) in `BodyWorldState` at the **same cache tier as D-209 feature tags** — the Atlas reads labels at region resolution (~6,000 regions/body) and must not trigger chunk-level derivation. ~tens of KB/body; populate in the D-206 background pass (~50 ms/body order). ## 4. Body-class modulation of RIVER_THRESHOLD The global `RIVER_THRESHOLD = 200` should vary by body class via an integer lookup `(hydrosphere, tectonic_activity, precipitation_class) → threshold`. Crucially, `precipitation_class` (and `GlaciationGrade`) should be **derived from body-level params** (stellar type, orbital radius, hydrosphere), not authored per body — authored values silently drift from the terrain the generator actually produces. ## 5. Setting-voice note (Phase-6, flagged not to foreclose) Keep the label vocabulary as plain English geography terms; the Drifter's-Guide setting voice layers on top in content authoring. Round 2 should not constrain the vocabulary in a way that blocks that later layer. ## 6. What I need in Round 2 - **Gestalt:** the ≥6 families + selectors; confirm the Priority-1 lore bodies are reliably producible, and that GlaciationGrade-0 → no-fjord is a hard pre-selector gate. - **Tyre:** confirm `RegionProfile` lives in `BodyWorldState` at the D-209 tier; confirm `GlaciationGrade`/`precipitation_class` are derived from body params, not authored. - **Troblum:** confirm memory feasibility of ~6,000 `RegionProfile`s/body in the cache.