chore(meta): changelog + pql — batch 7 closed (T-1116 done via PR #215; T-1207 Wave-2 overlays filed)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3134,3 +3134,7 @@ 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 ('06FSP7HT5ES8D83VZA6ETACRAW', 'status', 'in_progress', 'review', NULL, '2026-07-26 10:55:32', '2026-07-26 10:55:32.378', '2026-07-26 10:55:32.378', NULL, '77078d2928d2421bb00ca4e4dcc49faa', 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 ('06FSP7HT5ES8D83VZA6ETACRAW', 'status', 'review', 'done', NULL, '2026-07-26 11:04:45', '2026-07-26 11:04:45.800', '2026-07-26 11:04:45.800', NULL, '2b689e1630b210f11ed9686a9e71a913', 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 ('06FPPM0KP850FN6WQ5PDEX9ZS4', 'status', 'in_progress', 'review', NULL, '2026-07-26 11:05:39', '2026-07-26 11:05:39.748', '2026-07-26 11:05:39.748', NULL, '5142f5aa2521703fbb4e3500a1f59079', 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 ('06FPPM0KP850FN6WQ5PDEX9ZS4', 'description', 'Found during T-1076 (road-hub refinement) verification: several real bodies (GJ251c, GJ380c) produce 0 routable road edges because settlement placements land in water-majority routing cells, so every A* pair is dropped. PRE-EXISTING behavior (T-1038''s core had the same drop path) but now more visible with hub/spur semantics and on the Atlas road overlay. Candidate fixes per Dudley: coastal-cell routing relaxation (allow routing through coast-adjacent cells at a cost penalty) or a placement nudge (settlements snap out of water-majority cells at L3). Affects the Atlas planet-browsing experience directly: water-heavy bodies show settlements but no roads.', 'Found during T-1076 (road-hub refinement) verification: several real bodies (GJ251c, GJ380c) produce 0 routable road edges because settlement placements land in water-majority routing cells, so every A* pair is dropped. PRE-EXISTING behavior (T-1038''s core had the same drop path) but now more visible with hub/spur semantics and on the Atlas road overlay. Candidate fixes per Dudley: coastal-cell routing relaxation (allow routing through coast-adjacent cells at a cost penalty) or a placement nudge (settlements snap out of water-majority cells at L3). Affects the Atlas planet-browsing experience directly: water-heavy bodies show settlements but no roads.
|
||||
|
||||
Merge verification note (2026-07-26): the planned before/after road-overlay eyeball was correctly ABORTED by the capture agent — post-D-255 there is NO client roads rendering on either side (StepCanvasAnnotationLayer draws courses+settlements only; the old road overlay died with AtlasWindowViewer; roads are Wave 2 of T-1156''s overlay port, deferred by Jeroen''s 2026-07-22 nature-first ruling, now ticketed as T-1207 since the closed T-1156 carried the deferral only in prose). A capture would have shown two identical frames and misrepresented the fix. Verification therefore stands on the failing-first real-body tests through the real cascade entry point (GJ251c 0->2 edges, GJ380c 0->1, determinism pinned, goldens unaffected) — the fix is data-layer-complete and becomes player-visible when T-1207 lands; GJ251c/GJ380c are its ready-made verification bodies. This ticket''s own ''Affects the Atlas planet-browsing experience directly'' line described the pre-D-255 world and is superseded by the above.', NULL, '2026-07-26 11:39:19', '2026-07-26 11:39:19.352', '2026-07-26 11:39:19.352', NULL, '916b2baea92ac54608d40fec1bd24b51', 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 ('06FPPM0KP850FN6WQ5PDEX9ZS4', 'status', 'review', 'done', NULL, '2026-07-26 11:39:59', '2026-07-26 11:39:59.051', '2026-07-26 11:39:59.051', NULL, 'aa19592b8c7e49b8b08493a5e37a3c37', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
|
||||
@@ -5312,3 +5312,10 @@ 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 ('06FSP7HT5ES8D83VZA6ETACRAW', 'story', '06FB0TNSRXDCJS4P9Z5JQ1DAAM', 'Furniture/props asset production', 'Per-class production story (T-1049 breakdown, batch 6). Brief: docs/assets/briefs/furniture-props.md — interior furniture + small props (manifest categories furniture|props), D-257 toon treatment, conventions.md naming/mask/footprint_tiles rules. FIRST acceptance: promote + rename the 4 promotable spike GLBs (baroque_table, modernist_chair, scifi_desk + props/lion_statue) into client/assets/models/ + manifest.json per D-241 — no new generation needed; vw_beetle stays excluded (Q-067 car deferral, see briefs/deferred.md). Note: spike GLB binaries are gitignored — regenerate or restore locally at promotion time per the spike README.', 'done', 'medium', 'justine', 'visual', NULL, '2026-07-25 21:11:17.291', '2026-07-26 11:04:45.800', NULL, '1c43a93489231cdc6de78c332629c085', 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 ('06FPPM0KP850FN6WQ5PDEX9ZS4', 'bug', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Road graph: 0 routable edges on water-heavy bodies — placements land in water-majority routing cells, every A* pair drops', 'Found during T-1076 (road-hub refinement) verification: several real bodies (GJ251c, GJ380c) produce 0 routable road edges because settlement placements land in water-majority routing cells, so every A* pair is dropped. PRE-EXISTING behavior (T-1038''s core had the same drop path) but now more visible with hub/spur semantics and on the Atlas road overlay. Candidate fixes per Dudley: coastal-cell routing relaxation (allow routing through coast-adjacent cells at a cost penalty) or a placement nudge (settlements snap out of water-majority cells at L3). Affects the Atlas planet-browsing experience directly: water-heavy bodies show settlements but no roads.', 'review', 'medium', 'dudley', 'server', NULL, '2026-07-16 14:23:57.874', '2026-07-26 11:05:39.747', NULL, '1252d97642a956cfc7ac7c09bd2f3cf2', 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 ('06FSWCYA60VHFK44J09WW78FY0', 'bug', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Synthetic-overflow settlement placement has no ocean-mask guard — can land in open water', 'Found during the PR #215 review fix round (T-1116, Tyre finding 3 follow-through): attractor_matching.rs::synthetic_attractor (the D-211 Phase-4 overflow path, PlainCenter at min-spacing) takes no heightmap/TerrainAnalysis argument — it derives positions by pure grid arithmetic (grid_h/2, grid_w/4, spacing-walk) with zero ocean_mask check. Every EXTRACTED attractor type is land-guaranteed (features.rs::extract_attractors filters !ocean_mask, D-209), but a synthetic-overflow settlement can be placed in open water — visible as an ocean-stranded settlement marker on the Atlas. T-1116''s routing relaxation degrades this case gracefully (surrogate anchor within ring 3, else an isolated unrouted node — never a panic or a water road), but the placement guarantee itself is the gap. Documented in road_graph.rs''s anchor comment and the D-210 amendment (PR #215). Fix shape: thread the ocean mask (or TerrainAnalysis) into synthetic_attractor and nudge/reject water candidates deterministically — mind D-211''s seed-derived-position promise (any nudge must be a pure function of seed + terrain, no RNG state change). Verify by hunting a real body whose synthetic overflow currently lands in water (none observed yet — GJ251c/GJ380c placements are all extracted attractors) or a synthetic fixture.', 'backlog', 'medium', NULL, 'server', NULL, '2026-07-26 11:33:42.064', '2026-07-26 11:33:42.064', NULL, 'e0bed269a11d67a500af60b6b4edb65f', 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 ('06FSWE6BPT85W6WW7PKB4TEZ3R', 'story', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Wave 2: civilizational overlays onto the stepped Atlas (city markers, roads/rail, POL/POP)', 'The second wave T-1156 deferred by Jeroen''s 2026-07-22 ruling (''not coloring in the cities at the moment — the nature layer first''). Wave 1 (nature: gen_dw overlays + river courses + named features) shipped with T-1156/T-1169; this ticket carries the deferred civilizational set: city markers + click-to-inspect sidebar, settlements/quarter footprints, roads/rail, POL/POP/CRP, gate markers. Per T-1156''s own analysis this is a per-overlay design + wire question (the StepCanvas envelope does not carry this data; at what rung does a marker fade in?), not a mechanical port — needs araminta (per-rung affordance/fade rules) + tyre/dudley (wire fields vs client joins). Carry Tyre''s PR #195 Q3 refactor note: host the discrete-marker family on an UNSCALED screen-space sibling Node2D (screen-space-constant by construction) instead of per-call zoom compensation. NEW CONTEXT (PR #215/T-1116, 2026-07-26): the road graph server-side is now correct on water-heavy bodies (coastal anchor relaxation, D-210 amendment) and verified by real-body tests — but NOTHING renders roads post-D-255 (confirmed by inspection: StepCanvasAnnotationLayer draws courses+settlements only; the old road overlay died with AtlasWindowViewer). When this wave lands, GJ251c (Tributarium/Ruhr/The Gate Corporation, 2 edges + waypoint) and GJ380c (Sethvale coastal-access spur) are the ready-made verification bodies. ACTIVATION: Jeroen''s call — the wave-1-first ruling was his; surface at pickup whether the nature layer now ''stands'' to his satisfaction.', 'backlog', 'medium', NULL, 'client', NULL, '2026-07-26 11:39:10.134', '2026-07-26 11:39:10.134', NULL, '2a8e3113c149208cedfd013b52dc3b2f', 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 ('06FPPM0KP850FN6WQ5PDEX9ZS4', 'bug', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Road graph: 0 routable edges on water-heavy bodies — placements land in water-majority routing cells, every A* pair drops', 'Found during T-1076 (road-hub refinement) verification: several real bodies (GJ251c, GJ380c) produce 0 routable road edges because settlement placements land in water-majority routing cells, so every A* pair is dropped. PRE-EXISTING behavior (T-1038''s core had the same drop path) but now more visible with hub/spur semantics and on the Atlas road overlay. Candidate fixes per Dudley: coastal-cell routing relaxation (allow routing through coast-adjacent cells at a cost penalty) or a placement nudge (settlements snap out of water-majority cells at L3). Affects the Atlas planet-browsing experience directly: water-heavy bodies show settlements but no roads.
|
||||
|
||||
Merge verification note (2026-07-26): the planned before/after road-overlay eyeball was correctly ABORTED by the capture agent — post-D-255 there is NO client roads rendering on either side (StepCanvasAnnotationLayer draws courses+settlements only; the old road overlay died with AtlasWindowViewer; roads are Wave 2 of T-1156''s overlay port, deferred by Jeroen''s 2026-07-22 nature-first ruling, now ticketed as T-1207 since the closed T-1156 carried the deferral only in prose). A capture would have shown two identical frames and misrepresented the fix. Verification therefore stands on the failing-first real-body tests through the real cascade entry point (GJ251c 0->2 edges, GJ380c 0->1, determinism pinned, goldens unaffected) — the fix is data-layer-complete and becomes player-visible when T-1207 lands; GJ251c/GJ380c are its ready-made verification bodies. This ticket''s own ''Affects the Atlas planet-browsing experience directly'' line described the pre-D-255 world and is superseded by the above.', 'review', 'medium', 'dudley', 'server', NULL, '2026-07-16 14:23:57.874', '2026-07-26 11:39:19.352', NULL, 'e9dd15088ec6c178fd9d407e592cc159', 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 ('06FPPM0KP850FN6WQ5PDEX9ZS4', 'bug', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Road graph: 0 routable edges on water-heavy bodies — placements land in water-majority routing cells, every A* pair drops', 'Found during T-1076 (road-hub refinement) verification: several real bodies (GJ251c, GJ380c) produce 0 routable road edges because settlement placements land in water-majority routing cells, so every A* pair is dropped. PRE-EXISTING behavior (T-1038''s core had the same drop path) but now more visible with hub/spur semantics and on the Atlas road overlay. Candidate fixes per Dudley: coastal-cell routing relaxation (allow routing through coast-adjacent cells at a cost penalty) or a placement nudge (settlements snap out of water-majority cells at L3). Affects the Atlas planet-browsing experience directly: water-heavy bodies show settlements but no roads.
|
||||
|
||||
Merge verification note (2026-07-26): the planned before/after road-overlay eyeball was correctly ABORTED by the capture agent — post-D-255 there is NO client roads rendering on either side (StepCanvasAnnotationLayer draws courses+settlements only; the old road overlay died with AtlasWindowViewer; roads are Wave 2 of T-1156''s overlay port, deferred by Jeroen''s 2026-07-22 nature-first ruling, now ticketed as T-1207 since the closed T-1156 carried the deferral only in prose). A capture would have shown two identical frames and misrepresented the fix. Verification therefore stands on the failing-first real-body tests through the real cascade entry point (GJ251c 0->2 edges, GJ380c 0->1, determinism pinned, goldens unaffected) — the fix is data-layer-complete and becomes player-visible when T-1207 lands; GJ251c/GJ380c are its ready-made verification bodies. This ticket''s own ''Affects the Atlas planet-browsing experience directly'' line described the pre-D-255 world and is superseded by the above.', 'done', 'medium', 'dudley', 'server', NULL, '2026-07-16 14:23:57.874', '2026-07-26 11:39:59.051', NULL, '522f2e72a6a6f42507cf7a72c76434db', 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);
|
||||
|
||||
@@ -19,6 +19,7 @@ Format based on [Keep a Changelog](https://keepachangelog.com/).
|
||||
- **Internal: legacy map-window field retired** (T-1159) — the obsolete duplicate zoom-granularity field was removed from the map wire protocol and caches; no player-visible change
|
||||
|
||||
### Fixed
|
||||
- **Road networks now form on water-heavy worlds** (T-1116, D-210 amendment) — island and coastal bodies were generating settlements but zero roads: a coastal town's map cell could count as majority-water at routing resolution, and the pathfinder refused to start there at all. Routes now anchor to the nearest passable land cell at a small, honestly-priced access cost — never crossing water — so island worlds get their road networks back in the world data. Not yet visible on the Atlas: road drawing belongs to the deferred civilizational overlay wave (nature layer first, T-1207), and the map will show these roads when that wave lands
|
||||
- **The Atlas golden-capture harness works again** (T-1157) — the curated map-screenshot suite, dead since the stepped-Atlas rework, is rebuilt on the real navigation path (the same code a player's click runs): 13 golden shots across 7 bodies now cover every zoom rung, captured live and proven stable — byte-identical across consecutive runs and regardless of map-cache temperature. Every capture logs its full view transform so a future pixel mismatch is diagnosable instead of mysterious
|
||||
- **Map viewer unit tests no longer flake against a warm map cache** (T-1193 first slice) — the viewer test suites rode the machine-shared on-disk atlas cache, so a live play or capture session visiting the same body could flip "nothing has arrived yet" tests in any later test run; viewers under test now pin an isolated cache root through a proper injection seam
|
||||
- **One coastline at every zoom step** (T-1160) — the whole-body and Region views drew a structurally different coastline than the closer zoom steps (they skipped the deterministic coast-detail warp — about 5% of coastal cells disagreed, displaced up to ~19 km). All six zoom steps now draw the same coastline at their own density: zooming in refines the line instead of moving it. (Game version → 0.4.3: old on-disk map caches refresh automatically)
|
||||
|
||||
Reference in New Issue
Block a user