chore(meta): T-1163 — cold-launch starvation bug (ladder-cold-start branch, in review)
This commit is contained in:
@@ -1680,3 +1680,4 @@ SCOPE CLARIFICATION (Jeroen, 2026-07-22): the current aim is the NATURE layer
|
||||
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 ('06FRJD57678SVWD7XTSV9E3MSW', 'description', '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.', '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.', NULL, '2026-07-22 16:32:58', '2026-07-22 16:32:58.189', '2026-07-22 16:32:58.189', NULL, '9eb8e20a198920c024087e6153d4806b', 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 ('06FRPCJ4KD6SB9TB8TH9SJH1E0', 'status', 'backlog', 'review', NULL, '2026-07-22 18:59:22', '2026-07-22 18:59:22.418', '2026-07-22 18:59:22.418', NULL, 'ec51e983461658e7857f3c04a1ff73e5', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
|
||||
@@ -76,3 +76,4 @@ 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 ('06FRMPWFRCD3M8282XJ01YWGX0', 'T-1160', '2026-07-22 15:04:44.232', '2026-07-22 15:04:44.232', NULL, 'fb6d20324a3066484b3ec1ab3a9c62c6', 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 ('06FRMPY76TYY76FSBV2Y5P8QHM', 'T-1161', '2026-07-22 15:04:58.422', '2026-07-22 15:04:58.422', NULL, '57dc57abf66f677ff9014a71f7e42135', 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 ('06FRNAHD35YPZHJWMJCRZK62Z4', 'T-1162', '2026-07-22 16:30:36.394', '2026-07-22 16:30:36.394', NULL, 'ae1e4ce6b54ab340579241e6ac250865', 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 ('06FRPCJ4KD6SB9TB8TH9SJH1E0', 'T-1163', '2026-07-22 18:59:15.230', '2026-07-22 18:59:15.230', NULL, '0da68cd5428c1d43b8f1c542d1cc3506', 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);
|
||||
|
||||
@@ -2463,3 +2463,5 @@ SCOPE CLARIFICATION (Jeroen, 2026-07-22): the current aim is the NATURE layer
|
||||
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.', 'backlog', 'high', NULL, 'client', 'D-226', '2026-07-22 09:42:37.105', '2026-07-22 16:32:58.189', NULL, '0e72ac69b0183e078d966b92aa6cf5be', 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 ('06FRPCJ4KD6SB9TB8TH9SJH1E0', 'bug', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Cold first launch starves: whole-response Pending never reaches the retry path', 'Jeroen''s make atlas launch showed a black map zooming into any body. Root cause (after four disproven theories, each killed by verification): a stone-cold body answers the first window request with whole-response status Pending (only the whole-body cache-hit branch sets Ready — layer_proxy.rs serve path), and atlas_window_request.gd on_response()''s first check (status != Ready -> return) swallowed it before the retry machinery could run — retries frozen at 0 forever, DERIVING state never resolves. Second connections worked by luck (first connection''s request warms the whole-body cache -> Ready -> healthy path), which also masked the bug in every warm-server verification drive. Affected BOTH tile-mosaic and single-window first descents. Fix (branch ladder-cold-start): status-first branching per the atlas_generation_proxy reference shape (Pending -> retry; NotFound/Error -> immediate give-up, replacing the elapsed-retries ceiling), deterministic exponential backoff + per-tile stagger, wire-accurate regressions through the real fan-out plus single-window mirrors, Dudley''s connection-zero bridge_tcp pin, self-healing tile repaint, ImplantApp re-entry guard + immediate-free panel clears, legend re-fit, visible DERIVING TERRAIN state, and make atlas moving to a RELEASE server via SR_SERVER_BIN. Cold acceptance verified live: first connection, fresh release server — DERIVING at 2s, terrain painting tile-by-tile by 5s, all six tiles converged, legend one-legend-tall.', 'backlog', 'critical', NULL, 'client', 'D-226', '2026-07-22 18:59:15.227', '2026-07-22 18:59:15.227', NULL, '413332e77799ba02262b7f18849d4add', 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 ('06FRPCJ4KD6SB9TB8TH9SJH1E0', 'bug', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Cold first launch starves: whole-response Pending never reaches the retry path', 'Jeroen''s make atlas launch showed a black map zooming into any body. Root cause (after four disproven theories, each killed by verification): a stone-cold body answers the first window request with whole-response status Pending (only the whole-body cache-hit branch sets Ready — layer_proxy.rs serve path), and atlas_window_request.gd on_response()''s first check (status != Ready -> return) swallowed it before the retry machinery could run — retries frozen at 0 forever, DERIVING state never resolves. Second connections worked by luck (first connection''s request warms the whole-body cache -> Ready -> healthy path), which also masked the bug in every warm-server verification drive. Affected BOTH tile-mosaic and single-window first descents. Fix (branch ladder-cold-start): status-first branching per the atlas_generation_proxy reference shape (Pending -> retry; NotFound/Error -> immediate give-up, replacing the elapsed-retries ceiling), deterministic exponential backoff + per-tile stagger, wire-accurate regressions through the real fan-out plus single-window mirrors, Dudley''s connection-zero bridge_tcp pin, self-healing tile repaint, ImplantApp re-entry guard + immediate-free panel clears, legend re-fit, visible DERIVING TERRAIN state, and make atlas moving to a RELEASE server via SR_SERVER_BIN. Cold acceptance verified live: first connection, fresh release server — DERIVING at 2s, terrain painting tile-by-tile by 5s, all six tiles converged, legend one-legend-tall.', 'review', 'critical', NULL, 'client', 'D-226', '2026-07-22 18:59:15.227', '2026-07-22 18:59:22.418', NULL, '624cfd2b92d5dfdaf4626b47b160525e', 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