chore(meta): T-1156 wave-1 design pass captured — T-1168 riparian forward contract, T-1169 labels split-out, T-1170 river-course invention (all gated behind wave 1)
Tyre's carrier ruling: rivers ride the EXISTING whole-body layer1 field (no new wire field, neither ceiling touched); per-rung refinement is client-side class filtering (river_class quantized from flow accumulation — the one additive server change); discrete-geometry-vs- continuous-field carrier rule established for wave 2. D-226 note added on the rivers-ladder branch. Si's audit: skeleton is 512x256 heightmap- resolution dot data (~76 km/cell) — planetary courses real now, sub- heightmap course geometry named as T-1170, labels split to T-1169 (three dormant pieces, not free). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -15,3 +15,5 @@ INSERT INTO ticket_deps (blocker_record_id, blocked_record_id, created_at, updat
|
||||
INSERT INTO ticket_deps (blocker_record_id, blocked_record_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FRCEV8Q32C2FW9Y6733419DG', '06FRCEZ47J16E3XKE957HGR8H4', '2026-07-21 19:52:15.524', '2026-07-21 19:52:15.524', NULL, '749185b876df0bc1758535d970fa3a67', 2) ON CONFLICT(blocker_record_id, blocked_record_id) DO UPDATE SET updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > ticket_deps.updated_at OR (excluded.updated_at = ticket_deps.updated_at AND excluded.hash > ticket_deps.hash);
|
||||
INSERT INTO ticket_deps (blocker_record_id, blocked_record_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FRCET0RKD7ED9D9RY5Q99RQG', '06FRCF0CX1Y5DTD3ER2JCDT27G', '2026-07-21 19:52:17.706', '2026-07-21 19:52:17.706', NULL, 'cce3ac218e31cd193fc1815f2d86bf3b', 2) ON CONFLICT(blocker_record_id, blocked_record_id) DO UPDATE SET updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > ticket_deps.updated_at OR (excluded.updated_at = ticket_deps.updated_at AND excluded.hash > ticket_deps.hash);
|
||||
INSERT INTO ticket_deps (blocker_record_id, blocked_record_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FRCEZ47J16E3XKE957HGR8H4', '06FRCF1A0K41K6S85X0HTXACHM', '2026-07-21 19:52:17.907', '2026-07-21 19:52:17.907', NULL, 'd01687ee1d1ae90d4deff2dede04cd47', 2) ON CONFLICT(blocker_record_id, blocked_record_id) DO UPDATE SET updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > ticket_deps.updated_at OR (excluded.updated_at = ticket_deps.updated_at AND excluded.hash > ticket_deps.hash);
|
||||
INSERT INTO ticket_deps (blocker_record_id, blocked_record_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FRJD57678SVWD7XTSV9E3MSW', '06FRV224PD3NMWKR1AAC0J0D58', '2026-07-23 05:52:32.863', '2026-07-23 05:52:32.863', NULL, '82d45a9df84bc505496deee667c9ee1c', 2) ON CONFLICT(blocker_record_id, blocked_record_id) DO UPDATE SET updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > ticket_deps.updated_at OR (excluded.updated_at = ticket_deps.updated_at AND excluded.hash > ticket_deps.hash);
|
||||
INSERT INTO ticket_deps (blocker_record_id, blocked_record_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FRJD57678SVWD7XTSV9E3MSW', '06FRV2GT1FQVATWX641KY9K66C', '2026-07-23 05:54:30.767', '2026-07-23 05:54:30.767', NULL, 'fce045ecebed0a640b95cc17f7f130f3', 2) ON CONFLICT(blocker_record_id, blocked_record_id) DO UPDATE SET updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > ticket_deps.updated_at OR (excluded.updated_at = ticket_deps.updated_at AND excluded.hash > ticket_deps.hash);
|
||||
|
||||
@@ -81,3 +81,6 @@ INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_
|
||||
INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FRPEJ6TVFXRBEZPSP40677G4', 'T-1165', '2026-07-22 19:08:00.091', '2026-07-22 19:08:00.091', NULL, '864a7d91fd2fbc7ca277a1ae9fc8c833', 2) ON CONFLICT(record_id) DO UPDATE SET ticket_id=excluded.ticket_id, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > ticket_idmap.updated_at OR (excluded.updated_at = ticket_idmap.updated_at AND excluded.hash > ticket_idmap.hash);
|
||||
INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FRPF77A790HCWZH78AVZ7T8M', 'T-1166', '2026-07-22 19:10:52.247', '2026-07-22 19:10:52.247', NULL, '78091c0dc323d292ca54c95963de61e6', 2) ON CONFLICT(record_id) DO UPDATE SET ticket_id=excluded.ticket_id, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > ticket_idmap.updated_at OR (excluded.updated_at = ticket_idmap.updated_at AND excluded.hash > ticket_idmap.hash);
|
||||
INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FRQ9J882SWNAWV87YV393V78', 'T-1167', '2026-07-22 21:05:58.342', '2026-07-22 21:05:58.342', NULL, 'b5a4200093aa4a64c1d3bb252450451d', 2) ON CONFLICT(record_id) DO UPDATE SET ticket_id=excluded.ticket_id, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > ticket_idmap.updated_at OR (excluded.updated_at = ticket_idmap.updated_at AND excluded.hash > ticket_idmap.hash);
|
||||
INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FRV224PD3NMWKR1AAC0J0D58', 'T-1168', '2026-07-23 05:52:25.781', '2026-07-23 05:52:25.781', NULL, '0b6f4cb70be12efe2cdd064e072ee273', 2) ON CONFLICT(record_id) DO UPDATE SET ticket_id=excluded.ticket_id, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > ticket_idmap.updated_at OR (excluded.updated_at = ticket_idmap.updated_at AND excluded.hash > ticket_idmap.hash);
|
||||
INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FRV2EV5QK4BCZ1P9H85JH2YM', 'T-1169', '2026-07-23 05:54:09.837', '2026-07-23 05:54:09.837', NULL, '68194c5bac9558bb7f9d61936c42c1c7', 2) ON CONFLICT(record_id) DO UPDATE SET ticket_id=excluded.ticket_id, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > ticket_idmap.updated_at OR (excluded.updated_at = ticket_idmap.updated_at AND excluded.hash > ticket_idmap.hash);
|
||||
INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FRV2GT1FQVATWX641KY9K66C', 'T-1170', '2026-07-23 05:54:25.931', '2026-07-23 05:54:25.931', NULL, 'bbdc7daac4778f9fc7ba751e3bb50a57', 2) ON CONFLICT(record_id) DO UPDATE SET ticket_id=excluded.ticket_id, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > ticket_idmap.updated_at OR (excluded.updated_at = ticket_idmap.updated_at AND excluded.hash > ticket_idmap.hash);
|
||||
|
||||
@@ -2498,3 +2498,6 @@ CANCELLED 2026-07-22 (PR #194 merge): superseded by T-1161''s two-axes outcome
|
||||
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 ('06FRJD57678SVWD7XTSV9E3MSW', 'story', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Port whole-body Atlas overlays onto the zoom ladder (markers, city sidebar, POL/POP/gen overlays)', 'T-1153/T-1152 retired the AtlasViewer heightmap screen as the atlas entry; its 17-entry overlay surface did NOT carry to the Region-rung ladder view (AtlasWindowViewer has only gen_dw_temp/moisture/veg). Deferred wholesale by Stig with rationale: these overlays key off markers.json/city-names/road-graph/settlement data the DistrictWindowLayer wire shape does not carry — porting is a per-overlay design + wire question (at what rung does a settlement marker fade in? does POL make sense over a Region composite?), not a mechanical copy. Deferred set: city markers + click-to-inspect city data sidebar; roads/rail/settlements/quarter-footprint generation overlays (gen_l1_rivers/basins/attractors, gen_district, gen_l2_roads, gen_l3_settlements, gen_region_grid, gen_l4_quarters); political zones, population density, corp presence, production/stockpile toggles, gate markers, named features. The retired code survives intact and unreachable on atlas_viewer.gd — reuse it or retire it explicitly per overlay. Needs Araminta (per-rung affordance/fade rules) + Tyre/Dudley (which overlays need new wire fields vs client-side joins). Until this lands the ladder view is terrain-only — a real capability regression vs the old planetary screen, accepted knowingly in the T-1152/T-1153 batch.
|
||||
|
||||
RE-SCOPED (Jeroen, 2026-07-22): ''we are aiming for not coloring in the cities at the moment — the nature layer (geo and wild growth) first,'' matching D-166''s outside-in order. SPLIT this ticket''s overlay set into two waves. WAVE 1 (this ticket, promoted): the NATURE overlays — gen_l1_rivers/basins/attractors onto the ladder (rivers as per-rung refining features: trunk rivers at Region, tributaries at District, streams at Quarter — the wire/derivation question of serving river skeletons windowed is the real work), plus named natural features (rivers/oceans/ranges labels) if cheap. WAVE 2 (deferred until the nature layer stands, per Jeroen): everything civilizational — city markers + sidebar, settlements/quarters footprints, roads/rail, POL/POP/CRP/gate markers. Do not port wave 2 with wave 1.', 'in_progress', 'high', NULL, 'client', 'D-226', '2026-07-22 09:42:37.105', '2026-07-23 05:48:12.595', NULL, '5b0b8014cddb6e4526b314bbb4d6fd82', 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 ('06FRV224PD3NMWKR1AAC0J0D58', 'story', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Thread drainage skeleton into derive_at_metres as per-cell riparian signal (near_perennial_water)', 'derive_at_metres (district_profile.rs:1461-1469) hardcodes near_perennial_water = false into derive_vegetation, so district/quarter windows cannot render riparian bands (RiparianScrub/RiparianThicket) or the hyper-arid micro-oasis (:421) even where a trunk river crosses the cell. After T-1156 puts rivers on the ladder, this surfaces as a visible mismatch: a drawn river over vegetation painted barren. Fix: thread the Layer-1 river-cell set into the window derive and compute per-cell near_perennial_water as a ''within riparian-band distance of a river cell'' test. Rivers sample the drainage GEOGRAPHY; vegetation''s moisture influence rides T-1162''s perturbed moisture_q — never a re-derivation of base moisture (forward contract from T-1156 wave-1 ruling 3, Tyre 2026-07-23). Re-pin the believability/derivation golden harnesses. Gated: not wave 1.', 'backlog', 'medium', NULL, 'server', 'D-226', '2026-07-23 05:52:25.779', '2026-07-23 05:52:25.779', NULL, '6906c3392598a731e3587ec7b5efd3c1', 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 ('06FRV2EV5QK4BCZ1P9H85JH2YM', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Natural-feature name labels on the ladder (wire attach_feature_names, populate atlas_feature_names, feature-names proxy)', 'T-1156 wave 1''s ''labels if cheap'' clause, split out after Si''s audit (2026-07-23): cheap but not free — three dormant pieces exist and nothing connects them. (1) layer1::attach_feature_names (layer1.rs:213-262) is unit-tested with zero production callers — wire it into run_layer1''s call path with name pools; (2) atlas_feature_names (systems-schema.sql:537-544) is created-but-never-populated — add the INSERT step at regen time from the D-223 names-only markers.json pools, mirroring populate_atlas_city_names (generator change: import_economics/atlas.py — watchlist/regen-db implications); (3) add a feature-names read proxy mirroring atlas_data_proxy.rs handle_city_names_request (D-236 pattern — its own message type, outside the AtlasLayerResponse ceilings) + client label draw on the ladder (the retired _draw_named_features at atlas_marker_overlay.gd:239-264 reads the pre-D-223 dict shape and would silently no-op — rewrite, don''t reactivate).', 'backlog', 'low', NULL, 'server', 'D-226', '2026-07-23 05:54:09.837', '2026-07-23 05:54:09.837', NULL, 'db3934783e20d14abbcc124d911d5d5f', 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 ('06FRV2GT1FQVATWX641KY9K66C', 'story', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Invent river courses below heightmap resolution — deterministic warped polylines between D8 cells', 'Named experience gap from T-1156 wave 1 (Si audit + lead, 2026-07-23): the D8 river skeleton lives at heightmap working-grid resolution (512x256 — ~76.6 km per river cell on Lendel). Wave 1''s per-rung class filtering makes planetary/Region river courses real, but at District (2 km cells, ~65 km window) and Quarter the geometry is SPARSER THAN THE WINDOW — a window typically contains zero or one river cell, so ''tributaries at District, streams at Quarter'' cannot materialize as visible courses from the stored skeleton alone. The fix is the linear-feature analog of T-1162''s coast crinkle: deterministically INVENT river course geometry between/below D8 cells — domain-warped polyline interpolation between adjacent river cells (seeded per body+cell pair, D-227 discipline, elevation-aware so courses prefer invented-terrain valleys where feasible), refining with rung the same way the coast warp refines the coastline. Also the natural home for reconciling rivers with T-1162''s invented relief (a wave-1 known gap: drawn rivers may cross invented hills — acceptable at 76 km dot spacing, glaring once courses are continuous). Depends on wave 1''s carrier (river_class on RiverNetwork) landing first.', 'backlog', 'medium', NULL, 'server', 'D-227', '2026-07-23 05:54:25.931', '2026-07-23 05:54:25.931', NULL, 'cd2fad68b3f4b4c85c7f5676bbdd9366', 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