Files
settled-reach/docs/workshops/tile-derivation-contract/workshop-outcomes.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.2 KiB
Raw Blame History

title, description, type, status, workshop, created, decision_refs, resolves, participants
title description type status workshop created decision_refs resolves participants
Workshop Outcomes: Tile Derivation Contract (Q-101) Final outcomes of the tile-derivation-contract workshop — resolution of Q-101 via D-239, the coarse→fine tile refinement chain, morphology family, anti-squaring warp, and district-temperature climate primitive. workshop complete tile-derivation-contract 2026-06-07
D-239
Q-101
Tyre
Gestalt
Troblum
Miri
Qatux

Workshop Outcomes: Tile Derivation Contract (Q-101)

Result: Q-101 resolved → D-239 filed (architecture domain, confirmed, 2026-06-07).

The keystone "what's in a tile" question — how a coarse Layer-1 cell + seed becomes coherent ~1 m voxel geometry across ~3 scale jumps — is now contracted. This was the one unbuilt layer of the Phase-4 cascade (L0L4 already exist).

What was decided (D-239 in brief)

  1. Three-carrier refinement chain. RegionProfile (~1 km) → ChunkContext (64 m) → VoxelColumn (1 m). Each a pure deterministic function of (seed, atlas, body-params, position) per D-227. Each scale boundary is its own derivation.

  2. No authoring at the derivation layers, ever. Zero per-body override hooks. All gating params (RIVER_THRESHOLD → derived per-body-class, not the global 200; tectonic_class; GlaciationGrade; precipitation_class) derive from body params. Lore bodies (Kallast, Velen, Cygni B) are honoured by setting params and serve as validation cases — fix params, never patch the derivation.

  3. District temperature is the climate primitive. A scalar °C per 2×2 km district, nullable (no atmosphere → null → no climate branch; airless surface ice is geology). Derived from sun (luminosity + insolation), planet (latitude + elevation lapse + orbital/axial phase = season, day-phase = diurnal), atmosphere (greenhouse → base, heat-retention → diurnal-swing amplitude). Moisture is a separate primitive. Everything climatic — precipitation, vegetation/treeline, glaciation, the seasonal/clock state (Q-105) — derives from temperature (+ moisture). Formalises D-210's temperature proxy.

  4. Scattered, transient freeze/snow model. Ice/snow is a band with coherent spatial scatter, not a hard temp<0 contour: freshwater (lakes/rivers) +5 → 10 °C district mean (the +5 is night-frost reaching the coldest tiles); sea ice its own lower/wider band (≈ 2 onset, pack-ice pattern); snow (land) the same, gated on moisture. Transient in the marginal band — forms in the cold phase (night/season), melts in the warm phase → time-of-day passability shifts. Forward contract to Q-105.

  5. Anti-"squaring" warp. A stateless, hash-based position-keyed domain-warp; f64 sub-metre precision through to the final voxel coordinate, then truncate to the integer voxel address (a cast, IEEE-754-deterministic). ±8 m range makes FMA ULP variance harmless. Position math, not a structural decision — D-010 integer discipline preserved.

  6. 8 morphology families via a gated decision tree over integer RegionProfile inputs: LavaField · FjordWall · CliffCoast · BraidedDelta · DuneStrand · IncisedGorge · MeanderReach · AlluvialPlain (fallback). Hard gates: fjord ≥ GlaciationGrade 2; LavaField = Volcanic; lithology bounds slope/form.

  7. Frozen 17-zone MorphologyZone vocabulary. Freeze point = the Rust enum; changes need a D-record amendment (classifier tuning stays free). Four zones (tidal flat, estuarine, alpine, wetland) are derived sub-classifications, not generator families.

  8. Seams — prevent incompatible, allow valid (never patch). Decision-tree gate ordering

    • a build-time compatibility-matrix invariant blocks incompatible adjacencies (e.g. MeanderReach↔Volcanic). Valid geomorphic seams (cliff↔fjord, lithology faults) are kept sharp (real geology is sharp), made organic by the warp — no feathering.
  9. Believability laws + game-feel constraints are binding (drainage monotonicity, lithology→landform, glaciation→form, climate→vegetation; ≥1 tactical point/chunk, cover ≠ concealment, chokepoint widths, real seasonal passability via ElevationDelta↔Q-105).

Process notes

  • 2-round lean format (independent positions → lead-interviewed synthesis), not the full 5-round workshop. Round-1 positions: tyre-round1.md, gestalt-round1.md, troblum-round1.md, miri-round1.md.
  • The four core calls (seams, body-params-fully-derived, vocabulary lock, warp precision) were made by the human via AskUserQuestion. The climate model (temperature primitive, separate moisture, the three-sibling scattered freeze, day/night swing, transient ice/snow) was a human-driven design pivot during synthesis.
  • An adversarial verification pass (the same four perspectives) caught ~10 issues, all folded into the final D-239: the "continuous→continuous" seam argument was false (boolean gates are discontinuities) → rewritten to gate-ordering + matrix; warp determinism gaps (FMA / statelessness / truncate-not-compare); "Block-or-higher" → "Region-or-higher"; D-209 tier → D-203; missing LavaField tectonic gate; seasonal regained mechanical teeth; the 17-zones-vs-8-families gap closed; believability laws inlined; "frozen" given a real enforcement mechanism.

Open siblings (left for later, contract does not preclude them)

  • Q-102 — cohesion matrix: effectively is the D-239 warp; can be closed against it or folded in when the material-scatter layer is built.
  • Q-103 — tile-mutator op schema: open, needed at the save system (Phase 5+).
  • Q-105 — region seasonal/clock state: D-239's temperature(time) + ElevationDelta calibration is the forward contract to it.

Process friction captured

  • Team mode is broken in clide — see docs/briefings/clide-team-mode-friction.md. Teammates ran in-process (no pane), the Team Chat view stayed inert, no clide team verb. The workshop ran as background Agent subagents instead. Hand-off material for the clide team.
  • The miri agent type is read-only (no Write/Bash) — the lead transcribed miri-round1.md to disk.