chore(meta): activate zoom-ladder-continuous batch — T-1152/T-1153 in_progress

This commit is contained in:
2026-07-22 10:01:06 +02:00
parent 896c923d35
commit 2a4597e108
2 changed files with 4 additions and 0 deletions
@@ -1665,3 +1665,5 @@ INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, chang
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 ('06FRCET0RKD7ED9D9RY5Q99RQG', 'status', 'review', 'done', NULL, '2026-07-21 22:54:32', '2026-07-21 22:54:32.382', '2026-07-21 22:54:32.382', NULL, '20d7be4411eb2ffc6ef2089443040a53', 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 ('06FRCEV8Q32C2FW9Y6733419DG', 'status', 'review', 'done', NULL, '2026-07-21 22:54:32', '2026-07-21 22:54:32.389', '2026-07-21 22:54:32.389', NULL, '9823d7bfcb7ee233020fb0d7b740651d', 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 ('06FRCEWBS5RC5YET0SMSPZ1E9W', 'status', 'review', 'done', NULL, '2026-07-21 22:54:32', '2026-07-21 22:54:32.390', '2026-07-21 22:54:32.390', NULL, '40cbabb32cf6ebabaf362d536ce3a3a5', 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 ('06FRCEXHYP8RVBPB8QNZHTNTR0', 'status', 'backlog', 'in_progress', NULL, '2026-07-22 08:00:52', '2026-07-22 08:00:52.300', '2026-07-22 08:00:52.300', NULL, 'd8baca0fa0c74bce4ec0387c8a0699bd', 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 ('06FRCEZ47J16E3XKE957HGR8H4', 'status', 'backlog', 'in_progress', NULL, '2026-07-22 08:00:52', '2026-07-22 08:00:52.307', '2026-07-22 08:00:52.307', NULL, '2b5b5fb32f256dfd64f8d8b2135b42bf', 2) ON CONFLICT(hash) DO NOTHING;
+2
View File
@@ -2441,3 +2441,5 @@ INSERT INTO tickets (record_id, type, parent_record_id, title, description, stat
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 ('06FRCET0RKD7ED9D9RY5Q99RQG', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'derive_at_metres extraction + min_wavelength octave cutoff in enveloped_fbm', 'Zoom-ladder migration step 1 (docs/architecture/atlas-zoom-ladder-t1143.md SS8; keystone for every rung). Extract derive_district''s fractional-metres interior (district_profile.rs:1426+ already computes px/py/world_x_m/world_y_m/lat_deg from the integer DistrictPos) into derive_at_metres(seed, body, wx, wy, min_wl); derive_district becomes a thin integer-quantizing wrapper — bit-identical output for existing callers is the acceptance test (golden harness must not move). Add min_wavelength_m: f64 to enveloped_fbm (detail_scatter.rs:137-176) and the terrain_detail/voxel_relief const-octave paths: truncate octaves below the cutoff; evaluate Dudley''s amplitude-fade-near-cutoff refinement vs hard truncate (pop risk as sampling density crosses an octave boundary) and pick with a visual A/B. Re-benchmark derive cost with the cutoff active at district and quarter spacings — the design doc''s numbers are for the UNMODIFIED pipeline and are marked contested (SS2 status note + Troblum R-findings).', 'done', 'high', NULL, 'server', 'D-226', '2026-07-21 19:50:57.988', '2026-07-21 22:54:32.382', NULL, 'cc114d00e8ac81437b94964cae9c2d50', 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 ('06FRCEV8Q32C2FW9Y6733419DG', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'window_granularity + window_min_wl_m on the district_window carrier (five touch points + aliasing test)', 'Zoom-ladder migration step 3 (docs/architecture/atlas-zoom-ladder-t1143.md SS3). serde-default window_granularity: u32 (1=district, 4=quarter) and window_min_wl_m: u32 (0=off) on AtlasLayerRequest — the T-1124 SS1 additive pattern, no sixth demux shape. The design pass flags this as a five-touch-point coordinated change and mandates the test: server DistrictWindowLayer echo tuple (center, n, granularity), server FIFO-256 window cache key (layer_proxy.rs:308), server per-connection coalescing key (gen_queue.rs:221-224), client request struct, client 24-entry LRU key (atlas_window_cache.gd:33-38). MANDATORY regression test: granularity-4 and granularity-1 requests at identical (center, n) must produce DISTINCT cache entries on BOTH ends — a missed key (worst: client) silently aliases quarter data onto district slots with no error. Quarter derivation mode = Option B full reclassification at 512m spacing (design SS2), served through the same queue; per-request cell cap per the capped-density rule.', 'done', 'high', NULL, 'server', 'D-226', '2026-07-21 19:51:08.216', '2026-07-21 22:54:32.389', NULL, '425a3cfffcc90cc3563b1e8382466828', 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 ('06FRCEWBS5RC5YET0SMSPZ1E9W', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Chunked par_iter for build_district_window_layer', 'Zoom-ladder migration step 2 (docs/architecture/atlas-zoom-ladder-t1143.md SS8). build_district_window_layer''s cell loop (layer_proxy.rs:388) is serial today; parallelize with row/column chunked par_iter on the existing Rayon pool (the GenerationQueue already runs windows on Rayon — this parallelizes WITHIN a window). Needed before quarter windows: n=32-extent at quarter granularity is 16,384 cells (~20-23ms serial uncapped, design SS2 table). Determinism: chunk boundaries must not change output — cells are independent by construction (derive_at_metres is pure), assert with a serial-vs-parallel golden comparison.', 'done', 'medium', NULL, 'server', 'D-226', '2026-07-21 19:51:17.193', '2026-07-21 22:54:32.390', NULL, 'e9c9613ad25cfbe7762ecc8393d7ecf6', 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 ('06FRCEXHYP8RVBPB8QNZHTNTR0', 'story', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Derived planetary rung — progressive capped-density tiling; AtlasViewer heightmap texture retires', 'Zoom-ladder migration step 4 (docs/architecture/atlas-zoom-ladder-t1143.md SS4/SS8) under Jeroen''s carrier ruling (2026-07-21): the orbital view becomes fully derived output served as PROGRESSIVE CAPPED-DENSITY TILING on the generalized district_window carrier at coarse granularity (region-band octaves, region_baseline_at_district blend path — no invent_primitives at orbital wavelengths) — no dense raster wire shape, no tagged-envelope migration. Client: AtlasViewer''s direct heightmap-texture display path retires IN THE SAME CHANGE that the derived orbital view lands (never strand the view); heightmap PNGs/systems.db raster become invisible derivation input only (D-166 corollary; import_heightmaps stays as input storage). Carries design risks R1 (planetary cost story is stacked unmeasured extrapolations — measure first), R2 (stepped categorical fields at orbital scale), R5 (granularity param cannot express coarser-than-district — needs the enum/log-scale redesign before this rung). Blocked by the granularity carrier and derive_at_metres steps.', 'in_progress', 'high', NULL, 'server', 'D-226', '2026-07-21 19:51:26.966', '2026-07-22 08:00:52.300', NULL, '76b4f0da254fcfc6782fc8929ae09c61', 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 ('06FRCEZ47J16E3XKE957HGR8H4', 'story', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Continuous cursor-anchored zoom ladder in the client — rung selection, progressive refinement, seam zoom with full-zoom-out reset', 'Zoom-ladder migration step 5 (docs/architecture/atlas-zoom-ladder-t1143.md SS5/SS8) under Jeroen''s seam ruling (2026-07-21): wheel zoom is CONTINUOUS and CURSOR-ANCHORED from the orbital frame down through regional granularities (supersedes the click-through-only entry; D-013''s ''zoom gesture owns spatial descent'' restored for this seam), with the HARD CONDITION that a full zoom-out resets to the original canonical planetary frame and location (the fixed orbital framing is the ladder''s top rest state — no drifted pan state at the top). Rung-selection rule: sample spacing E/C (world extent per canvas px); request the coarsest rung whose spacing <= 2x(E/C). Progressive refinement: hold the coarse composite, fetch finer granularity, sharpen in place (Araminta SS6: no hue step, no layout jump, coastline stable across rungs — acceptance criteria in the doc). Request coalescing across zoom gestures; T-1138''s click-through + reticle retire in the same change. Encoding continuity per SS6 (one colorizer family; hue-average rule ties to the reclassification mode). Blocked by the granularity carrier; the planetary top rung can land before or after (degrade gracefully to current fixed orbital view).', 'in_progress', 'high', NULL, 'client', 'D-226', '2026-07-21 19:51:39.836', '2026-07-22 08:00:52.307', NULL, '604a735cc5c9629c6a06599ff0c7a9cf', 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);