Files
settled-reach/docs/workshops/body-map-viewer/workshop-outcomes.md
T
jpmschweitzerandClaude Fable 5 29c22cb728 docs(meta): body-map-viewer workshop — rounds, measurements, outcomes, as-built briefing
The complete workshop record: four round-1 positions, five round-2 syntheses
(incl. Troblum's adversarial pass with addendum + final scorecard — all seven
findings resolved), both lead interviews, Qatux's round notes and the 8-section
workshop-outcomes.md (the lakes message-crossing documented as process
history), measurement ⑥ (set_pixel/c1) + the population-survey and chunk/S2
addenda in the measurement docs, the brief's appendix updated through ⑥, and
architecture-briefing-final.md — Jeroen's outline written back as-built
(six-level ladder, lakes, ~9MB resident global tier). README row: Complete.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 10:57:45 +02:00

27 KiB
Raw Blame History

title, description, type, status, workshop, agent, round, created, decision_refs
title description type status workshop agent round created decision_refs
Workshop Outcomes Final outcomes: D-255 (new) + 12 amendments, the six-level Atlas step ladder (Global opener + Region-District-Quarter-Block-Chunk), the tagged-envelope wire contract, cache-tier architecture, the lakes/hydrology sourcing fix, and the full deprecation sweep. workshop archived body-map-viewer qatux 0 2026-07-25
D-010
D-166
D-169
D-170
D-192
D-223
D-225
D-226
D-227
D-228
D-239
D-243
D-253
D-255

Body Map Viewer Workshop — Outcomes

Workshop: Body Map Viewer (the stepped map handler) Dates: 2026-07-25 (round 1) 2026-07-23 (final ratification and filing) Rounds: 2 core rounds + two lead interviews, extended with a post-ratification addendum round (the lakes/hydrology gap Jeroen raised after reviewing the as-built briefing) — the workshop was kept open across all three review passes rather than closed on partial convergence, per standing team practice. Participants: Dudley, Araminta, Stig, Tyre, Troblum (round 2 + adversarial), Qatux (documenting), SI (reviewing ticket outputs) Decisions produced: D-255 (new) + 12 amendments (D-166, D-192, D-225, D-226 ×4, D-227 ×4, D-243, river-courses-t1170.md note) Compiled by: Qatux


0. Workshop trace

Stage Document Status
Brief body-map-viewer-workshop-brief.md complete
Prep: outline, clarifications, implications jeroen-outline.md, clarifications.md, tyre-implications.md complete
Pre-workshop measurements ①–⑤ measurements/t1177-hydrology.md, t1178-t1154-derive-bench.md, t1179-wire-table.md, t1180-imagetexture.md complete
Round 1 positions dudley/araminta/stig/tyre-round1.md complete
Round 1 synthesis round-1-notes.md complete
Lead interview 1 lead-interview-1.md complete
Measurement ⑥ (post-interview-1) measurements/t-setpixel-c1.md complete
Hydrology population survey (post-interview-1) measurements/t1177-hydrology.md §POPULATION SURVEY complete
Round 2 synthesis dudley/araminta/stig/tyre-round2.md complete
Round 2 adversarial pass troblum-round2.md (incl. ADDENDUM + FINAL UPDATE) complete
Round 2 synthesis notes round-2-notes.md complete
Lead interview 2 (ladder-bottom narrowing, seed-chaining ruling) rulings folded into dudley-interview2-response.md, tyre-round2.md §(a.8b)/§(a.10) complete
Chunk-64m bench, Option D, S2 courses-density bench, S4 TTL formula dudley-interview2-response.md §14 complete
Post-ratification review (Global/Region rung split, lakes gap) dudley-interview2-response.md POST-RATIFICATION ADDENDUM + LAKES CONVERGENCE complete
Lakes convergence (message-crossing + resolution) araminta-round2.md §(e), dudley-interview2-response.md §5/LAKES CONVERGENCE, tyre-round2.md §(a.11) complete
Final governance package tyre-round2.md (final, §(a)(d)) complete
As-built plain-language briefing architecture-briefing-final.md complete
Filing (D-record + 12 amendments) this document §2 complete — D-255 claimed
Deprecation sweep / Clerk audit this document §5 complete
Ticket plan this document §6 complete (12 DQR + 10 ticket dispositions, drafted by Tyre, SI review per standing workflow)
This document, final complete

1. Interview rulings — the full sequence

