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>
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 |
|
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):
- The
RegionHintshape: 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. - 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?
- 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):
- Enumerate the ≥6 distinct morphology algorithms and the local context that selects each (slope, lithology, glaciation, drainage, climate). Where are the boundaries between families?
- 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):
- 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.
- Stress-test Tyre's API + the <5 ms/chunk + determinism claims; where does it break at scale?
Miri (worldbuilder — believability):
- 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?
- 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.)