Resolves Q-101 — how a coarse Layer-1 cell + seed becomes coherent ~1m voxel geometry across the scale jumps. The tile-derivation-contract workshop output: - three-carrier refinement chain RegionProfile -> ChunkContext -> VoxelColumn, pure deterministic, no authoring at the derivation layers - district-temperature climate primitive (2x2 km, C, nullable) + separate moisture; everything climatic derives from temperature(+moisture) - scattered, transient freeze/snow model (freshwater +5..-10, sea ice own band, snow moisture-gated; forms cold phase / melts warm phase) - stateless f64-to-voxel domain warp (anti-squaring) - 8 morphology families over a frozen 17-zone vocabulary, gated decision tree - seams prevented at source (gate ordering + build-time matrix); valid geomorphic seams kept sharp + warped Includes workshop brief, round-1 positions, and workshop-outcomes.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
104 lines
6.3 KiB
Markdown
104 lines
6.3 KiB
Markdown
---
|
||
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.
|