From ffc24b7312aaee726cb4c73953d2a850dabb8ecc Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 22 Jul 2026 22:28:01 +0200 Subject: [PATCH] =?UTF-8?q?chore(meta):=20T-1162=20refinement=20resolution?= =?UTF-8?q?s=20=E2=80=94=20bench-baseline-first,=20window-derivation=20gol?= =?UTF-8?q?den=20as=20explicit=20scope,=20vegetation=20invention=20net-new?= =?UTF-8?q?=20mirroring=20coast=5Finvention?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- .pql/changelog/ticket_history/2026-07.sql | 7 +++++++ .pql/changelog/tickets/2026-07.sql | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/.pql/changelog/ticket_history/2026-07.sql b/.pql/changelog/ticket_history/2026-07.sql index 4cb8ca4b1..be8cfeac8 100644 --- a/.pql/changelog/ticket_history/2026-07.sql +++ b/.pql/changelog/ticket_history/2026-07.sql @@ -1684,3 +1684,10 @@ 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 ('06FRPCJ4KD6SB9TB8TH9SJH1E0', 'status', 'review', 'done', NULL, '2026-07-22 19:29:52', '2026-07-22 19:29:52.281', '2026-07-22 19:29:52.281', NULL, 'd56f979255d7655437b286362d412900', 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 ('06FRNAHD35YPZHJWMJCRZK62Z4', 'status', 'backlog', 'in_progress', NULL, '2026-07-22 20:24:43', '2026-07-22 20:24:43.745', '2026-07-22 20:24:43.745', NULL, '43b44fba8bd2305f8d2fbfab666c1f51', 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 ('06FRMPY76TYY76FSBV2Y5P8QHM', 'status', 'backlog', 'in_progress', NULL, '2026-07-22 20:24:43', '2026-07-22 20:24:43.752', '2026-07-22 20:24:43.752', NULL, '50ed7f47477b51cebebc4604d38cc94e', 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 ('06FRNAHD35YPZHJWMJCRZK62Z4', 'description', 'Jeroen, 2026-07-22, after first hands-on with the shipped ladder: ''zero detail on lower levels, just a green field, and the green-blue transition is a fade — it should be a more detailed coastline.'' Root cause confirmed by octave audit: the window classification consumes terrain_detail whose octaves span 32768-4096m (OCTAVE_WAVELENGTHS_M, detail_scatter.rs:33) and coast_invention whose warp octaves span 262144-16384m (WARP_OCTAVE_WAVELENGTHS_M, coast_invention.rs:56) — so at Quarter spacing (512m) the sampled field is genuinely smooth (~8 cells per finest terrain wave; ~32 per finest coast wave). The ladder''s TRANSPORT reaches 512m but its CONTENT floor is 4km/16km. The finer bands already exist (VOXEL_OCTAVE_WAVELENGTHS_M 1024-128m ''the rolling hills a walking character navigates by''; MOSAIC 64-8m) but feed only the Phase-5 voxel path — never the window derivation. Work: (a) extend coast_warp octaves below 16km down through quarter-visible wavelengths (bays/headlands/islets appearing as you zoom — THE headline visual ask) with min_wavelength_m cutoff discipline per rung; (b) feed the sub-district relief band into Quarter-rung classification (derive_at_metres already takes the cutoff — decide which bands activate per rung and re-bench; the T-1149 bench harness is the tool); (c) re-tune MIN_WL_BANDS_M to match the extended ladder; (d) determinism goldens updated deliberately (this CHANGES derived output — a golden-regeneration commit with rationale, not silent). Costs measured before merge per the T-1149 discipline. Visual acceptance: a coastal Quarter capture must show structurally more coastline detail than the same coast at District — the differentiation Araminta flagged as never yet demonstrated. Pairs with T-1161 (NEAREST at sparse rungs) — together these answer both of Jeroen''s specific complaints. + +SCOPE CLARIFICATION (Jeroen, 2026-07-22): the current aim is the NATURE layer — geo + wild growth — per D-166''s outside-in order; cities/settlements stay uncolored for now. This ticket''s octave extension therefore covers not just coast + relief but VEGETATION PATCHINESS as spatial content: forests as massifs at region scale resolving to distinct woods (district), copses and clearings (quarter), desert/steppe transitions as shapes — the invention fields (detail_scatter character/envelope) driving per-rung vegetation patterning in the BASE layer rather than uniform per-cell class tint. His words: ''even the nature layer should produce rivers, forests, copses, bushes, deserts, elevation.'' Rivers are T-1156''s nature half (see its re-scope); this ticket owns the continuous-field content (coastline, relief, vegetation/moisture patchiness).', 'Jeroen, 2026-07-22, after first hands-on with the shipped ladder: ''zero detail on lower levels, just a green field, and the green-blue transition is a fade — it should be a more detailed coastline.'' Root cause confirmed by octave audit: the window classification consumes terrain_detail whose octaves span 32768-4096m (OCTAVE_WAVELENGTHS_M, detail_scatter.rs:33) and coast_invention whose warp octaves span 262144-16384m (WARP_OCTAVE_WAVELENGTHS_M, coast_invention.rs:56) — so at Quarter spacing (512m) the sampled field is genuinely smooth (~8 cells per finest terrain wave; ~32 per finest coast wave). The ladder''s TRANSPORT reaches 512m but its CONTENT floor is 4km/16km. The finer bands already exist (VOXEL_OCTAVE_WAVELENGTHS_M 1024-128m ''the rolling hills a walking character navigates by''; MOSAIC 64-8m) but feed only the Phase-5 voxel path — never the window derivation. Work: (a) extend coast_warp octaves below 16km down through quarter-visible wavelengths (bays/headlands/islets appearing as you zoom — THE headline visual ask) with min_wavelength_m cutoff discipline per rung; (b) feed the sub-district relief band into Quarter-rung classification (derive_at_metres already takes the cutoff — decide which bands activate per rung and re-bench; the T-1149 bench harness is the tool); (c) re-tune MIN_WL_BANDS_M to match the extended ladder; (d) determinism goldens updated deliberately (this CHANGES derived output — a golden-regeneration commit with rationale, not silent). Costs measured before merge per the T-1149 discipline. Visual acceptance: a coastal Quarter capture must show structurally more coastline detail than the same coast at District — the differentiation Araminta flagged as never yet demonstrated. Pairs with T-1161 (NEAREST at sparse rungs) — together these answer both of Jeroen''s specific complaints. + +SCOPE CLARIFICATION (Jeroen, 2026-07-22): the current aim is the NATURE layer — geo + wild growth — per D-166''s outside-in order; cities/settlements stay uncolored for now. This ticket''s octave extension therefore covers not just coast + relief but VEGETATION PATCHINESS as spatial content: forests as massifs at region scale resolving to distinct woods (district), copses and clearings (quarter), desert/steppe transitions as shapes — the invention fields (detail_scatter character/envelope) driving per-rung vegetation patterning in the BASE layer rather than uniform per-cell class tint. His words: ''even the nature layer should produce rivers, forests, copses, bushes, deserts, elevation.'' Rivers are T-1156''s nature half (see its re-scope); this ticket owns the continuous-field content (coastline, relief, vegetation/moisture patchiness). + +REFINEMENT RESOLUTIONS (lead, 2026-07-22, from Si audit): (1) Bench baseline: none recorded anywhere — implementer runs server/tests/zoom_ladder_bench.rs (cargo test --release --test zoom_ladder_bench -- --ignored --nocapture) BEFORE any code change to establish the pre-change baseline, and again after; both sets of numbers go in the PR. (2) ''Goldens'' corrected: no golden file pins derive_at_metres/invent_primitives today (derivation_harness.json is voxel-chain; cascade_layer1.json is heightmap-river). Explicit scope: ADD a golden fixture for the window-derivation path (mirroring derivation_harness.rs''s pattern) so this and every future octave change gets a deliberate-regen commit discipline. (3) Vegetation patchiness confirmed NET-NEW, in scope (not split): today derive_vegetation (district_profile.rs:398-490) is pure per-cell classification with no positional field. Build the vegetation invention mechanism mirroring coast_invention.rs''s two-tier envelope+character model (Jeroen''s nature-first ruling is the direction; the tiered invention-field pattern is the established shape to imitate). Non-blocking notes: VOXEL octaves feeding Quarter classification does NOT conflict with D-226(d) — that ruling caps request granularity, not contributing wavelengths (coast warp already crosses scales the other way); MIN_WL_BANDS_M (layer_proxy.rs:415-421) needs new entries once the ladder extends, quantize_min_wl_m generalizes as-is.', NULL, '2026-07-22 20:27:10', '2026-07-22 20:27:10.426', '2026-07-22 20:27:10.426', NULL, '9c68eb51f80be06b8ba7236a1fed554c', 2) ON CONFLICT(hash) DO NOTHING; diff --git a/.pql/changelog/tickets/2026-07.sql b/.pql/changelog/tickets/2026-07.sql index 2711e250e..8064dc420 100644 --- a/.pql/changelog/tickets/2026-07.sql +++ b/.pql/changelog/tickets/2026-07.sql @@ -2473,3 +2473,8 @@ INSERT INTO tickets (record_id, type, parent_record_id, title, description, stat SCOPE CLARIFICATION (Jeroen, 2026-07-22): the current aim is the NATURE layer — geo + wild growth — per D-166''s outside-in order; cities/settlements stay uncolored for now. This ticket''s octave extension therefore covers not just coast + relief but VEGETATION PATCHINESS as spatial content: forests as massifs at region scale resolving to distinct woods (district), copses and clearings (quarter), desert/steppe transitions as shapes — the invention fields (detail_scatter character/envelope) driving per-rung vegetation patterning in the BASE layer rather than uniform per-cell class tint. His words: ''even the nature layer should produce rivers, forests, copses, bushes, deserts, elevation.'' Rivers are T-1156''s nature half (see its re-scope); this ticket owns the continuous-field content (coastline, relief, vegetation/moisture patchiness).', 'in_progress', 'high', NULL, 'server', 'D-226', '2026-07-22 16:30:36.314', '2026-07-22 20:24:43.745', NULL, '2db49e462687fc954e369b94f61f1e83', 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 ('06FRMPY76TYY76FSBV2Y5P8QHM', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Per-rung composite filter policy — NEAREST at sparse rungs, LINEAR where density earns it', 'PR #192 review (Araminta, follow-up): COMPOSITE_SMOOTH''s GPU bilinear stretch at Region rung reads as a near-featureless soft gradient at 204.8 km/cell (capture 02-region-mid.png) — technically honest LoD (interpolating BETWEEN real derived samples, letter-compliant with ''never magnified interpolation'') but visually indistinguishable from the coarse-composite-stretched experience the mandate was written to kill: the spirit is violated at sparse rungs. Implement a per-rung filter policy: crisp NEAREST at Region/orbital (the COMPOSITE_SMOOTH := false path already exists byte-compatible per the file''s own doc — make it per-rung runtime instead of compile-time), keep LINEAR at District/Quarter where cell density reads as texture rather than smoothing-over-absence. Araminta owns the rung-by-rung call — get her sign-off on which rungs get which filter (and whether the threshold should key on on-screen px-per-cell rather than rung identity). Supersedes the remaining half of the old T-1155 COMPOSITE_SMOOTH-retirement framing — reconcile with that ticket when picking this up.', 'in_progress', 'medium', NULL, 'client', 'D-226', '2026-07-22 15:04:58.422', '2026-07-22 20:24:43.752', NULL, '1fccf6d354c85047254ac68098a44822', 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 ('06FRNAHD35YPZHJWMJCRZK62Z4', 'story', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Extend deterministic invention octaves into the Atlas window path — coastline crinkle and terrain texture at rung scale', 'Jeroen, 2026-07-22, after first hands-on with the shipped ladder: ''zero detail on lower levels, just a green field, and the green-blue transition is a fade — it should be a more detailed coastline.'' Root cause confirmed by octave audit: the window classification consumes terrain_detail whose octaves span 32768-4096m (OCTAVE_WAVELENGTHS_M, detail_scatter.rs:33) and coast_invention whose warp octaves span 262144-16384m (WARP_OCTAVE_WAVELENGTHS_M, coast_invention.rs:56) — so at Quarter spacing (512m) the sampled field is genuinely smooth (~8 cells per finest terrain wave; ~32 per finest coast wave). The ladder''s TRANSPORT reaches 512m but its CONTENT floor is 4km/16km. The finer bands already exist (VOXEL_OCTAVE_WAVELENGTHS_M 1024-128m ''the rolling hills a walking character navigates by''; MOSAIC 64-8m) but feed only the Phase-5 voxel path — never the window derivation. Work: (a) extend coast_warp octaves below 16km down through quarter-visible wavelengths (bays/headlands/islets appearing as you zoom — THE headline visual ask) with min_wavelength_m cutoff discipline per rung; (b) feed the sub-district relief band into Quarter-rung classification (derive_at_metres already takes the cutoff — decide which bands activate per rung and re-bench; the T-1149 bench harness is the tool); (c) re-tune MIN_WL_BANDS_M to match the extended ladder; (d) determinism goldens updated deliberately (this CHANGES derived output — a golden-regeneration commit with rationale, not silent). Costs measured before merge per the T-1149 discipline. Visual acceptance: a coastal Quarter capture must show structurally more coastline detail than the same coast at District — the differentiation Araminta flagged as never yet demonstrated. Pairs with T-1161 (NEAREST at sparse rungs) — together these answer both of Jeroen''s specific complaints. + +SCOPE CLARIFICATION (Jeroen, 2026-07-22): the current aim is the NATURE layer — geo + wild growth — per D-166''s outside-in order; cities/settlements stay uncolored for now. This ticket''s octave extension therefore covers not just coast + relief but VEGETATION PATCHINESS as spatial content: forests as massifs at region scale resolving to distinct woods (district), copses and clearings (quarter), desert/steppe transitions as shapes — the invention fields (detail_scatter character/envelope) driving per-rung vegetation patterning in the BASE layer rather than uniform per-cell class tint. His words: ''even the nature layer should produce rivers, forests, copses, bushes, deserts, elevation.'' Rivers are T-1156''s nature half (see its re-scope); this ticket owns the continuous-field content (coastline, relief, vegetation/moisture patchiness). + +REFINEMENT RESOLUTIONS (lead, 2026-07-22, from Si audit): (1) Bench baseline: none recorded anywhere — implementer runs server/tests/zoom_ladder_bench.rs (cargo test --release --test zoom_ladder_bench -- --ignored --nocapture) BEFORE any code change to establish the pre-change baseline, and again after; both sets of numbers go in the PR. (2) ''Goldens'' corrected: no golden file pins derive_at_metres/invent_primitives today (derivation_harness.json is voxel-chain; cascade_layer1.json is heightmap-river). Explicit scope: ADD a golden fixture for the window-derivation path (mirroring derivation_harness.rs''s pattern) so this and every future octave change gets a deliberate-regen commit discipline. (3) Vegetation patchiness confirmed NET-NEW, in scope (not split): today derive_vegetation (district_profile.rs:398-490) is pure per-cell classification with no positional field. Build the vegetation invention mechanism mirroring coast_invention.rs''s two-tier envelope+character model (Jeroen''s nature-first ruling is the direction; the tiered invention-field pattern is the established shape to imitate). Non-blocking notes: VOXEL octaves feeding Quarter classification does NOT conflict with D-226(d) — that ruling caps request granularity, not contributing wavelengths (coast warp already crosses scales the other way); MIN_WL_BANDS_M (layer_proxy.rs:415-421) needs new entries once the ladder extends, quantize_min_wl_m generalizes as-is.', 'in_progress', 'high', NULL, 'server', 'D-226', '2026-07-22 16:30:36.314', '2026-07-22 20:27:10.426', NULL, '8214e16a3533672f9be060e37410d066', 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);