From b39dd49950535b5690760c467302f2a08a7cc55d Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 25 Jul 2026 13:44:35 +0200 Subject: [PATCH] =?UTF-8?q?docs(simulation):=20update=20step=5Fcanvas=20ro?= =?UTF-8?q?w-space=20doc=20=E2=80=94=20T-1186=20is=20fixed=20(PR=20#206=20?= =?UTF-8?q?review)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hoshe's review finding: the build_step_canvas row-space convention block still described region_centre_latitude_deg as pole-anchored/bugged and said 'T-1186 stays open' — both false after this PR's own first commit. Rewritten to reflect the fixed state; the deliberate signed-convention rationale and the layer_proxy deferral (still true, still T-1181's scope) are preserved. Co-Authored-By: Claude Fable 5 --- server/src/atlas/step_canvas.rs | 41 +++++++++++++++------------------ 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/server/src/atlas/step_canvas.rs b/server/src/atlas/step_canvas.rs index 050108f50..363a24cbc 100644 --- a/server/src/atlas/step_canvas.rs +++ b/server/src/atlas/step_canvas.rs @@ -896,34 +896,29 @@ fn resolve_canvas_extent( /// origin-anchored — see the row-space convention note below); required for /// every fixed rung (the canvas centre in world metres). /// -/// **Row-space convention (T-1186 interaction — MUST READ):** the Global -/// (rung-0) canvas uses **equator-anchored SIGNED region rows** +/// **Row-space convention (T-1186 — resolved):** the Global (rung-0) canvas +/// uses **equator-anchored SIGNED region rows** /// (`wy = (row - rows/2) * REGION_M`, negative = north), matching the canonical /// `derive_orbital_at_metres`/`derive_at_metres_with_riparian` convention /// (D-256(a): the ONE absolute-metre derive core; that core's own internal /// `district_pos` floor-division and `lat_frac` computation are both -/// equator-anchored-signed). This is a DELIBERATE DEPARTURE from two -/// existing non-negative pole-anchored row conventions already in this -/// codebase: (1) `region_profile::region_centre_latitude_deg` (row 0 = north -/// pole, `lat_frac` clamped to `[0, 1]`) — the exact function T-1186 -/// documents as bugged when fed the derive core's signed rows; (2) +/// equator-anchored-signed). When this canvas was built, that was a +/// DELIBERATE DEPARTURE from two non-negative pole-anchored row conventions +/// then in the codebase — chosen because signed-equator rows are the only +/// shape consistent with D-256(a)'s "one derive core, one inverse mapping" +/// principle, and using either pole-anchored convention here would have +/// reproduced T-1186's bug class in a third place. Since then: (1) +/// `region_profile::region_centre_latitude_deg` — T-1186's actual bug, the +/// baseline-latitude function this derive core reaches transitively via +/// `region_baseline_at_district` — is **fixed** (PR #206) to the same +/// equator-anchored signed inverse mapping, so the baseline latitude every +/// canvas cell receives now agrees with these rows on every rung. (2) /// `layer_proxy::build_region_grid`/`LayerRegionOutput` (non-negative `ry` -/// rows, `0..=max_region.1`) — the collapsed whole-body region layer D-256(f) -/// explicitly deferred to THIS rebuild ("the overlay stays visibly stale -/// until T-1181 replaces it — accepted, noted"). Signed-equator rows are the -/// only choice consistent with D-256(a)'s "one absolute-metre derive core, -/// one inverse mapping" principle — using either pre-existing non-negative -/// convention here would reproduce T-1186's bug class in a THIRD place. This -/// derive core does **not** fix T-1186 itself (the bug lives in -/// `region_centre_latitude_deg`, called transitively via -/// `region_baseline_at_district` inside `derive_orbital_at_metres`) — every -/// Global-canvas cell at a genuinely northern (negative signed-row) position -/// still receives T-1186's wrong (+90°, polar) baseline latitude today, same -/// as the Region/District/Quarter/Block/Chunk rungs already do via the same -/// shared derive core. T-1186 stays open, tracked separately, exactly as the -/// ticket's KNOWN INTERACTION note requires — fixing it here would touch -/// `region_centre_latitude_deg`'s shared convention, which is explicitly out -/// of this ticket's scope (T-1186 is "a separate ruled convention change"). +/// rows, `0..=max_region.1`) remains the one pole-anchored outlier — the +/// collapsed whole-body region layer D-256(f) explicitly deferred to THIS +/// rebuild ("the overlay stays visibly stale until T-1181 replaces it — +/// accepted, noted"); unifying it onto the signed convention is proposed +/// for T-1181's scope, at which point one convention remains codebase-wide. #[allow(clippy::too_many_arguments)] pub fn build_step_canvas( seed: SeedChain,