chore(meta): close nature-first batch — T-1162/T-1161 done (PR #194 merged, triple review), T-1155 cancelled as superseded
Tyre APPROVE after one fix round (I1 rung-floor dependency direction implemented as his stronger ask + drift guard; I2 comment cites; I3 governance captures in his exact text; I4 golden body coverage; all non-blocking follow-ups swept, none parked). Hoshe APPROVE (empirical revert checks; his one nit refuted with the diff hunk and formally retracted). Araminta APPROVED the T-1161 acceptance captures. Cold eyeball re-verified on MERGED main (.cache/screenshots/nature-octaves- main/): Region NEAREST crisp, Quarter coast crinkle intact, filters runtime-verified. T-1155 cancelled: superseded by T-1161's two-axes outcome per Tyre's Q4 ruling. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1693,3 +1693,9 @@ SCOPE CLARIFICATION (Jeroen, 2026-07-22): the current aim is the NATURE layer
|
||||
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;
|
||||
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', 'in_progress', 'review', NULL, '2026-07-22 21:12:56', '2026-07-22 21:12:56.083', '2026-07-22 21:12:56.083', NULL, 'de22bdfa1dc98f8ff39accf77465af08', 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', 'in_progress', 'review', NULL, '2026-07-22 21:12:56', '2026-07-22 21:12:56.086', '2026-07-22 21:12:56.086', NULL, '3f36b034fae900e91aae07591e26f2fd', 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', 'review', 'done', NULL, '2026-07-22 21:39:18', '2026-07-22 21:39:18.433', '2026-07-22 21:39:18.433', NULL, '1ba2e86c9a7fd8b4c96c483bf15059c5', 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', 'review', 'done', NULL, '2026-07-22 21:39:18', '2026-07-22 21:39:18.440', '2026-07-22 21:39:18.440', NULL, '5d5bceae118f89658b766b1960ccddc5', 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 ('06FRCF1A0K41K6S85X0HTXACHM', 'status', 'backlog', 'cancelled', NULL, '2026-07-22 21:39:18', '2026-07-22 21:39:18.463', '2026-07-22 21:39:18.463', NULL, '57a833d67fd2d02aea02a9d87fe5a46e', 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 ('06FRCF1A0K41K6S85X0HTXACHM', 'description', 'Zoom-ladder migration step 6 (docs/architecture/atlas-zoom-ladder-t1143.md SS8). The linear-filter interim (atlas_window_overlay.gd:60, T-1145) retires once granularity-4 quarter windows are the default at close zoom — real classified quarter cells replace GPU bilinear smoothing as the source of sub-district texture (Jeroen''s ruling: smoothing was never the destination). Remove the compile-time const and the crisp/smooth dual path; keep one render path. Blocked by the client zoom ladder.', 'Zoom-ladder migration step 6 (docs/architecture/atlas-zoom-ladder-t1143.md SS8). The linear-filter interim (atlas_window_overlay.gd:60, T-1145) retires once granularity-4 quarter windows are the default at close zoom — real classified quarter cells replace GPU bilinear smoothing as the source of sub-district texture (Jeroen''s ruling: smoothing was never the destination). Remove the compile-time const and the crisp/smooth dual path; keep one render path. Blocked by the client zoom ladder.
|
||||
|
||||
CANCELLED 2026-07-22 (PR #194 merge): superseded by T-1161''s two-axes outcome — COMPOSITE_SMOOTH survives as the compile-time pipeline axis (crisp draw_rect path kept for debug/compare); the crispness-at-sparse-rungs requirement is delivered by the per-rung sampling-filter policy (_filter_for_granularity_v2) instead of deleting the const. Design doc §8 step 6 errata''d + D-226 filter-axis note added in the same PR. No partial version of this ticket survives that outcome (Si audit + Tyre''s Q4 ruling agree: close-both, not do-first).', NULL, '2026-07-22 21:39:25', '2026-07-22 21:39:25.586', '2026-07-22 21:39:25.586', NULL, 'a0b8ff87488ca33009bff81f18ff0689', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
|
||||
@@ -2485,3 +2485,13 @@ SCOPE CLARIFICATION (Jeroen, 2026-07-22): the current aim is the NATURE layer
|
||||
|
||||
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.', 'review', 'high', NULL, 'server', 'D-226', '2026-07-22 16:30:36.314', '2026-07-22 21:12:56.083', NULL, '23b7115954f41d981596fc7808db7913', 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.', 'review', 'medium', NULL, 'client', 'D-226', '2026-07-22 15:04:58.422', '2026-07-22 21:12:56.086', NULL, '46a96cf3fdb3f1e820a1e0d1a077e5b1', 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.', 'done', 'high', NULL, 'server', 'D-226', '2026-07-22 16:30:36.314', '2026-07-22 21:39:18.433', NULL, '2db5e32429126f1d835884b43d1e94ec', 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.', 'done', 'medium', NULL, 'client', 'D-226', '2026-07-22 15:04:58.422', '2026-07-22 21:39:18.440', NULL, '29bb249967f8226bb7b5fbcd0c0de20a', 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 ('06FRCF1A0K41K6S85X0HTXACHM', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Retire COMPOSITE_SMOOTH once quarter windows are default at close zoom', 'Zoom-ladder migration step 6 (docs/architecture/atlas-zoom-ladder-t1143.md SS8). The linear-filter interim (atlas_window_overlay.gd:60, T-1145) retires once granularity-4 quarter windows are the default at close zoom — real classified quarter cells replace GPU bilinear smoothing as the source of sub-district texture (Jeroen''s ruling: smoothing was never the destination). Remove the compile-time const and the crisp/smooth dual path; keep one render path. Blocked by the client zoom ladder.', 'cancelled', 'low', NULL, 'client', 'D-226', '2026-07-21 19:51:57.700', '2026-07-22 21:39:18.463', NULL, '5c4a13b7989afea19a37dd187b2ac474', 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 ('06FRCF1A0K41K6S85X0HTXACHM', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Retire COMPOSITE_SMOOTH once quarter windows are default at close zoom', 'Zoom-ladder migration step 6 (docs/architecture/atlas-zoom-ladder-t1143.md SS8). The linear-filter interim (atlas_window_overlay.gd:60, T-1145) retires once granularity-4 quarter windows are the default at close zoom — real classified quarter cells replace GPU bilinear smoothing as the source of sub-district texture (Jeroen''s ruling: smoothing was never the destination). Remove the compile-time const and the crisp/smooth dual path; keep one render path. Blocked by the client zoom ladder.
|
||||
|
||||
CANCELLED 2026-07-22 (PR #194 merge): superseded by T-1161''s two-axes outcome — COMPOSITE_SMOOTH survives as the compile-time pipeline axis (crisp draw_rect path kept for debug/compare); the crispness-at-sparse-rungs requirement is delivered by the per-rung sampling-filter policy (_filter_for_granularity_v2) instead of deleting the const. Design doc §8 step 6 errata''d + D-226 filter-axis note added in the same PR. No partial version of this ticket survives that outcome (Si audit + Tyre''s Q4 ruling agree: close-both, not do-first).', 'cancelled', 'low', NULL, 'client', 'D-226', '2026-07-21 19:51:57.700', '2026-07-22 21:39:25.586', NULL, 'a6846cbfe866f51e747288980df54215', 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);
|
||||
|
||||
Reference in New Issue
Block a user