From bc204262be6d057e917088df190a2dd1e9700737 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Tue, 21 Jul 2026 21:06:46 +0200 Subject: [PATCH] =?UTF-8?q?docs(meta):=20D-166=20amendment=20corollary=20?= =?UTF-8?q?=E2=80=94=20heightmap=20PNGs=20demoted=20to=20invisible=20deriv?= =?UTF-8?q?ation=20input;=20planetary=20level=20fully=20derived=20at=20can?= =?UTF-8?q?vas=20resolution?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Jeroen's same-day corollary to the zoom-ladder condition: no zoom level displays the authored heightmaps directly — even the orbital/planetary map is derived output, sampled at canvas resolution (continuous field, not fixed rasters). Kills zoom over/undersampling by construction and makes the map viewport-adaptive. import_heightmaps survives as input storage only; AtlasViewer's texture display path retires when the derived planetary rung lands. T-1143 design pass extended with items (e)-(g). --- .pql/changelog/ticket_history/2026-07.sql | 15 +++++++++++++++ .pql/changelog/tickets/2026-07.sql | 9 +++++++++ CLAUDE.md | 2 +- governance/decisions/architecture.md | 2 +- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/.pql/changelog/ticket_history/2026-07.sql b/.pql/changelog/ticket_history/2026-07.sql index c0eded075..f16bacd69 100644 --- a/.pql/changelog/ticket_history/2026-07.sql +++ b/.pql/changelog/ticket_history/2026-07.sql @@ -1620,3 +1620,18 @@ RULING (Jeroen, 2026-07-21, round-3 direction): the smooth-gradient rendering is D-166 amendment 2026-07-21 (Jeroen, from the Groombridge/Lendel zoom captures): the seamless zoom ladder this ticket designs is now a HARD Phase-4 deliverable condition — T-750 does not close until the ladder stands (planetary map -> tile scale, every level deterministically derived at native granularity, never magnified interpolation; BHAG itself unchanged). Evidence baked into the amendment: at Lendel scale one heightmap px spans ~19 districts, so the current 16-district window is sub-pixel vs its source — beyond fit-zoom the viewer can only magnify the same composite, and the real waterline sat ~36 districts from the pixel-edge estimate (all window-scale-and-below information is D-227 invented detail and must be derived, not smoothed). This raises the design pass''s stakes: the granularity-rung ladder, wire budget, and the D-226(d) floor question are now phase-gating.', NULL, '2026-07-21 19:01:45', '2026-07-21 19:01:45.387', '2026-07-21 19:01:45.387', NULL, '0b7b95e7418d0b279a5e4e115085a453', 2) ON CONFLICT(hash) DO NOTHING; INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FR97DPEHANCYX2AC4021BSJC', 'priority', 'medium', 'high', NULL, '2026-07-21 19:01:54', '2026-07-21 19:01:54.239', '2026-07-21 19:01:54.239', NULL, '7d0d4a6b25d6430273ce7df42230dc3a', 2) ON CONFLICT(hash) DO NOTHING; +INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FR97DPEHANCYX2AC4021BSJC', 'description', 'Follow-on from Jeroen''s first descent (2026-07-21): even with T-1142 fixed, many interior windows are genuinely one morphology zone across 66km, and the composite''s absolute lightness modulation (0.7 + 0.3 x elev_q/100, D-226 T-1124 SS5) spans only ~1-3% lightness over a window whose local elev range is small — the window reads as a dead flat fill rather than terrain. Proposal to evaluate WITH Araminta (SS5 is her encoding): window-local contrast stretch — normalize lightness within the window''s own elev min..max (fixed band, e.g. 0.62..0.92) with a degenerate floor (single-value window stays honestly flat), deterministic per window, mirroring how the aliveness_probe elev panel achieved its 12-level local texture. Alternative/complement: a faint deterministic per-cell variation or contour hinting. Any change to the recorded SS5 encoding gets a one-line amendment note. Assess AFTER T-1142 lands — real clicks will then land on real terrain and the residual flatness can be judged on coastal vs interior windows. + +Scope expansion (Jeroen round-2, 2026-07-21): beyond window-local contrast, evaluate SUB-DISTRICT SAMPLING to de-block the composite at the data level — the D-227 invention fields (invent_primitives: warped envelope, scatter, character) are continuous at metre resolution and quarter granularity (512m, 4x4 per district) sits WITHIN the D-226(d) Atlas ceiling (the cap rules out chunk/tile mapping, not quarters). But classification (derive_district) is per-district today — finer sampling means a new derivation mode (e.g. sample the continuous primitives at quarter spacing and reuse the district''s classification for hue while modulating lightness/moisture per quarter, or classify per quarter at 16x the derive cost — n=32 window = 16384 quarter cells x ~7us = ~115ms background). Needs Dudley/Tyre on data feasibility + cost, Araminta on encoding. INTERIM already shipping in T-1145: linear-filtered texture rendering (presentation smoothing, no data change) — judge the residual need after both T-1145 and real-aim clicking land. + +RULING (Jeroen, 2026-07-21, round-3 direction): the smooth-gradient rendering is INTERIM ONLY — he expects not to like it as the destination. The destination is SMALLER DETERMINISTICALLY-CALCULATED PIXELS (sub-district sampling, the sketch above), and the larger vision: SCROLL-ZOOM AS CONTINUOUS INFORMATION LoD — zooming in from the regional level progressively refines the sampled resolution seamlessly (no mode transition), ''zoom in to tile size from this level'' in his words. The design pass must therefore produce: (a) the granularity ladder the zoom traverses (district 2048m -> quarter 512m -> ? ), with derivation modes + per-window costs at each rung; (b) wire implications — finer windows multiply cell counts (quarter = 16x district cells/window); weigh against the windowed-family ceiling and the SS4 budget model (likely per-rung window requests reusing the same district_window carrier at different granularity, or a granularity param — design call); (c) THE FLOOR QUESTION back to Jeroen explicitly: ''tile size'' intersects the D-226(d) ceiling (chunk/tile output never Atlas-mapped; quarter is the current legal floor) — the pass presents the options (stop at quarter vs supersede D-226(d) for the window view) rather than assuming; (d) Araminta: encoding continuity across rungs (one colorizer family, hue stability as resolution refines). The COMPOSITE_SMOOTH linear-filter path ships until this lands, then is expected to be retired. + +D-166 amendment 2026-07-21 (Jeroen, from the Groombridge/Lendel zoom captures): the seamless zoom ladder this ticket designs is now a HARD Phase-4 deliverable condition — T-750 does not close until the ladder stands (planetary map -> tile scale, every level deterministically derived at native granularity, never magnified interpolation; BHAG itself unchanged). Evidence baked into the amendment: at Lendel scale one heightmap px spans ~19 districts, so the current 16-district window is sub-pixel vs its source — beyond fit-zoom the viewer can only magnify the same composite, and the real waterline sat ~36 districts from the pixel-edge estimate (all window-scale-and-below information is D-227 invented detail and must be derived, not smoothed). This raises the design pass''s stakes: the granularity-rung ladder, wire budget, and the D-226(d) floor question are now phase-gating.', 'Follow-on from Jeroen''s first descent (2026-07-21): even with T-1142 fixed, many interior windows are genuinely one morphology zone across 66km, and the composite''s absolute lightness modulation (0.7 + 0.3 x elev_q/100, D-226 T-1124 SS5) spans only ~1-3% lightness over a window whose local elev range is small — the window reads as a dead flat fill rather than terrain. Proposal to evaluate WITH Araminta (SS5 is her encoding): window-local contrast stretch — normalize lightness within the window''s own elev min..max (fixed band, e.g. 0.62..0.92) with a degenerate floor (single-value window stays honestly flat), deterministic per window, mirroring how the aliveness_probe elev panel achieved its 12-level local texture. Alternative/complement: a faint deterministic per-cell variation or contour hinting. Any change to the recorded SS5 encoding gets a one-line amendment note. Assess AFTER T-1142 lands — real clicks will then land on real terrain and the residual flatness can be judged on coastal vs interior windows. + +Scope expansion (Jeroen round-2, 2026-07-21): beyond window-local contrast, evaluate SUB-DISTRICT SAMPLING to de-block the composite at the data level — the D-227 invention fields (invent_primitives: warped envelope, scatter, character) are continuous at metre resolution and quarter granularity (512m, 4x4 per district) sits WITHIN the D-226(d) Atlas ceiling (the cap rules out chunk/tile mapping, not quarters). But classification (derive_district) is per-district today — finer sampling means a new derivation mode (e.g. sample the continuous primitives at quarter spacing and reuse the district''s classification for hue while modulating lightness/moisture per quarter, or classify per quarter at 16x the derive cost — n=32 window = 16384 quarter cells x ~7us = ~115ms background). Needs Dudley/Tyre on data feasibility + cost, Araminta on encoding. INTERIM already shipping in T-1145: linear-filtered texture rendering (presentation smoothing, no data change) — judge the residual need after both T-1145 and real-aim clicking land. + +RULING (Jeroen, 2026-07-21, round-3 direction): the smooth-gradient rendering is INTERIM ONLY — he expects not to like it as the destination. The destination is SMALLER DETERMINISTICALLY-CALCULATED PIXELS (sub-district sampling, the sketch above), and the larger vision: SCROLL-ZOOM AS CONTINUOUS INFORMATION LoD — zooming in from the regional level progressively refines the sampled resolution seamlessly (no mode transition), ''zoom in to tile size from this level'' in his words. The design pass must therefore produce: (a) the granularity ladder the zoom traverses (district 2048m -> quarter 512m -> ? ), with derivation modes + per-window costs at each rung; (b) wire implications — finer windows multiply cell counts (quarter = 16x district cells/window); weigh against the windowed-family ceiling and the SS4 budget model (likely per-rung window requests reusing the same district_window carrier at different granularity, or a granularity param — design call); (c) THE FLOOR QUESTION back to Jeroen explicitly: ''tile size'' intersects the D-226(d) ceiling (chunk/tile output never Atlas-mapped; quarter is the current legal floor) — the pass presents the options (stop at quarter vs supersede D-226(d) for the window view) rather than assuming; (d) Araminta: encoding continuity across rungs (one colorizer family, hue stability as resolution refines). The COMPOSITE_SMOOTH linear-filter path ships until this lands, then is expected to be retired. + +D-166 amendment 2026-07-21 (Jeroen, from the Groombridge/Lendel zoom captures): the seamless zoom ladder this ticket designs is now a HARD Phase-4 deliverable condition — T-750 does not close until the ladder stands (planetary map -> tile scale, every level deterministically derived at native granularity, never magnified interpolation; BHAG itself unchanged). Evidence baked into the amendment: at Lendel scale one heightmap px spans ~19 districts, so the current 16-district window is sub-pixel vs its source — beyond fit-zoom the viewer can only magnify the same composite, and the real waterline sat ~36 districts from the pixel-edge estimate (all window-scale-and-below information is D-227 invented detail and must be derived, not smoothed). This raises the design pass''s stakes: the granularity-rung ladder, wire budget, and the D-226(d) floor question are now phase-gating. + +Corollary to the D-166 2026-07-21 amendment (Jeroen, same day): heightmap PNGs are demoted to INVISIBLE derivation input — no zoom level displays them, including orbital/planetary, which must itself be FULLY DERIVED. Display at every rung samples the derivation at CANVAS RESOLUTION (continuous field, not fixed rasters) — this drops zoom over- and undersampling by construction and makes the map adapt to any viewport size. Design-pass additions: (e) the planetary/orbital rung becomes derived output — spec its derivation mode + cost (whole-planet at canvas res; today''s AtlasViewer texture path retires when it lands); (f) canvas-resolution-adaptive sampling replaces fixed per-rung display granularity — the rung ladder defines DERIVATION granularity available at each scale, while sampling density tracks the viewport; (g) import_heightmaps stays as input storage only.', NULL, '2026-07-21 19:06:30', '2026-07-21 19:06:30.921', '2026-07-21 19:06:30.921', NULL, '9204f1e54fcf03591a9c3bdf4ddc90a6', 2) ON CONFLICT(hash) DO NOTHING; diff --git a/.pql/changelog/tickets/2026-07.sql b/.pql/changelog/tickets/2026-07.sql index 1647bb0a6..fab3c196e 100644 --- a/.pql/changelog/tickets/2026-07.sql +++ b/.pql/changelog/tickets/2026-07.sql @@ -2385,3 +2385,12 @@ Scope expansion (Jeroen round-2, 2026-07-21): beyond window-local contrast, eval RULING (Jeroen, 2026-07-21, round-3 direction): the smooth-gradient rendering is INTERIM ONLY — he expects not to like it as the destination. The destination is SMALLER DETERMINISTICALLY-CALCULATED PIXELS (sub-district sampling, the sketch above), and the larger vision: SCROLL-ZOOM AS CONTINUOUS INFORMATION LoD — zooming in from the regional level progressively refines the sampled resolution seamlessly (no mode transition), ''zoom in to tile size from this level'' in his words. The design pass must therefore produce: (a) the granularity ladder the zoom traverses (district 2048m -> quarter 512m -> ? ), with derivation modes + per-window costs at each rung; (b) wire implications — finer windows multiply cell counts (quarter = 16x district cells/window); weigh against the windowed-family ceiling and the SS4 budget model (likely per-rung window requests reusing the same district_window carrier at different granularity, or a granularity param — design call); (c) THE FLOOR QUESTION back to Jeroen explicitly: ''tile size'' intersects the D-226(d) ceiling (chunk/tile output never Atlas-mapped; quarter is the current legal floor) — the pass presents the options (stop at quarter vs supersede D-226(d) for the window view) rather than assuming; (d) Araminta: encoding continuity across rungs (one colorizer family, hue stability as resolution refines). The COMPOSITE_SMOOTH linear-filter path ships until this lands, then is expected to be retired. D-166 amendment 2026-07-21 (Jeroen, from the Groombridge/Lendel zoom captures): the seamless zoom ladder this ticket designs is now a HARD Phase-4 deliverable condition — T-750 does not close until the ladder stands (planetary map -> tile scale, every level deterministically derived at native granularity, never magnified interpolation; BHAG itself unchanged). Evidence baked into the amendment: at Lendel scale one heightmap px spans ~19 districts, so the current 16-district window is sub-pixel vs its source — beyond fit-zoom the viewer can only magnify the same composite, and the real waterline sat ~36 districts from the pixel-edge estimate (all window-scale-and-below information is D-227 invented detail and must be derived, not smoothed). This raises the design pass''s stakes: the granularity-rung ladder, wire budget, and the D-226(d) floor question are now phase-gating.', 'backlog', 'high', NULL, 'client', NULL, '2026-07-21 12:19:16.212', '2026-07-21 19:01:54.239', NULL, '6b60196e54ea21056fef844d4655176b', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash); +INSERT INTO tickets (record_id, type, parent_record_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FR97DPEHANCYX2AC4021BSJC', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Regional window legibility on quiet interiors — window-local elevation contrast', 'Follow-on from Jeroen''s first descent (2026-07-21): even with T-1142 fixed, many interior windows are genuinely one morphology zone across 66km, and the composite''s absolute lightness modulation (0.7 + 0.3 x elev_q/100, D-226 T-1124 SS5) spans only ~1-3% lightness over a window whose local elev range is small — the window reads as a dead flat fill rather than terrain. Proposal to evaluate WITH Araminta (SS5 is her encoding): window-local contrast stretch — normalize lightness within the window''s own elev min..max (fixed band, e.g. 0.62..0.92) with a degenerate floor (single-value window stays honestly flat), deterministic per window, mirroring how the aliveness_probe elev panel achieved its 12-level local texture. Alternative/complement: a faint deterministic per-cell variation or contour hinting. Any change to the recorded SS5 encoding gets a one-line amendment note. Assess AFTER T-1142 lands — real clicks will then land on real terrain and the residual flatness can be judged on coastal vs interior windows. + +Scope expansion (Jeroen round-2, 2026-07-21): beyond window-local contrast, evaluate SUB-DISTRICT SAMPLING to de-block the composite at the data level — the D-227 invention fields (invent_primitives: warped envelope, scatter, character) are continuous at metre resolution and quarter granularity (512m, 4x4 per district) sits WITHIN the D-226(d) Atlas ceiling (the cap rules out chunk/tile mapping, not quarters). But classification (derive_district) is per-district today — finer sampling means a new derivation mode (e.g. sample the continuous primitives at quarter spacing and reuse the district''s classification for hue while modulating lightness/moisture per quarter, or classify per quarter at 16x the derive cost — n=32 window = 16384 quarter cells x ~7us = ~115ms background). Needs Dudley/Tyre on data feasibility + cost, Araminta on encoding. INTERIM already shipping in T-1145: linear-filtered texture rendering (presentation smoothing, no data change) — judge the residual need after both T-1145 and real-aim clicking land. + +RULING (Jeroen, 2026-07-21, round-3 direction): the smooth-gradient rendering is INTERIM ONLY — he expects not to like it as the destination. The destination is SMALLER DETERMINISTICALLY-CALCULATED PIXELS (sub-district sampling, the sketch above), and the larger vision: SCROLL-ZOOM AS CONTINUOUS INFORMATION LoD — zooming in from the regional level progressively refines the sampled resolution seamlessly (no mode transition), ''zoom in to tile size from this level'' in his words. The design pass must therefore produce: (a) the granularity ladder the zoom traverses (district 2048m -> quarter 512m -> ? ), with derivation modes + per-window costs at each rung; (b) wire implications — finer windows multiply cell counts (quarter = 16x district cells/window); weigh against the windowed-family ceiling and the SS4 budget model (likely per-rung window requests reusing the same district_window carrier at different granularity, or a granularity param — design call); (c) THE FLOOR QUESTION back to Jeroen explicitly: ''tile size'' intersects the D-226(d) ceiling (chunk/tile output never Atlas-mapped; quarter is the current legal floor) — the pass presents the options (stop at quarter vs supersede D-226(d) for the window view) rather than assuming; (d) Araminta: encoding continuity across rungs (one colorizer family, hue stability as resolution refines). The COMPOSITE_SMOOTH linear-filter path ships until this lands, then is expected to be retired. + +D-166 amendment 2026-07-21 (Jeroen, from the Groombridge/Lendel zoom captures): the seamless zoom ladder this ticket designs is now a HARD Phase-4 deliverable condition — T-750 does not close until the ladder stands (planetary map -> tile scale, every level deterministically derived at native granularity, never magnified interpolation; BHAG itself unchanged). Evidence baked into the amendment: at Lendel scale one heightmap px spans ~19 districts, so the current 16-district window is sub-pixel vs its source — beyond fit-zoom the viewer can only magnify the same composite, and the real waterline sat ~36 districts from the pixel-edge estimate (all window-scale-and-below information is D-227 invented detail and must be derived, not smoothed). This raises the design pass''s stakes: the granularity-rung ladder, wire budget, and the D-226(d) floor question are now phase-gating. + +Corollary to the D-166 2026-07-21 amendment (Jeroen, same day): heightmap PNGs are demoted to INVISIBLE derivation input — no zoom level displays them, including orbital/planetary, which must itself be FULLY DERIVED. Display at every rung samples the derivation at CANVAS RESOLUTION (continuous field, not fixed rasters) — this drops zoom over- and undersampling by construction and makes the map adapt to any viewport size. Design-pass additions: (e) the planetary/orbital rung becomes derived output — spec its derivation mode + cost (whole-planet at canvas res; today''s AtlasViewer texture path retires when it lands); (f) canvas-resolution-adaptive sampling replaces fixed per-rung display granularity — the rung ladder defines DERIVATION granularity available at each scale, while sampling density tracks the viewport; (g) import_heightmaps stays as input storage only.', 'backlog', 'high', NULL, 'client', NULL, '2026-07-21 12:19:16.212', '2026-07-21 19:06:30.921', NULL, '9db3036c671f4b1425a74f52c87b3b98', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash); diff --git a/CLAUDE.md b/CLAUDE.md index 99390c903..beee72ed5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -41,7 +41,7 @@ Development follows a strict cascade. Each phase has a concrete deliverable. **D | 1 | Wiki content complete — all planets, moons, stations, heightmaps, artwork | Implant-ready Godot map of the Reach with click-throughs + wiki/GTTR popups | | 2 | Economics layer — supply/demand, transport, political/social pressure, corporations, supply chains | Economics spreadsheets/graphs with runtime-tweakable simulation | | 3 | Planetary/moon maps & station layouts — cities, rivers, mountains, roads, biomes, rail | Atlas of the Reach (implant app) | -| 4 | World generation (tile/chunk/block) — deterministic multilayer seed→tile cascade; each layer above the tile fill viewed as a **map in the implant Atlas** (no in-world rendering; chunk/tile/voxel output is harness-verified, never Atlas-mapped — D-226 amendment 2026-07-13) | Deterministic walkable-world data + per-layer Atlas maps + asset catalog + **seamless Atlas zoom ladder** (planetary map → tile scale, each level deterministically derived at native granularity, never magnified interpolation — D-166 amendment 2026-07-21) | +| 4 | World generation (tile/chunk/block) — deterministic multilayer seed→tile cascade; each layer above the tile fill viewed as a **map in the implant Atlas** (no in-world rendering; chunk/tile/voxel output is harness-verified, never Atlas-mapped — D-226 amendment 2026-07-13) | Deterministic walkable-world data + per-layer Atlas maps + asset catalog + **seamless Atlas zoom ladder** (planetary map → tile scale, every level fully derived and sampled at canvas resolution — heightmap PNGs are invisible derivation input, never displayed; no zoom over/undersampling — D-166 amendment 2026-07-21) | | 5 | Player control & in-world rendering — character, walls/stairs/doors, lighting, drawn on **generated** tiles (no test map) | Player viewport with final-version assets on the generated world | | 6 | Detail coloring — room-level NPC population, cultural room grammar | Only when the world is walkable | diff --git a/governance/decisions/architecture.md b/governance/decisions/architecture.md index 994bfccd1..e8237a52b 100644 --- a/governance/decisions/architecture.md +++ b/governance/decisions/architecture.md @@ -601,7 +601,7 @@ Technical foundation decisions that constrain implementation: engine, client-ser - **Amendment (2026-05-22):** Phases 4 and 5 swapped — **world generation now precedes player control**. The rule: no player-control or in-world rendering work begins until the generator can deterministically seed-generate every tile of every world via the full multilayer cascade. The original Phase 4 "2-floor test map" is **dropped** — test layers are produced by the generator itself once layer-drawing begins; we start drawing the world only when generation knows what to draw. Generation progress is viewed as **per-layer maps in the implant Atlas** (the Phase 3 deliverable, already built), not via an in-world renderer. The existing in-world rendering code is **left as-is until Phase 5** — neither built upon nor removed before then. Rationale: building player systems against a throwaway test substrate means rebuilding them against real generated tiles later; gating player work on deterministic generation avoids that waste. Epics T-749 (now Phase 5) and T-750 (now Phase 4) and the CLAUDE.md cascade table are updated to match. - **Amendment (2026-06-12):** Build order **within and after** the cascade clarified (Jeroen). The world is built **outside-in**: (1) geo layer; (2) the economic layer drawn onto the world — cities, buildings, streets, blocks, and the inter-settlement road/rail network; (3) building templates; (4) **door boundary contracts** defining the seam between exteriors and building interiors. Only then (5) the background NPC layer and building interiors (Phase 6), and only after that does gameplay/scenario design resume ("making it a game again" — tracked in the post-cascade gameplay parking epic, outside any phase). **Player control and visual rendering (Phase 5) ramp in parallel once outside generation produces walkable exteriors** — the Phase-5 trigger is "outsides generate deterministically and are walkable", not "all Phase-4 polish complete"; T-962 holds the gate and is updated to this trigger. Guiding statement: *"Before this is a game I want it to be a Reach a character can travel through."* NPCs, scenarios, and gameplay systems are conceived, designed, and built only after the traversable world exists. This amendment absorbs the v0.2 scope cluster — D-114, D-115, D-117, D-118, D-120 are marked superseded by this record, with each one's surviving design substance noted on the record itself. -- **Amendment (2026-07-21):** **Seamless zoom ladder is a hard Phase-4 deliverable condition** (Jeroen, reviewing the Groombridge/Lendel Atlas zoom-ladder captures). The guiding statement (BHAG) is deliberately **unchanged** — *"Before this is a game I want it to be a Reach a character can travel through."* What changes is the Phase 4 exit bar: the Atlas must provide a **continuous zoom ladder from the planetary map down to tile scale**, where every zoom level shows **deterministically calculated information at that level's native granularity** ("LoD on the information in view" — the T-1143 ruling), never magnified interpolation of a coarser composite. Evidence that forced the condition: at Lendel's scale one heightmap pixel spans ~19 districts, so the 16-district window is *sub-pixel* relative to its source — beyond fit-zoom the current viewer can only linearly magnify the same 16×16 composite (captures 2026-07-21, `.cache/screenshots/groombridge/`), and the real waterline sat ~36 districts from the pixel-edge estimate, i.e. **all** information at window scale and below is invented detail (D-227) that must be *derived*, not smoothed. T-1143 is the design pass for the ladder (granularity rungs, wire budget, the D-226(d) floor question); the Phase-4 epic (T-750) does not close until the ladder stands. CLAUDE.md's cascade table is updated to carry the condition. +- **Amendment (2026-07-21):** **Seamless zoom ladder is a hard Phase-4 deliverable condition** (Jeroen, reviewing the Groombridge/Lendel Atlas zoom-ladder captures). The guiding statement (BHAG) is deliberately **unchanged** — *"Before this is a game I want it to be a Reach a character can travel through."* What changes is the Phase 4 exit bar: the Atlas must provide a **continuous zoom ladder from the planetary map down to tile scale**, where every zoom level shows **deterministically calculated information at that level's native granularity** ("LoD on the information in view" — the T-1143 ruling), never magnified interpolation of a coarser composite. Evidence that forced the condition: at Lendel's scale one heightmap pixel spans ~19 districts, so the 16-district window is *sub-pixel* relative to its source — beyond fit-zoom the current viewer can only linearly magnify the same 16×16 composite (captures 2026-07-21, `.cache/screenshots/groombridge/`), and the real waterline sat ~36 districts from the pixel-edge estimate, i.e. **all** information at window scale and below is invented detail (D-227) that must be *derived*, not smoothed. T-1143 is the design pass for the ladder (granularity rungs, wire budget, the D-226(d) floor question); the Phase-4 epic (T-750) does not close until the ladder stands. CLAUDE.md's cascade table is updated to carry the condition. **Corollary (Jeroen, same day):** the authored heightmap PNGs are thereby demoted to **invisible input to the seed/derivation calculation** — no zoom level displays them directly, *including the orbital/planetary level*, which must itself be **fully derived**. Display at every rung samples the derivation at **canvas resolution** (the ladder is a continuous field, not a stack of fixed display rasters), which removes both zoom oversampling (magnified interpolation) and undersampling (the ~40–78 km/px source-raster floor) by construction, and lets the map adapt to any viewport size. The `import_heightmaps` bake into systems.db survives as derivation *input* storage only; the AtlasViewer's direct heightmap-texture display path retires when the derived planetary rung lands (in T-1143's design-pass scope). - **Rationale:** The pattern of negotiating pragmatic v0.2 cuts while discussing room-level detail repeatedly produced superseded decisions, confused agents, and distracted from building the actual product. The cascade enforces a first-things-first discipline: each layer of the game is grounded in the layer below it before detail is added. - **Raised by:** Jeroen, established 2026-03-24 during world generation workshop. - **Dissent:** None.