docs(meta): D-255 amendment — the extent inversion, shipped today
D-255 described a system that stopped existing this morning. It said a rung fixes gridunit SPACING and that spacing is "never viewport-derived"; both are now exactly backwards. Anything reading it — a refinement agent, a reviewer, a future session — would have built against a fiction with no way to tell. Records the inversion (a rung fixes EXTENT, the shorter viewport axis spans one cell of that level, spacing falls out), Global moving from the body's region grid to a viewport-sized 2:1 canvas, Region leaving the orbital derive set, and the display-ratio band collapsing to a uniform 2x2. Two corrections matter beyond bookkeeping. D-255 justified Global's D-226(d) legality by it being COARSER than the region grid. It is now finer — 40.8 km against 204.8 km. The conclusion survives, since D-226(d) prohibits tile-level maps and caps at settlement/quarter granularity and 40.8 km is twenty times coarser than a district, but the premise is dead and nothing downstream should lean on it. And the always-keep cache figure is invalidated. The "~8.85 MB across 267 bodies, trivially process-resident" number assumed ~18,073 cells per body; a viewport-sized Global is 460,800 on a 1080p display, which is 25x — about 226 MB, and roughly 900 MB on a 4K display, with per-body derive going from ~16-21 ms to about half a second. An always-keep tier whose size scales with the user's monitor is the wrong shape, which is an independent argument for D-258: rung 0.5 is fixed-resolution and baked, and Global becomes a view of it rather than a canvas retained in its own right. Also records the two retired mechanisms (the S2 station-spacing floor, cap_extent_to_body superseded by rung liveness) and states plainly that Global is still broken — correctly sized now, but with no hydrology until rung 0.5 lands. Region is eyeball-confirmed working. Pair session with Jeroen, 2026-07-26. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -2286,6 +2286,18 @@ Technical foundation decisions that constrain implementation: engine, client-ser
|
||||
- **Dissent:** None.
|
||||
- **Amendment (2026-07-25, T-1192 / PR #205 — rung-0 integer viewport-fit display ratio):** Premise (2)'s "texel-exact, drawn at the display ratio" is **clarified for rung 0**: the Global opener's display ratio is **viewport-fitted per body** — the largest integer screen-px per gridunit that fits the legend-reserved viewport on both axes, floored at 1×1 (an over-viewport canvas draws at native ratio and crops/pans like every fixed rung) — rather than a fixed tunable. Texel-exactness is preserved by construction (every gridunit an exact integer pixel square); the letterbox remainder centres the canvas; fixed rungs keep their tuned constant display ratios. **Non-integer resting-state scaling remains unsanctioned** — a PR #205 review finding (Tyre) removed an implemented fractional-fit branch whose comments cited this record for an exception it does not contain; the [D-227](#d-227) 2026-07-23 corollary's "only sanctioned display-time scaling" (the transient between-step magnification) is joined only by this integer viewport fit, nothing else.
|
||||
|
||||
- **Amendment (2026-07-26, pair session with Jeroen — THE EXTENT INVERSION; premise (3) and §(a)/(b)/(d) corrected):** Shipped and eyeball-confirmed the same day. Premise (3)'s "discrete gridunit-**spacing** levels" is **inverted**: a rung fixes the canvas **EXTENT**, and the gridunit spacing falls out of the canvas size.
|
||||
|
||||
1. **The shorter viewport axis spans exactly one cell of the rung's level** (Jeroen: *"the smallest viewport axis locks the area for calculation, since that is most widescreen friendly"*); the long axis shows proportionally more ground. So `spacing = rung cell size ÷ shorter axis in cells`. §(a)'s "**every fixed rung's gridunit spacing is one of D-243's absolute-metre rungs, never viewport-derived**" is exactly reversed — the D-243 constant is now the rung's **cell size**, and spacing **is** viewport-derived. **Why it had to change:** at `REGION_M` *spacing*, a viewport-sized canvas spanned ~251,658 km — six times around a rocky body — so the Region rung capped to the body and redrew the Global picture pixel-for-pixel. Jeroen's *"the global and region maps need to look the same as the smaller level maps"* was this relation stated in metres, not a rendering defect. A consequence worth keeping: the canvas cell count is now viewport-driven and **identical at every rung**, so derive cost no longer varies with depth and a window resize refits for free.
|
||||
2. **Global is viewport-sized, not the body's region grid.** §(a)'s "one gridunit per region, so its canvas *is* the body's region grid — variable per body (~19K gridunits on an Earth-class body)" and §(b)'s "body-surface region-grid canvas" are **retired**. Global now fits the largest **2:1** canvas inside the requested extent (equirectangular whole body — 360° of longitude by 180° of latitude; the aspect cannot follow the viewport or cells stop being square and the map shears), with `spacing = 2πR ÷ width` and the existing letterbox absorbing the remainder. On Lendel that is 960×480 at ~40.8 km/gridunit, replacing 191×95 at 204.8 km. The old shape discarded roughly **seven times** the cells the 512×256 working heightmap already holds, and *shrank as `REGION_M` grew* — so tuning the scale ladder silently degraded the opener, which is why the top of the ladder got worse as the ladder itself was refined.
|
||||
3. **Region left the orbital derive set.** It was envelope-only (no courses, no fine detail) because nothing finer made sense at 251,658 km; at 262×466 km it is a genuine provincial map and takes the full courses-aware derive like every fixed rung. **Region carrying no rivers at all was much of why the top of the ladder read flat.** Confirmed by eyeball 2026-07-26: *"Region works."*
|
||||
4. **The display-ratio band is uniform at 2×2.** §(a)'s "1×1 ideal → ≥5×5 acceptable" and its "deepest bottom-out rule: 1 screen px per 64 m gridunit" are superseded — every rung reads at 2 screen px per gridunit. Deep-rung derive cost fell ~4× (a 1920×1080 window: ~2.07M cells → ~518K); Global *gains* resolution rather than losing it, since 5 px/gridunit asked for 384 cells across a body whose heightmap stores 512×256. The 2026-07-25 integer viewport-fit amendment above still stands and still governs the letterbox scaling.
|
||||
5. **§(b)'s D-226(d) legality argument is now false, though its conclusion holds.** Global was justified as "*coarser* than the region grid"; it is now **finer** (~40.8 km vs 204.8 km). The conclusion is unchanged — [D-226](#d-226)(d) prohibits **tile-level** Atlas maps and caps granularity at settlement/quarter, and 40.8 km is twenty times coarser than a district — but the stated premise must not be relied on by anything downstream.
|
||||
6. **§(d)'s always-keep cost model is invalidated and must be re-measured.** The "~8.85 MB PNG across the entire real ~267-body population, trivially process-resident" figure assumed ~18,073 cells/body. A viewport-sized Global is **460,800** cells on a 1080p display — **25×** — putting the tier near **226 MB**, roughly **900 MB** on a 4K display, with per-body derive rising from ~16–21 ms to roughly half a second. **An always-keep tier whose size scales with the user's monitor is the wrong shape.** This is an independent argument for [D-258](#d-258): rung 0.5 is fixed-resolution and baked once per body, and Global becomes a *view* of it rather than a derived-and-retained canvas in its own right. Re-measure against rung 0.5, not against this record.
|
||||
7. **Two mechanisms retired.** The S2 **station-spacing floor** (`COURSE_STATION_SPACING_FLOOR_M`) is deleted, not retuned: it guarded an `O(1/spacing)` blowup that a constant per-rung cell count makes structurally impossible, and post-inversion it would have done active harm in the opposite direction — a 2,048 m station pitch across a ~3.6 km District canvas places two stations and draws every river as a straight line. **`cap_extent_to_body`** is superseded by **rung liveness**: a canvas can no longer over-request a body by construction, and the residual question — whether a rung's cell exceeds the whole body — is answered by *omitting* the rung rather than squashing the canvas (it never fires on in-scope content; the only sub-region bodies in `systems.db` are Phobos and Deimos, and Sol is out of generator bounds).
|
||||
|
||||
**Status, honestly:** Region is confirmed working. **Global still reads wrong and this amendment does not fix it** — it is correctly *sized* now but still rides the orbital derive, so it carries no hydrology. Its repair is [D-258](#d-258)'s rung 0.5, not further work on this record.
|
||||
|
||||
---
|
||||
|
||||
### D-256: Canonical sampling convention — one absolute-metre derive core; the batch layer is a survey raster
|
||||
|
||||
Reference in New Issue
Block a user