Files
settled-reach/docs/workshops/tile-derivation-contract/tile-derivation-contract-workshop-brief.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

4.6 KiB

title, description, type, status, workshop, created, decision_refs
title description type status workshop created decision_refs
Workshop Brief: Tile Derivation Contract (Q-101) Resolve Q-101 — how a coarse Layer-1 cell + seed becomes coherent ~1m voxel geometry across ~3 scale jumps, deterministically. The keystone of the 'what's in a tile' question. workshop active tile-derivation-contract 2026-06-07
D-227
D-228

Workshop Brief: Tile Derivation Contract (Q-101)

The question

The generation cascade is built down through Layer 4 (heightmap → drainage → economy → settlement → quarter skeleton + per-building tags). The tile itself (Layer 5) is the one unbuilt layer — and the design stalled at Q-101, the keystone:

How does a coarse, map-scale hint (a ~78 km Layer-1 cell) plus a seed become fine, ~1 m-voxel coherent geometry — deterministically (D-010), without "squaring" (visible grid artifacts at scale boundaries) — across ~3 scale jumps: 78 km cell → ~1 km region → 64 m chunk → 1 m voxel?

The frame is already decided:

  • D-227 — derive-don't-store: subtile(x,y,z) = derive(seed, atlas, pos), recomputed on demand + cached, never persisted; volumetric voxels (1 m) / subvoxels (0.5 m); surface + subsurface. Only tile-mutators are saved.
  • D-228 — a tile is orthogonal derived axes (TerrainMaterial/FloorMaterial/Vegetation/ Water/elevation); named types are display labels; snow/ice are seasonal region state.

What's open: the how — the inter-layer hint+seed→geometry API (Tyre sketched a RegionHint) and a context-driven morphology algorithm family (≥6 distinct algorithms selected by local context: rivers meander in lowlands / incise in mountains; coasts dune / crag / fjord by slope + lithology + glaciation; etc.).

Adjacent open questions to keep in view (not the focus, but the contract must not preclude them): Q-102 (cohesion matrix — seam-free variation), Q-103 (tile-mutator op schema), Q-105 (region seasonal/clock state).

Deliverable: a resolution for Q-101 → a D-record (claim a fresh D in the architecture domain) defining (a) the RegionHint/refinement API across the scale jumps, (b) the morphology algorithm-family selection model, (c) the anti-squaring / cross-scale-coherence approach, within the D-010 determinism + D-227 perf (~<5 ms/chunk) constraints.

Participants

Tyre, Gestalt, Troblum, Miri (+ Qatux documenting)

Questions for participants

Tyre (architect — owns the inter-layer API):

  1. The RegionHint shape: what does each layer hand down the chain (78 km → region → chunk → voxel)? Sketch the refinement-function signature(s) and what state each scale carries.
  2. The anti-"squaring" mechanism — how do adjacent cells/chunks derive coherently at their shared boundary without seams or visible grid? (domain warping? overlapping kernels? boundary blending?) How does this compose with the D-227 by-chunk cache + eviction?
  3. The determinism + perf contract: how does derive(hint, seed, pos) stay pure (D-010) and hit the per-chunk budget?

Gestalt (systems — the morphology family + fun):

  1. Enumerate the ≥6 distinct morphology algorithms and the local context that selects each (slope, lithology, glaciation, drainage, climate). Where are the boundaries between families?
  2. What makes the derived terrain tactically interesting (cover, LOS, chokepoints, verticality) — i.e. the game-feel constraints the contract must serve, not just plausibility.

Troblum (tech second opinion — feasibility/perf):

  1. Algorithmic morphology vs noise fields: which parts of Q-101 are best served by explicit morphology algorithms vs multi-octave/domain-warped noise? Cross-scale coherence techniques.
  2. Stress-test Tyre's API + the <5 ms/chunk + determinism claims; where does it break at scale?

Miri (worldbuilder — believability):

  1. Does the morphology family produce worlds that read true (rivers behave, coasts vary by geology, biomes cohere)? What real-world morphology must the family honor to avoid uncanny terrain?
  2. The D-228 derived-label layer — which named features matter for the wiki/atlas to stay consistent.

Workshop Format

Round 1 — independent positions. Each participant writes their answer to disk at docs/workshops/tile-derivation-contract/{agent}-round1.md. No cross-talk yet.

Round 2 — synthesis. After a user checkpoint, converge: Tyre + Troblum lock the RegionHint API + coherence approach; Gestalt + Miri lock the morphology family + selection model; resolve tensions. Qatux drafts the Q-101 resolution + the new D-record.

(Lean 2-round design pass, not the full 5-round format — Q-101 is one focused contract.)