Three-way prep session (Jeroen + lead + Tyre) for the map-handler revision: Jeroen's design outline captured verbatim, two clarification rounds, Tyre's governance-delta/implications pass, brief co-written and ratified (zero misrepresentations, zero blocking gaps), signed off by Jeroen with three edit rounds (vocabulary repair tile->gridunit, client cache-store question with SQLite fact base, explicit DQR/ticket deprecation sweep as gated deliverable). Workshop: 5 seats (Dudley/Araminta/Stig/Tyre + Troblum r2), 2 rounds + lead interview extendable at Jeroen's call, round 1 gated on measurements T-1177/T-1178/T-1154/T-1179 (T-1180 non-gating). T-1176 in_progress with gate blocker edges; T-1154 repurposed as measurement (3) and set ready. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
78 lines
4.3 KiB
Markdown
78 lines
4.3 KiB
Markdown
---
|
||
title: "Body Map Viewer — Clarification Rounds"
|
||
description: "Q&A rounds on Jeroen's outline (T-1176 prep session): settled premises vs deferred workshop deliverables"
|
||
type: workshop
|
||
status: active
|
||
workshop: body-map-viewer
|
||
created: 2026-07-25
|
||
---
|
||
|
||
# Clarification Rounds (prep session)
|
||
|
||
Two AskUserQuestion rounds on [jeroen-outline.md](jeroen-outline.md), questions
|
||
merged from the lead and Tyre. Answers verbatim where they carry nuance.
|
||
|
||
## Settled by round A
|
||
|
||
1. **Zoom model — fully stepped.** *"fully stepped zoom, but still cursor centers
|
||
and the edge scrolling also works. Just, we click through the zoom levels on
|
||
scroll. We could investigate a client side morph."* Scroll wheel steps through
|
||
discrete zoom levels; cursor-anchored centering and edge-scroll pan are retained;
|
||
a client-side morph/tween between levels is an investigation item. **Supersedes**
|
||
the continuous-multiplier zoom of the T-1143 ruling (entry-seam ruling 3) — to be
|
||
recorded as a deliberate revision when the workshop's decisions are filed.
|
||
2. **Vocabulary — "tile" repaired, "gridunit" coined.** Tile means the ground-level
|
||
1×1 m unit (D-243) — Jeroen: *"I misused the term several times. Tile should mean
|
||
the ground level 1x1m. I suggest we talk about gridunit (at zoom level) for the
|
||
wrong uses."* Legitimate tile uses in the outline: the "~10px per tile" bottom-out
|
||
(deepest step shows the 1 m tile at ~10 screen px on the smaller axis) and "the
|
||
amount of steps … from largest to visible tile". Everything else (the n×n grid,
|
||
per-pixel records) reads as **gridunits at a zoom level**.
|
||
3. **Data resolution is a tunable, not a constant.** *"I would like pixel resolution
|
||
on the maps, but that may be too much, so maybe we do 5x5 pixels as a display
|
||
unit … Crisper is better, but the computer must not catch fire."* Ideal = 1
|
||
gridunit per screen pixel; acceptable fallback ≈ 1 gridunit per 5×5 px display
|
||
unit (a 4K-class canvas drops from ~8.3M to ~330K gridunits). The knob is decided
|
||
by measurement, not taste.
|
||
4. **Hydrology — deterministic equilibrium.** Lake fill, overflow re-routing,
|
||
gorge carving are a single-pass settled end-state computed from heightmap +
|
||
moisture/climate as a pure function of seed ("over time" = geological backstory).
|
||
Extends today's D8 drainage; no stateful simulation.
|
||
|
||
## Confirmed inline
|
||
|
||
- **Step boundaries = compute-chunk boundaries.** Tyre's reading that zoom-step
|
||
boundaries and deterministic-generation load-partitioning boundaries are intended
|
||
to be the same boundaries stands unchallenged.
|
||
- **Server side is in play** (premise from the outline itself): content
|
||
determination relocates to the server; the server sends what is at a given
|
||
world coordinate at that zoom level. Dudley is core roster.
|
||
- **Performance is a first-class driver** (lazy/late compute, TTL cache,
|
||
"snappy after first calc").
|
||
|
||
## Deferred to the workshop (round B — all four explicitly "workshop deliverable")
|
||
|
||
1. **Named-feature encoding** (rivers/settlements/roads/POIs: dense rasters +
|
||
sparse feature list vs inline identity vs ids-with-lookup). Jeroen's constraint:
|
||
*"best fidelity vs wire contract possible … The information the client needs
|
||
needs to be there."*
|
||
2. **Data-canvas sizing** (canonical fixed size for all clients vs viewport-sized
|
||
capped): *"I see value in both."*
|
||
3. **Cache-tier architecture** (server TTL / client layer cache / disk-persisted
|
||
global tier / predictive precache — which exist, and what "always keep the
|
||
global level" means concretely).
|
||
4. **Map time axis** (climatology vs current sim state for frozen/flooded).
|
||
Jeroen's hint, on record as direction not ruling: *"maybe we put shorter ttl on
|
||
the climate sim state components?"*
|
||
5. **Step count** largest→visible-tile (deferred in the outline itself), coupled to
|
||
compute-chunk partitioning.
|
||
|
||
## Flags carried forward (not questions)
|
||
|
||
- **Cliff/multi-height data model gap** (Tyre): "two heights in the same tile and
|
||
cliff forming" exceeds the one-height-per-cell model (`elev_q` u8); the per-
|
||
gridunit payload needs a sub-unit vertical-structure answer, and a ruling on
|
||
whether cliffs are Phase-4 Atlas content or Phase-5 geometry.
|
||
- **Phase-5 reuse** of the map drawing component (same code path as the future
|
||
in-world viewport or Atlas-only) — scoping decision for the workshop.
|