diff --git a/.pql/changelog/ticket_history/2026-07.sql b/.pql/changelog/ticket_history/2026-07.sql index d9ac33c40..51c0b809f 100644 --- a/.pql/changelog/ticket_history/2026-07.sql +++ b/.pql/changelog/ticket_history/2026-07.sql @@ -1769,3 +1769,13 @@ 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 ('06FRZKCN13EF5TD9EZTXMSJ7EG', 'status', 'ready', 'in_progress', NULL, '2026-07-23 16:31:37', '2026-07-23 16:31:37.588', '2026-07-23 16:31:37.588', NULL, '74c95e46254d1b4e556114373955ce3f', 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 ('06FRZKBTD7VKSXNWADWHV3QDQ8', 'status', 'ready', 'in_progress', NULL, '2026-07-23 16:31:37', '2026-07-23 16:31:37.588', '2026-07-23 16:31:37.588', NULL, 'be43c8468b1f8b982f29bd8f86131d60', 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 ('06FRZKDFB23YFACY2G4M6WRSXC', 'status', 'ready', 'in_progress', NULL, '2026-07-23 16:31:37', '2026-07-23 16:31:37.589', '2026-07-23 16:31:37.589', NULL, '780d0a11c4150daecb3b2ccf9c5263fa', 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 ('06FRZKAV6ZK4KAZ6YCGFNBQ4T0', 'status', 'in_progress', 'review', NULL, '2026-07-23 17:28:10', '2026-07-23 17:28:10.723', '2026-07-23 17:28:10.723', NULL, 'ac94abc9cb74e2aad992d6db501186e6', 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 ('06FRZKBTD7VKSXNWADWHV3QDQ8', 'status', 'in_progress', 'review', NULL, '2026-07-23 17:28:10', '2026-07-23 17:28:10.725', '2026-07-23 17:28:10.725', NULL, 'aaa25832f40b1128b95eca8c645905c6', 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 ('06FRCF0CX1Y5DTD3ER2JCDT27G', 'status', 'in_progress', 'review', NULL, '2026-07-23 17:28:10', '2026-07-23 17:28:10.725', '2026-07-23 17:28:10.725', NULL, 'e922419468e1ce927a31a4c44c02c97e', 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 ('06FRZKCN13EF5TD9EZTXMSJ7EG', 'status', 'in_progress', 'review', NULL, '2026-07-23 17:28:10', '2026-07-23 17:28:10.726', '2026-07-23 17:28:10.726', NULL, 'c69971d04aa8e133f36c2d49ab08976d', 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 ('06FRZKDFB23YFACY2G4M6WRSXC', 'status', 'in_progress', 'review', NULL, '2026-07-23 17:28:10', '2026-07-23 17:28:10.726', '2026-07-23 17:28:10.726', NULL, 'f4db07b59ed9e0aa398948c23433b870', 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 ('06FRZKAV6ZK4KAZ6YCGFNBQ4T0', 'status', 'review', 'done', NULL, '2026-07-23 18:06:12', '2026-07-23 18:06:12.143', '2026-07-23 18:06:12.143', NULL, '7ce2aa2053d1cd118391e50669ac6c53', 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 ('06FRZKBTD7VKSXNWADWHV3QDQ8', 'status', 'review', 'done', NULL, '2026-07-23 18:06:12', '2026-07-23 18:06:12.145', '2026-07-23 18:06:12.145', NULL, '37189119cf3dffcc4fd582e0f791da40', 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 ('06FRCF0CX1Y5DTD3ER2JCDT27G', 'status', 'review', 'done', NULL, '2026-07-23 18:06:12', '2026-07-23 18:06:12.146', '2026-07-23 18:06:12.146', NULL, 'b2f9dd6df75e6fc00da53a9d85582167', 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 ('06FRZKCN13EF5TD9EZTXMSJ7EG', 'status', 'review', 'done', NULL, '2026-07-23 18:06:12', '2026-07-23 18:06:12.147', '2026-07-23 18:06:12.147', NULL, '03911a8b5220fca15a57cac632fdeeea', 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 ('06FRZKDFB23YFACY2G4M6WRSXC', 'status', 'review', 'done', NULL, '2026-07-23 18:06:12', '2026-07-23 18:06:12.147', '2026-07-23 18:06:12.147', NULL, '9356438925d73d203f8201d9eebfbd09', 2) ON CONFLICT(hash) DO NOTHING; diff --git a/.pql/changelog/tickets/2026-07.sql b/.pql/changelog/tickets/2026-07.sql index f6687fd0c..07ae1544b 100644 --- a/.pql/changelog/tickets/2026-07.sql +++ b/.pql/changelog/tickets/2026-07.sql @@ -2605,3 +2605,17 @@ INSERT INTO tickets (record_id, type, parent_record_id, title, description, stat REPURPOSED as body-map-viewer workshop gate measurement ③ (2026-07-25, brief appendix ③: docs/workshops/body-map-viewer/body-map-viewer-workshop-brief.md). Unblocked since T-1162 shipped the octave-cutoff plumbing this was blocked on. Scope unchanged (block/tile rung per-cell costs + wire at those granularities); its numbers now price the bottom of the stepped gridunit ladder (~10px per 1m tile bottom-out). Round 1 of the workshop is gated on this landing alongside T-1177/T-1178/T-1179.', 'in_progress', 'medium', NULL, 'server', 'D-226', '2026-07-21 19:51:50.248', '2026-07-23 16:31:37.588', NULL, 'cdc96a05f582115e1ce211e78d496fe6', 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 ('06FRZKDFB23YFACY2G4M6WRSXC', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Measurement ⑤: Godot ImageTexture upload cost per step-cross (330K–8.3M px)', 'Workshop measurement for body-map-viewer (brief appendix ⑤; tyre-implications.md §3.5). Measure ImageTexture.create_from_image (and update paths) for 330K–8.3M px images on step-cross — client-side stutter risk for the RTT terrain layer''s hold-fetch-swap. NOT a round-1 gate (may land during round 1), but a real interactive-latency input for Stig Q2. Owner: Stig. Effort est 0.25 day.', 'in_progress', 'medium', NULL, 'client', 'D-226', '2026-07-23 16:27:29.496', '2026-07-23 16:31:37.589', NULL, '4ba81e04e267da1df792e1cdb1bb4e0d', 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 ('06FRZKAV6ZK4KAZ6YCGFNBQ4T0', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Measurement ①: equilibrium hydrology solver prototype + bench (512×256 and 4K-class) incl. cliff representation', 'Workshop gate measurement for body-map-viewer (brief: docs/workshops/body-map-viewer/body-map-viewer-workshop-brief.md, appendix ①; analysis: tyre-implications.md §3.1). Prototype the deterministic-equilibrium hydrology solver (priority-flood family: lake fill above sea level, overflow re-routing to sea or endorheic self-cycle, gorge carving when no easier path — settled end-state, pure function of seed + moisture/climate, extends drainage.rs D8). Bench at 512×256 (Layer-1 grid) AND a 4K-class canvas (~330K and up to 8.3M cells). MUST also output the cliff/two-heights-per-gridunit representation proposal (red flag 4) — the data-model answer, not just cost. Owner: Dudley. Effort est 1–2 days. This is the one measurement that could invalidate per-body-open settled hydrology if it lands in seconds not milliseconds.', 'review', 'high', NULL, 'server', 'D-227', '2026-07-23 16:27:07.959', '2026-07-23 17:28:10.723', NULL, '25bbbdd52c7a1f8bd08f4dfe8ca007a4', 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 ('06FRZKBTD7VKSXNWADWHV3QDQ8', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Measurement ②: per-gridunit derive bench at real canvas sizes (330K and 8.3M cells, production par_iter path)', 'Workshop gate measurement for body-map-viewer (brief appendix ②; tyre-implications.md §3.2). Run zoom_ladder_bench-class measurement of derive_at_metres on the PRODUCTION build_district_window_layer row-chunked par_iter path at ~330K cells (5×5 display-unit fallback, 4K-class) and ~8.3M cells (1×1 ideal). Known baselines: 1.785 µs/cell District cutoff, 1.454 µs/cell orbital, 0.617 ms per 4,096-cell served window — measured at 4,096 cells only; the chunking behavior at 330K+ is the exact extrapolation gap that killed the T-1143 planetary-rung cost story. MEASURE, do not extrapolate. Feeds Dudley Q3/Q4, red-flag-2 memory math, and Troblum''s round-2 cost pass. Owner: Dudley. Effort est 0.5 day.', 'review', 'high', NULL, 'server', 'D-226', '2026-07-23 16:27:15.945', '2026-07-23 17:28:10.725', NULL, '5bb2e3e8039f1150466150ce991b7bea', 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 ('06FRCF0CX1Y5DTD3ER2JCDT27G', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Below-quarter measurement pass — block/tile rung costs and wire (gate for the opened (d) floor)', 'Gate ticket from Jeroen''s floor ruling (2026-07-21, D-226 amendment: ''we set a new BHAG so old restrictions are up for debate'' — the Atlas ladder may descend below quarter toward tile, implementation-gated on THIS pass). Measure what the design pass could not (docs/architecture/atlas-zoom-ladder-t1143.md SS2 marks block/tile ''not estimated''): per-cell derive cost at block (128m) and tile-adjacent spacings with the min_wavelength cutoff active; realistic window cell counts and wire bytes at those granularities vs the SS4 budget; memory/caching behavior; whether voxel_relief/voxel_mosaic math is reusable as-is for Atlas sampling or needs an extraction like derive_at_metres. Output: a costs appendix to the design doc + go/no-go recommendation per rung. Constraint preserved by the ruling: chunk/tile output never appears as a whole-body planetary layer — windowed viewport only. Blocked by derive_at_metres (the cutoff must exist to measure with it). + +REPURPOSED as body-map-viewer workshop gate measurement ③ (2026-07-25, brief appendix ③: docs/workshops/body-map-viewer/body-map-viewer-workshop-brief.md). Unblocked since T-1162 shipped the octave-cutoff plumbing this was blocked on. Scope unchanged (block/tile rung per-cell costs + wire at those granularities); its numbers now price the bottom of the stepped gridunit ladder (~10px per 1m tile bottom-out). Round 1 of the workshop is gated on this landing alongside T-1177/T-1178/T-1179.', 'review', 'medium', NULL, 'server', 'D-226', '2026-07-21 19:51:50.248', '2026-07-23 17:28:10.725', NULL, '98adde08162e6d4019b92020e025cceb', 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 ('06FRZKCN13EF5TD9EZTXMSJ7EG', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Measurement ④: wire-size table for step-canvas encodings (raw/bit-packed/RLE/PNG + MessagePack round-trip)', 'Workshop gate measurement for body-map-viewer (brief appendix ④; tyre-implications.md §3.3). For a ~330K-gridunit step canvas: dense classification arrays ≈ 4–5 bytes/gridunit ≈ 1.3–1.6 MB/step raw. Produce the comparison table: raw dense vs bit-packed vs run-length vs PNG-encoded raster, with an actual MessagePack round-trip on one real canvas (not arithmetic only). Directly informs the named-feature encoding decision (Araminta Q1) and whether the tagged-envelope migration (D-225 deferral) is forced. Owners: Araminta (encoding) + Dudley (real canvas + numbers). Effort est 0.5 day.', 'review', 'high', NULL, 'server', 'D-225', '2026-07-23 16:27:22.760', '2026-07-23 17:28:10.726', NULL, '1195ca54ac02ea0f33fe408ecefaa3b9', 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 ('06FRZKDFB23YFACY2G4M6WRSXC', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Measurement ⑤: Godot ImageTexture upload cost per step-cross (330K–8.3M px)', 'Workshop measurement for body-map-viewer (brief appendix ⑤; tyre-implications.md §3.5). Measure ImageTexture.create_from_image (and update paths) for 330K–8.3M px images on step-cross — client-side stutter risk for the RTT terrain layer''s hold-fetch-swap. NOT a round-1 gate (may land during round 1), but a real interactive-latency input for Stig Q2. Owner: Stig. Effort est 0.25 day.', 'review', 'medium', NULL, 'client', 'D-226', '2026-07-23 16:27:29.496', '2026-07-23 17:28:10.726', NULL, '4b979135194bb90d460f9f3d056069fa', 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 ('06FRZKAV6ZK4KAZ6YCGFNBQ4T0', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Measurement ①: equilibrium hydrology solver prototype + bench (512×256 and 4K-class) incl. cliff representation', 'Workshop gate measurement for body-map-viewer (brief: docs/workshops/body-map-viewer/body-map-viewer-workshop-brief.md, appendix ①; analysis: tyre-implications.md §3.1). Prototype the deterministic-equilibrium hydrology solver (priority-flood family: lake fill above sea level, overflow re-routing to sea or endorheic self-cycle, gorge carving when no easier path — settled end-state, pure function of seed + moisture/climate, extends drainage.rs D8). Bench at 512×256 (Layer-1 grid) AND a 4K-class canvas (~330K and up to 8.3M cells). MUST also output the cliff/two-heights-per-gridunit representation proposal (red flag 4) — the data-model answer, not just cost. Owner: Dudley. Effort est 1–2 days. This is the one measurement that could invalidate per-body-open settled hydrology if it lands in seconds not milliseconds.', 'done', 'high', NULL, 'server', 'D-227', '2026-07-23 16:27:07.959', '2026-07-23 18:06:12.142', NULL, '323b4aebaae21b94da208ba73908ebd4', 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 ('06FRZKBTD7VKSXNWADWHV3QDQ8', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Measurement ②: per-gridunit derive bench at real canvas sizes (330K and 8.3M cells, production par_iter path)', 'Workshop gate measurement for body-map-viewer (brief appendix ②; tyre-implications.md §3.2). Run zoom_ladder_bench-class measurement of derive_at_metres on the PRODUCTION build_district_window_layer row-chunked par_iter path at ~330K cells (5×5 display-unit fallback, 4K-class) and ~8.3M cells (1×1 ideal). Known baselines: 1.785 µs/cell District cutoff, 1.454 µs/cell orbital, 0.617 ms per 4,096-cell served window — measured at 4,096 cells only; the chunking behavior at 330K+ is the exact extrapolation gap that killed the T-1143 planetary-rung cost story. MEASURE, do not extrapolate. Feeds Dudley Q3/Q4, red-flag-2 memory math, and Troblum''s round-2 cost pass. Owner: Dudley. Effort est 0.5 day.', 'done', 'high', NULL, 'server', 'D-226', '2026-07-23 16:27:15.945', '2026-07-23 18:06:12.145', NULL, '8c7518f5e39f198eafe61842923a3dc8', 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 ('06FRCF0CX1Y5DTD3ER2JCDT27G', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Below-quarter measurement pass — block/tile rung costs and wire (gate for the opened (d) floor)', 'Gate ticket from Jeroen''s floor ruling (2026-07-21, D-226 amendment: ''we set a new BHAG so old restrictions are up for debate'' — the Atlas ladder may descend below quarter toward tile, implementation-gated on THIS pass). Measure what the design pass could not (docs/architecture/atlas-zoom-ladder-t1143.md SS2 marks block/tile ''not estimated''): per-cell derive cost at block (128m) and tile-adjacent spacings with the min_wavelength cutoff active; realistic window cell counts and wire bytes at those granularities vs the SS4 budget; memory/caching behavior; whether voxel_relief/voxel_mosaic math is reusable as-is for Atlas sampling or needs an extraction like derive_at_metres. Output: a costs appendix to the design doc + go/no-go recommendation per rung. Constraint preserved by the ruling: chunk/tile output never appears as a whole-body planetary layer — windowed viewport only. Blocked by derive_at_metres (the cutoff must exist to measure with it). + +REPURPOSED as body-map-viewer workshop gate measurement ③ (2026-07-25, brief appendix ③: docs/workshops/body-map-viewer/body-map-viewer-workshop-brief.md). Unblocked since T-1162 shipped the octave-cutoff plumbing this was blocked on. Scope unchanged (block/tile rung per-cell costs + wire at those granularities); its numbers now price the bottom of the stepped gridunit ladder (~10px per 1m tile bottom-out). Round 1 of the workshop is gated on this landing alongside T-1177/T-1178/T-1179.', 'done', 'medium', NULL, 'server', 'D-226', '2026-07-21 19:51:50.248', '2026-07-23 18:06:12.146', NULL, 'c248f2785286f98c3d60982bcfb9fd85', 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 ('06FRZKDFB23YFACY2G4M6WRSXC', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Measurement ⑤: Godot ImageTexture upload cost per step-cross (330K–8.3M px)', 'Workshop measurement for body-map-viewer (brief appendix ⑤; tyre-implications.md §3.5). Measure ImageTexture.create_from_image (and update paths) for 330K–8.3M px images on step-cross — client-side stutter risk for the RTT terrain layer''s hold-fetch-swap. NOT a round-1 gate (may land during round 1), but a real interactive-latency input for Stig Q2. Owner: Stig. Effort est 0.25 day.', 'done', 'medium', NULL, 'client', 'D-226', '2026-07-23 16:27:29.496', '2026-07-23 18:06:12.147', NULL, '149c633463919bfebfbea2bebb8dc566', 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 ('06FRZKCN13EF5TD9EZTXMSJ7EG', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Measurement ④: wire-size table for step-canvas encodings (raw/bit-packed/RLE/PNG + MessagePack round-trip)', 'Workshop gate measurement for body-map-viewer (brief appendix ④; tyre-implications.md §3.3). For a ~330K-gridunit step canvas: dense classification arrays ≈ 4–5 bytes/gridunit ≈ 1.3–1.6 MB/step raw. Produce the comparison table: raw dense vs bit-packed vs run-length vs PNG-encoded raster, with an actual MessagePack round-trip on one real canvas (not arithmetic only). Directly informs the named-feature encoding decision (Araminta Q1) and whether the tagged-envelope migration (D-225 deferral) is forced. Owners: Araminta (encoding) + Dudley (real canvas + numbers). Effort est 0.5 day.', 'done', 'high', NULL, 'server', 'D-225', '2026-07-23 16:27:22.760', '2026-07-23 18:06:12.147', NULL, '47f5693da9e161d70c3389969ff6d051', 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);