Three review passes ruled on this workshop's open items, in order. Each is recorded here as process history — the corrections across passes are not noise; they are exactly the kind of thing this document exists to make visible rather than silently overwrite.

Interview 1 (post round 1)

Full record: lead-interview-1.md. Ratified by silence: tagged-envelope migration triggered; viewport-sized canvases below the canonical tier; the T-1177 cliff representation (elevation + channel_depth

  • cliff_edge); cache composition (server global tier + client FileAccess dir, compose not compete). Ruled: step ladder deferred to round 2's concrete tables; map time axis = current-state-via-TTL-split with the staleness-vs- storage eviction-axis distinction; cliffs sparse + Phase-4 scope; round 2 GO with measurement ⑥ run in parallel.

Interview 2 (post round 2) — two rulings that reworked the round-2 package

  1. Ladder bottom narrowed from tile/voxel (1 m) to chunk (64 m). Jeroen, verbatim: "the actual tile level rung seems unusable. maybe replace with 64?" — reasoning: a full-screen Atlas view at 10 px/tile shows ~192×108 m of ground, which is in-world viewport content (Phase 5), not map content. This is a deliberate narrowing of the D-226(d) floor's interview-1 opening, not a reversal of it — block and chunk remain legal Atlas rungs under the viewport-sized carve-out; tile/voxel re-close, exactly as item (d) originally required, now scoped to the tier where the opening was never meant to reach. Dudley benched the never-measured chunk rung in response (dudley-interview2-response.md §1) and built Option D — the adopted ladder.
  2. Seed-chaining ruled the OPPOSITE of Dudley's round-2 default. Jeroen answered NO to Dudley's round-2 "independent re-derivation, coarser rung called only as a nested function" ruling — he meant the finer step genuinely consumes the coarser step's resolved output. Reconciled without weakening D-227 via the cache-accelerated pure function model (§2 below; tyre-round2.md §(a.10)).

Both rulings triggered new measurement work (the chunk-64m bench, the S2 courses-density bench at chunk/block, the S4 TTL-cadence formula) rather than being filed as bare architectural pronouncements — consistent with this workshop's standing discipline of ruling from real tables, not principles.

Post-ratification review (after the as-built briefing)

Jeroen reviewed architecture-briefing-final.md (the plain-language as-built writeback he requested) and raised two further items:

  1. Global-tier byte math was wrong. Round 2's ~174 MB figure had priced the canonical always-kept tier as a full District-spacing canvas (8.3M cells/body). Jeroen's own review caught that the opener is a variable, region-grid canvas (one gridunit per region, not per District cell) — correcting this produced a rung-identity split: rung 0 = Global (the variable, always-kept opener) and rung 1 = Region (the largest fixed, evictable rung) — previously conflated as one "step 0 = Region" tier. Recomputed against the real 267-body population: ~8.85 MB PNG-encoded, all bodies (not ~174 MB — roughly 20× smaller).
  2. The lakes gap. Jeroen's direct question: "when filling basins to find an overflow, is that body flagged as lake or flooded or something? do we draw lakes on the map?" This surfaced a real gap (§4 below) and produced a genuine message-crossing between Araminta and Dudley, resolved convergently — documented in full as process history in §4.

2. Governance record — filing package (final)

D-255 claimed (architecture domain). One new record + twelve amendment texts, all record-ready as drafted in tyre-round2.md §(a).

# Record Type Source text
1 D-255 — Body-map-viewer stepped render architecture NEW tyre-round2.md §(a.0)
2 D-166 corollary — per-step repoint (owns between-step magnification) AMEND §(a.1)
3 D-226 T-1143 ruling 2/3 — tagged-envelope + continuous-zoom superseded AMEND §(a.2)
4 select_rung / rung model — replaced by the discrete step index AMEND §(a.3)
5 D-243 — gridunit vocabulary entry (additive; Atlas floor = chunk) AMEND §(a.4)
6 D-226 T-1124 §2 windowed-family ceiling — tagged-envelope triggered, re-scoped AMEND §(a.5)
7 D-227 — map-time TTL-split + staleness/storage eviction-axis distinction AMEND §(a.6)
8 river-courses-t1170.md carrier rule + cliff sparse-list AMEND (note) §(a.7)
9 D-226(d) whole-body prohibition — per-request framing + client-cache accumulation cap AMEND §(a.8)
10 D-226 T-1143 ruling 1 — floor narrowed to chunk (tile/voxel re-close) AMEND §(a.8b)
11 D-227/D-192 — persistent client-cache schema/version tag AMEND §(a.9)
12 D-227 — seed-chaining as "cache-accelerated pure function" AMEND §(a.10)
13 D-227 — lakes sourced from settled hydrology; endorheic cue via outflow-course presence AMEND §(a.11)

