--- title: "Workshop Outcomes: Tile Derivation Contract (Q-101)" description: "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." type: workshop status: complete workshop: tile-derivation-contract created: 2026-06-07 decision_refs: [D-239] resolves: [Q-101] participants: [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 (L0–L4 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.