Files
settled-reach/docs/workshops/tile-derivation-contract/miri-round1.md
T
jpmschweitzerandClaude Opus 4.8 fa8b6ebf08 docs(governance): file D-239 tile derivation contract, resolve Q-101
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>
2026-06-07 12:14:55 +02:00

6.3 KiB
Raw Blame History

title, workshop, participant, round, date, note
title workshop participant round date note
Miri Round 1 — Morphological realism and named-feature stability tile-derivation-contract Miri 1 2026-06-07 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 13 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 RegionProfiles/body in the cache.