Records confirmed surviving untouched (stated explicitly per Tyre's list, so the Clerk audit does not over-rewrite them): D-010 (four principles — the server relocation reinforces principle 4); D-166 cascade + phase gating (still Phase-4 Atlas); D-169/D-170 (implant UI, unchanged); D-223 (atlas_city_names, unchanged); D-239 (the frozen 17-zone morphology + vegetation/glaciation vocabulary — the lakes fix explicitly does not touch it, reusing the existing MorphologyZone::Lake discriminant and routing the endorheic cue through courses precisely to avoid an 18th zone).

D-record text: the full, final amendment text for every item above is authoritative in tyre-round2.md §(a.0)(a.11) — this table is an index with citations, not a duplicate copy, per the project's single-source-of-truth convention for governance text (governance/README.md). Sync into governance/decisions/architecture.md via pql decisions claim D architecture "Body-map-viewer stepped render architecture" (already reserved as D-255) followed by pql decisions sync.


3. Architecture summary (as-built)

The full plain-language writeback is architecture-briefing-final.md — Jeroen's own outline, rewritten in the same style and brevity to reflect what actually shipped. Condensed here:

  • Three locked premises, unchanged since the brief: server-side content determination (per-gridunit data canvases per zoom step), client as a pure map-art function (colorize/style/annotate, never invent geometry), stepped zoom (discrete rungs, cursor-anchored, no continuous zoom-scaled canvas).

  • The Atlas step ladder — six levels, final (Option D):

    Rung Level Spacing Canvas Cost (parallel, measured)
    0 Global (opener, canonical, always-kept) 1 gridunit/region (variable, ~205 km) body's own region grid, ~18K cells avg ~1621 ms/body; ~8.85 MB PNG all 267 bodies
    1 Region 204.8 km 3840×2160 fixed 1,827 ms
    2 District 2,048 m 3840×2160 fixed 1,827 ms
    3 Quarter 512 m 3840×2160 fixed ~1,827 ms (same-band)
    4 Block 128 m 3840×2160 fixed ~1,827 ms (measured)
    5 (deepest) Chunk 64 m 3840×2160 fixed 1,7241,733 ms (measured)

    Bottom-out rule: 1 screen px per 64 m gridunit, no magnification margin (the old 10×-per-tile legibility margin does not apply — a chunk-scale feature is already legible at 1×1). Tile/voxel (1 m) is Phase-5 in-world content, never Atlas-mapped. Every fixed row is directly measured; rung 0 is measured too (Dudley's bmv_global_tier_bench.rs).

  • Wire: tagged-envelope carrier (StepCanvasRequest/StepCanvasResponse, a sixth discriminated Inbound variant extending an already-five-times- proven pattern in server/src/bridge/mod.rs). 8 dense fields (6 static + 2 sim-state) PNG-per-field, 2 sparse lists (courses, cliffs) MessagePack-native. No water field — lakes ride the existing MorphologyZone::Lake (§4).

  • Cache: three tiers — client in-memory LRU → client disk FileAccess (two independent sweep axes: staleness for sim-state, storage-budget for everything else) → server (Tier 1 rung-0 resident resource, ~8.85 MB all bodies, keep-always; Tier 2 sub-global geometry, storage-evicted on time-since-last-visit). Sim-state TTL bound to 1× the field's own fastest driving sim-clock bucket (tidal-or-seasonal for flooded, seasonal for glaciation) — a formula, not a fixed number, confirmed cost-affordable at 1× with no multiplier needed.

  • Client render: RTT terrain layer, CPU Image.set_pixel colorize (confirmed cheap at realistic canvas sizes by measurement ⑥, ~78 ns/cell flat) + unscaled screen-space annotation layer, replacing _canvas.scale and the entire _zs()/_zs_stroke()/_zs_ring_radius() compensation family by construction.

  • Seed-chaining: cache-accelerated pure function — a finer rung's derivation may read a resident coarser rung's continuous baseline as an optimization (falling back to fresh derivation when not resident); the ①②③ benched costs remain valid as the cache-cold worst-case ceiling. A mandatory cache-hit == cache-miss byte-identical determinism test is the correctness gate.

  • Lakes: sourced from HydrologyResult's settled equilibrium, riding the existing MorphologyZone::Lake — zero new wire fields, zero vocabulary change (§4).


4. Process history — the lakes arc (documented in full, not condensed away)

This is recorded at length deliberately: it is a clean example of the workshop's own discipline working correctly under a genuine, in-flight message-crossing, and the coordinator specifically asked that it be preserved as process history rather than silently resolved into a single final answer.

The catch. After reviewing the as-built briefing, Jeroen asked directly whether basin-filling from settled hydrology gets flagged as a lake on the map at all. Checked against the real code (not assumed): the gap was more specific than a missing field. MorphologyZone::Lake (discriminant 1) already exists in the frozen 17-zone vocabulary — the gap was a missing data source. Today's Lake emission comes from a crude heightmap threshold (ocean_fraction_q >= 60, a bilinear sample of the raw below-sea-level mask) with zero connection to HydrologyResult's settled basins — a gap the code's own comment already flagged as known, just never connected to the solver this workshop's own measurement ① is about.

The crossing. Dudley answered the coordinator's routed lake-schema question with a proposal for a new water: Vec<u8> dense field ({None, Lake, Sea}), reasoning from first principles about wire cost and vocabulary freezing. Independently, in flight, Araminta specced her own water: Vec<u8> field with the same shape and posed three questions back to Dudley (endorheic-carrier sizing, pipeline slot, struct reconciliation). Dudley answered those three questions fully (visible in his document as §13 under "LAKES CONVERGENCE," including a full crossover-cost bench comparing a sparse Vec<LakeBasin> list against the dense water field across the real 267-body basin-size distribution).

The resolution. Later the same day, both Dudley and Araminta independently discovered the better answer and converged on it without either conceding to the other: fold lake/sea classification into the existing MorphologyZone::Lake discriminant instead of adding any new field at all. Araminta reached this by re-verifying Dudley's own code-read directly against source (district_profile.rs:556-565, generator.rs:1198- 1223, features.rs:104-105) and recognizing her own original objection (that folding into morphology would require widening a frozen vocabulary) was built on a false premise — the vocabulary entry already existed; only the data source was missing. Dudley reached the same place from his own post-ratification code investigation. Both documents mark the earlier water-field material explicitly as SUPERSEDED-BY-CROSSING rather than silently deleting it — Dudley's document states plainly: "it isn't one of us conceding to the other, it's convergent verification."

What survived the crossing unmodified: the pipeline/projection ruling (sample HydrologyResult's continuous filled_scaled field bilinearly per rung — never project discrete basin-cell membership, which would produce a blocky, non-refining lake edge, exactly the magnified-coarser-composite artifact D-166's corollary forbids). This reasoning is agnostic to which field carries the result, so it applied unchanged to both the abandoned water field and the final morphology-fold.

Final, converged answer (D-227 amendment §(a.11)):

  • Lakes ride the existing MorphologyZone::Lake — zero new wire field, zero vocabulary change. The fix is a data-source correction: derive_morphology_zone sources Lake from settled hydrology's continuous filled_scaled field (sampled bilinearly, the same mechanism ocean_fraction_q/sea_level already use), falling through to today's heuristic where no basin exists.
  • Lake geometry is static (a pure function of seed + terrain, cached indefinitely-fresh), explicitly distinct from Araminta's sim-state flooded plane — a lake's existence doesn't flicker on the seasonal TTL.
  • Endorheic-vs-overflow cue: outflow-course presence, zero wire bits, zero new zone. Dudley's original crossover-cost analysis (dense-bit vs. sparse-list) was correctly identified by the coordinator as not actually answering this question — both of those carriers were foreclosed once the morphology-fold landed. The real choice was reasoned fresh: an overflow basin's guaranteed non-empty outlet_path becomes a visible exit river in courses; an endorheic basin's absence of one is the honest "no drain" signal. Three reasons this wins over a dense vocabulary bit: proportionality (endorheic is 4.63% of real basins — too rare to justify a permanent 18th MorphologyZone arm every consumer inherits forever), the outlet-wiring work is required regardless (an overflow lake must show its exit river to be hydrologically honest — the cue is a free side effect, not a feature built to carry it), and the inference is definitionally sound with no misfire case (every Overflow basin has a guaranteed outlet path, every Endorheic basin has none — tested directly: overflowing_basin_has_nonempty_outlet_path).
  • Honest sequencing stated plainly, not glossed over: until the basin-outlet→D8 wiring ticket ships (pre-cleared as additive by T-1170 Ruling 7b's reserved TERMINAL sentinel), the map shows lakes but not the drains-vs-closed distinction. This is not a design gap — it is two distinct, sequenced deliverables, and the outcomes record states which one ships first rather than implying the distinction arrives automatically the day the sourcing fix lands.
  • The originally-proposed cliffs-based endorheic cue was independently ruled out by Araminta after directly re-checking the population survey: zero carved cells across all 267 real bodies means a cliff-wired cue would never fire in practice.

5. Deprecation sweep

DQR records (13 dispositions — the 12 amendments in §2 plus D-192's cross-reference note; full text in tyre-round2.md §(d)):

Record Disposition
D-166 corollary (2026-07-21) AMEND — repointed per-step, not deleted
D-226 T-1124 §2 ceiling AMEND — re-scoped to the legacy district_window carrier only; re-scope is final, the conditional supersede branch does not fire
D-226 T-1143 ruling 2 SUPERSEDE — tagged-envelope migration now triggered
D-226 T-1143 ruling 3 SUPERSEDE for transport (stepped); cursor-centering/edge-scroll/full-reset survive
D-226 T-1143 §6 select_rung/MAX_COVERAGE_M SUPERSEDE — replaced by the discrete step index
D-226 T-1143 ruling 1 (item-(d) floor opened) AMEND/NARROW — opening now lands at chunk (64 m); tile/voxel re-close
D-243 item (5) vocabulary AMEND (additive) — gridunit role name; Atlas floor bottoms at chunk
D-225 (tagged-envelope deferral) SATISFY (note) — constraint discharged by this workshop's envelope
D-226 item (d) whole-body prohibition AMEND — per-request/per-derivation framing + client-cache accumulation cap + the chunk-floor narrowing
D-227 (derive-don't-store) AMEND (additive ×4) — TTL-split/eviction axes; persistent-cache schema tag; seed-chaining cache-accelerated model; lakes sourcing fix
D-192 (no version handshake) CROSS-REF note — the co-ship guarantee does not extend to the persistent disk cache
river-courses-t1170.md (Ruling 1c) AMEND (note) — terminology repoint + cliffs as rule (iii)'s second vector member

Surviving untouched: D-010, D-166 cascade/phase gating, D-169/D-170, D-223, D-239 (see §2 for the explicit no-touch statement on each).

Tickets (10 dispositions):

Ticket Disposition
T-1176 CLOSE as delivered — this workshop is its output
T-1158 CANCEL with supersession note — the canonical-frame cluster it wanted to extract is exactly what the stepped model deletes
T-1175 RE-SCOPE, unblocked — the c1 blocker (measurement ⑥) is discharged; tapering lands on the new screen-space annotation layer
T-1157 RE-SCOPE as the stepped mechanism's capture harness — the dead-goldens problem it targets is a direct consequence of the split the stepped model collapses
T-1174 KEEP unchanged — a derivation-correctness bug orthogonal to the render pivot, priority raised (more derive paths now share the same position math)
T-1153 stays done; shipped code (_view_zoom, continuous-zoom transport) on the _canvas.scale retirement path
T-1152 stays done; compute_tile_grid() mosaic superseded by the rung-0 Global canvas
T-1153/T-1152 test suites retired with their code; replaced by re-scoped T-1157
NEW — lake morphology sourcing CREATE — source MorphologyZone::Lake from HydrologyResult's filled_scaled, self-contained, no wire change
NEW — hydrology basin-outlet → D8 wiring CREATE — thread overflow basin outlets into RiverNetwork/courses; pre-cleared additive by T-1170 Ruling 7b; this is the ticket the endorheic cue ships on

_canvas.scale retirement path (explicit list for the implementation ticket, full text tyre-round2.md §(d)): _canvas.scale/_canvas.position/ _apply_transform(); the _zs()/_zs_stroke()/_zs_ring_radius() compensation family; select_rung()/MAX_COVERAGE_M/compute_tile_grid(); the AtlasViewer/orbital-mosaic-vs-window split (collapses to "the Global opener is rung 0, one path"); _view_zoom/_canonical_fit_zoom() (replaced by the discrete rung index + the rung-0 canonical frame).

Clerk consistency audit: the known-conflicts starting set above (13 DQR + 10 ticket dispositions) is the complete, agent-produced sweep. A systematic audit pass beyond this named set is the standing pre-dismissal check per the brief's Expected Output 2 — run against the filed governance/decisions/ architecture.md text once D-255 and the twelve amendments are synced, to catch any conflict the delta did not explicitly name.


6. Measurement summary

# Ticket Headline Doc
T-1177 Hydrology viable; cliff repr. = elevation+channel_depth+cliff_edge; population survey: 0/267 real bodies carve measurements/t1177-hydrology.md
T-1178 Parallel throughput flat 190220 ns/cell, 330K8.3M cells measurements/t1178-t1154-derive-bench.md
T-1154 Block GO; original deep-step (voxel) bench superseded by chunk bench below measurements/t1178-t1154-derive-bench.md
T-1179 PNG-per-field wins; 21×–563× over 30KB cap → tagged envelope triggered measurements/t1179-wire-table.md
T-1180 Texture upload non-issue, 0.034.6ms measurements/t1180-imagetexture.md
(round 2) CPU colorize 77.5 ns/cell flat; beats byte-buffer ~2×; c1 = CPU-first, confirmed measurements/t-setpixel-c1.md
interview-2 (Dudley) Chunk (64m) bench: 1,7241,733 ms parallel full-canvas; Option D adopted dudley-interview2-response.md §1
S2 (Dudley, Troblum-requested) Courses cost at chunk/block: +38%87% (vs. District's <5%) — real, traced mechanism, still affordable dudley-interview2-response.md §3, filed as addendum in measurements/t1178-t1154-derive-bench.md
S4 (Dudley + Araminta) Sim-state TTL formula: 1× fastest driving sim-clock bucket, confirmed cost-affordable at 1× dudley-interview2-response.md §4
global-tier recheck (Dudley, post-ratification) Rung-0 corrected: ~8.85 MB PNG all 267 bodies (not ~174 MB) — Global/Region rung split dudley-interview2-response.md POST-RATIFICATION ADDENDUM §6
lake basin distribution (Dudley, post-ratification) Real population: 22,270 basins, dense wins 100% vs. sparse for lake carrying dudley-interview2-response.md LAKES CONVERGENCE §1

7. Adversarial pass disposition (Troblum)

Final scorecard (troblum-round2.md FINAL UPDATE): of seven original findings (2 BLOCKING, 5 SERIOUS), all seven are resolved by the time of filing:

Finding Resolution
B1 (population-scale cliff survey never run) RESOLVED — 267/267 real bodies surveyed, 0 carve
B2 (seed-chaining fork unresolved) RESOLVED — interview-2 ruling + Dudley's source-verified cache-accelerated model
S1 (evict-then-revisit costing) RESOLVED (mechanism) — both cache specs converge on dropping distance_decay; end-to-end revisit number correctly deferred as tuning
S2 (courses-density coverage gap) RESOLVED — Dudley's chunk/block courses bench, real finding, filed
S3 (D-226(d) letter vs. purpose) RESOLVED — per-request framing + client-cache accumulation cap, §(a.8)
S4 (sim-state phase cadence unnamed) RESOLVED — Dudley+Araminta joint formula, 1× confirmed affordable
S5 (disk-cache version tag) RESOLVED — §(a.9), complete fix

N1 (units convention), N2 (informational), N3 (clean bill) — all closed or never live concerns. No finding required walking back a round-1 or round-2 position; every fix Troblum checked against primary source held up exactly as documented.


8. Diagrams

Pending — to be created via /d2-diagram in docs/diagrams/architecture/ following the standard post-filing diagram pass:

  • Step-ladder diagram (Global opener → Region → District → Quarter → Block → Chunk, with the variable/fixed and canonical/evictable seams marked).
  • Cache-tier diagram (three tiers, the two eviction axes, the rung-0/rung-1 seam).
  • Wire-envelope diagram (tagged StepCanvasRequest/Response vs. legacy district_window, the re-scoped ceiling boundary).
  • Lakes data-flow diagram (HydrologyResultfilled_scaled bilinear sample → MorphologyZone::Lakecourses outlet presence → endorheic cue), given the arc's own complexity documented in §4 above.

Not yet started — first post-filing task, per standing practice (diagrams follow filed decisions, not the reverse).