chore(meta): file+activate T-1145 (round-2 friction: cover-fit, WASD pan, smoothing); expand T-1143 with sub-district sampling design
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1592,3 +1592,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 ('06FR97BZHA6DV68S1BFG0HBN8G', 'status', 'backlog', 'in_progress', NULL, '2026-07-21 12:20:47', '2026-07-21 12:20:47.188', '2026-07-21 12:20:47.188', NULL, 'ff85feaa7a633ecabb8187d5ea68b7ba', 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 ('06FR97BZHA6DV68S1BFG0HBN8G', 'status', 'in_progress', 'review', NULL, '2026-07-21 13:11:49', '2026-07-21 13:11:49.373', '2026-07-21 13:11:49.373', NULL, '4b5378198de50d36b509b1fbdbc14ac1', 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 ('06FR97BZHA6DV68S1BFG0HBN8G', 'status', 'review', 'done', NULL, '2026-07-21 13:26:53', '2026-07-21 13:26:53.798', '2026-07-21 13:26:53.798', NULL, '3964092ac3e27946107a24acd5563ade', 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 ('06FR97DPEHANCYX2AC4021BSJC', 'description', 'Follow-on from Jeroen''s first descent (2026-07-21): even with T-1142 fixed, many interior windows are genuinely one morphology zone across 66km, and the composite''s absolute lightness modulation (0.7 + 0.3 x elev_q/100, D-226 T-1124 SS5) spans only ~1-3% lightness over a window whose local elev range is small — the window reads as a dead flat fill rather than terrain. Proposal to evaluate WITH Araminta (SS5 is her encoding): window-local contrast stretch — normalize lightness within the window''s own elev min..max (fixed band, e.g. 0.62..0.92) with a degenerate floor (single-value window stays honestly flat), deterministic per window, mirroring how the aliveness_probe elev panel achieved its 12-level local texture. Alternative/complement: a faint deterministic per-cell variation or contour hinting. Any change to the recorded SS5 encoding gets a one-line amendment note. Assess AFTER T-1142 lands — real clicks will then land on real terrain and the residual flatness can be judged on coastal vs interior windows.', 'Follow-on from Jeroen''s first descent (2026-07-21): even with T-1142 fixed, many interior windows are genuinely one morphology zone across 66km, and the composite''s absolute lightness modulation (0.7 + 0.3 x elev_q/100, D-226 T-1124 SS5) spans only ~1-3% lightness over a window whose local elev range is small — the window reads as a dead flat fill rather than terrain. Proposal to evaluate WITH Araminta (SS5 is her encoding): window-local contrast stretch — normalize lightness within the window''s own elev min..max (fixed band, e.g. 0.62..0.92) with a degenerate floor (single-value window stays honestly flat), deterministic per window, mirroring how the aliveness_probe elev panel achieved its 12-level local texture. Alternative/complement: a faint deterministic per-cell variation or contour hinting. Any change to the recorded SS5 encoding gets a one-line amendment note. Assess AFTER T-1142 lands — real clicks will then land on real terrain and the residual flatness can be judged on coastal vs interior windows.
|
||||
|
||||
Scope expansion (Jeroen round-2, 2026-07-21): beyond window-local contrast, evaluate SUB-DISTRICT SAMPLING to de-block the composite at the data level — the D-227 invention fields (invent_primitives: warped envelope, scatter, character) are continuous at metre resolution and quarter granularity (512m, 4x4 per district) sits WITHIN the D-226(d) Atlas ceiling (the cap rules out chunk/tile mapping, not quarters). But classification (derive_district) is per-district today — finer sampling means a new derivation mode (e.g. sample the continuous primitives at quarter spacing and reuse the district''s classification for hue while modulating lightness/moisture per quarter, or classify per quarter at 16x the derive cost — n=32 window = 16384 quarter cells x ~7us = ~115ms background). Needs Dudley/Tyre on data feasibility + cost, Araminta on encoding. INTERIM already shipping in T-1145: linear-filtered texture rendering (presentation smoothing, no data change) — judge the residual need after both T-1145 and real-aim clicking land.', NULL, '2026-07-21 14:17:24', '2026-07-21 14:17:24.702', '2026-07-21 14:17:24.702', NULL, 'a3e548c138e93161250dd60001d6487d', 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 ('06FRA2DAZ2PDWE2YH76YBSQ2DW', 'status', 'backlog', 'in_progress', NULL, '2026-07-21 14:17:33', '2026-07-21 14:17:33.958', '2026-07-21 14:17:33.958', NULL, '2e1259f990abb2360e258955d1a451ea', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
|
||||
@@ -58,3 +58,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 ('06FR97BZHA6DV68S1BFG0HBN8G', 'T-1142', '2026-07-21 12:19:02.156', '2026-07-21 12:19:02.156', NULL, '3a486c5b1a809d2233fe1446c2984edf', 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 ('06FR97DPEHANCYX2AC4021BSJC', 'T-1143', '2026-07-21 12:19:16.213', '2026-07-21 12:19:16.213', NULL, '45182fc00280db5f3260eb495d3d0d62', 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 ('06FR9F9WH7SXVB14XWFDR0XEZ8', 'T-1144', '2026-07-21 12:53:42.156', '2026-07-21 12:53:42.156', NULL, '73a4db7bde1200bb432fd746cb930099', 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 ('06FRA2DAZ2PDWE2YH76YBSQ2DW', 'T-1145', '2026-07-21 14:17:11.164', '2026-07-21 14:17:11.164', NULL, '7888bfdff5725a01b7e85a7828c3bcb5', 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);
|
||||
|
||||
@@ -2353,3 +2353,8 @@ 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 ('06FR9F9WH7SXVB14XWFDR0XEZ8', 'task', '06FBPPMZNNEV052DBYYY3A897C', 'atlas_viewer.gd structural extraction — pinned at the gdlint 1000-line cap two rounds running', 'Flagged by Stig in the T-1142 fix round: atlas_viewer.gd has landed at exactly the 1000-line gdlint cap in two consecutive fix rounds (T-1138 fix round and T-1142), absorbed each time by compressing comments rather than restructuring. A real extraction is due — candidates on the established delegate/companion precedent (atlas_generation_state/proxy, atlas_map_protocol, atlas_overlay_colors): the city panel + sidebar block, the descend reticle + hover block, or the header/hint chrome. Public API must be preserved exactly (tests construct bare AtlasViewer.new() — mind the field-default vs _ready construction rule documented in the file). Do it as its own small PR, not smuggled into a feature round.', 'backlog', 'low', NULL, 'client', NULL, '2026-07-21 12:53:42.153', '2026-07-21 12:53:42.153', NULL, 'eb3101765db2c6b21287a13ea8670510', 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 ('06FR97BZHA6DV68S1BFG0HBN8G', 'bug', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Descent allowed outside the map texture — letterbox clicks produce impossible DistrictPos; window opens as unfitted postage stamp', 'Jeroen''s first hands-on descent (2026-07-21): clicked in the letterbox beside the fixed planetary map and landed at DistrictPos (12276, 3021) — an IMPOSSIBLE column (largest terrestrial body with terrain is 7324.5 km, max valid col ~11236). Root cause: _update_hover sets _hover_active unconditionally and neither the reticle guard nor the descend fall-through checks that the cursor is on the heightmap texture — the 2:1 map letterboxed in a wide viewport leaves dead zones where the reticle promises descent and the click derives beyond the planet edge (clamped sampling = the uniform green he saw). Second defect: atlas_window_viewer.enter() resets zoom 1.0 / offset ZERO with no fit — an n=32 composite renders 512px native in a ~1900px viewport (postage stamp, not a filled map). Fixes: (1) client bounds gate — reticle hidden and descent inert unless screen_to_canvas(pos) is inside [0,tex_w)x[0,tex_h); (2) fit-and-center on enter + first window arrival + resize (zoom = ~0.9 x viewport/composite clamped to MIN/MAX_ZOOM, offset centers); (3) district header gains the body proper name (cheap half of T-1141 pulled forward — pass the body dict into enter); (4) SERVER: validate window_center like window_n — wrap columns modulo the body circumference, clamp rows to +/-rows_half (never trust the wire; today an out-of-range center derives clamped garbage and caches it); (5) live full-chain verification this time — the T-1138 live check requested a known-good pos directly over the wire, bypassing the click chain entirely, which is exactly where this hid. Also verify drag-pan works in the fitted view.', 'review', 'high', NULL, 'client', NULL, '2026-07-21 12:19:02.154', '2026-07-21 13:11:49.373', NULL, 'dcf7c3d9e243090d02e0d8337f0945ec', 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 ('06FR97BZHA6DV68S1BFG0HBN8G', 'bug', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Descent allowed outside the map texture — letterbox clicks produce impossible DistrictPos; window opens as unfitted postage stamp', 'Jeroen''s first hands-on descent (2026-07-21): clicked in the letterbox beside the fixed planetary map and landed at DistrictPos (12276, 3021) — an IMPOSSIBLE column (largest terrestrial body with terrain is 7324.5 km, max valid col ~11236). Root cause: _update_hover sets _hover_active unconditionally and neither the reticle guard nor the descend fall-through checks that the cursor is on the heightmap texture — the 2:1 map letterboxed in a wide viewport leaves dead zones where the reticle promises descent and the click derives beyond the planet edge (clamped sampling = the uniform green he saw). Second defect: atlas_window_viewer.enter() resets zoom 1.0 / offset ZERO with no fit — an n=32 composite renders 512px native in a ~1900px viewport (postage stamp, not a filled map). Fixes: (1) client bounds gate — reticle hidden and descent inert unless screen_to_canvas(pos) is inside [0,tex_w)x[0,tex_h); (2) fit-and-center on enter + first window arrival + resize (zoom = ~0.9 x viewport/composite clamped to MIN/MAX_ZOOM, offset centers); (3) district header gains the body proper name (cheap half of T-1141 pulled forward — pass the body dict into enter); (4) SERVER: validate window_center like window_n — wrap columns modulo the body circumference, clamp rows to +/-rows_half (never trust the wire; today an out-of-range center derives clamped garbage and caches it); (5) live full-chain verification this time — the T-1138 live check requested a known-good pos directly over the wire, bypassing the click chain entirely, which is exactly where this hid. Also verify drag-pan works in the fitted view.', 'done', 'high', NULL, 'client', NULL, '2026-07-21 12:19:02.154', '2026-07-21 13:26:53.797', NULL, '6e472936d0897314433d078f4bbbde95', 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 ('06FRA2DAZ2PDWE2YH76YBSQ2DW', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Regional window round-2 friction — cover-fit, WASD plus edge-scroll pan, smoothed composite', 'Jeroen''s second hands-on descent (2026-07-21, KALLAST window): three items. (1) COVER-FIT: fit_window_view contains (min viewport dim) leaving large side margins in a wide viewport — change to cover (max viewport dim; the composite fills the screen edge to edge, data extends past the shorter axis into pan-space; the existing pan-edge refetch handles the view crossing window edges — verify no refetch churn at rest, i.e. the at-rest view inside one window must not trigger refetch when the window edge merely touches the viewport edge). (2) INPUT MODEL RULING: remove LMB-drag panning from the regional window entirely — clicks are reserved for map objects (settlements etc. will land in the window later). Pan = WASD + arrow keys (continuous, frame-rate independent, speed in screen px/s scaled by zoom) + EDGE SCROLLING (cursor within ~24px of a viewport edge pans toward it; disabled while the cursor is over UI). Wheel zoom unchanged. WASD/edge/zoom all set _user_adjusted. Esc still exits (keep the existing key path; W/A/S/D must not conflict with any current implant binding — check B/M etc. registry). Pole wall + wrap semantics unchanged and must keep working under the new pan inputs (extend the existing tests to drive WASD instead of drag; drag tests are REPLACED, not kept). (3) SMOOTHED COMPOSITE (interim presentation, pending the T-1143 design): render the window as an n x n Image/ImageTexture (one pixel per district, colors from the existing per-cell pipeline incl. overlays and ice tint) drawn scaled with LINEAR filtering instead of per-cell flat rects — GPU bilinear reads as terrain, not blocks; same treatment the planetary heightmap gets. Keep the per-cell path available if the overlay needs crisp mode later (a const toggle is fine). Record all three as one-line D-226 T-1124 SS5 amendment notes in the same PR (cover-fit supersedes the contain wording; input model supersedes drag-pan; smoothing noted as interim presentation pending T-1143). Live full-chain re-drive after (lead): WASD pan across a window edge, edge-scroll, cover assertion (no side margins at 16:9).', 'backlog', 'high', NULL, 'client', NULL, '2026-07-21 14:17:11.161', '2026-07-21 14:17:11.161', NULL, '2a46ecf6c880acaac6ec48d5f77b7b22', 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 ('06FR97DPEHANCYX2AC4021BSJC', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Regional window legibility on quiet interiors — window-local elevation contrast', 'Follow-on from Jeroen''s first descent (2026-07-21): even with T-1142 fixed, many interior windows are genuinely one morphology zone across 66km, and the composite''s absolute lightness modulation (0.7 + 0.3 x elev_q/100, D-226 T-1124 SS5) spans only ~1-3% lightness over a window whose local elev range is small — the window reads as a dead flat fill rather than terrain. Proposal to evaluate WITH Araminta (SS5 is her encoding): window-local contrast stretch — normalize lightness within the window''s own elev min..max (fixed band, e.g. 0.62..0.92) with a degenerate floor (single-value window stays honestly flat), deterministic per window, mirroring how the aliveness_probe elev panel achieved its 12-level local texture. Alternative/complement: a faint deterministic per-cell variation or contour hinting. Any change to the recorded SS5 encoding gets a one-line amendment note. Assess AFTER T-1142 lands — real clicks will then land on real terrain and the residual flatness can be judged on coastal vs interior windows.
|
||||
|
||||
Scope expansion (Jeroen round-2, 2026-07-21): beyond window-local contrast, evaluate SUB-DISTRICT SAMPLING to de-block the composite at the data level — the D-227 invention fields (invent_primitives: warped envelope, scatter, character) are continuous at metre resolution and quarter granularity (512m, 4x4 per district) sits WITHIN the D-226(d) Atlas ceiling (the cap rules out chunk/tile mapping, not quarters). But classification (derive_district) is per-district today — finer sampling means a new derivation mode (e.g. sample the continuous primitives at quarter spacing and reuse the district''s classification for hue while modulating lightness/moisture per quarter, or classify per quarter at 16x the derive cost — n=32 window = 16384 quarter cells x ~7us = ~115ms background). Needs Dudley/Tyre on data feasibility + cost, Araminta on encoding. INTERIM already shipping in T-1145: linear-filtered texture rendering (presentation smoothing, no data change) — judge the residual need after both T-1145 and real-aim clicking land.', 'backlog', 'medium', NULL, 'client', NULL, '2026-07-21 12:19:16.212', '2026-07-21 14:17:24.701', NULL, '9a7dfdb0681020cf965ab27d33842298', 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 ('06FRA2DAZ2PDWE2YH76YBSQ2DW', 'task', '06FB0TNSRZXCHGS16BFHSSGSV4', 'Regional window round-2 friction — cover-fit, WASD plus edge-scroll pan, smoothed composite', 'Jeroen''s second hands-on descent (2026-07-21, KALLAST window): three items. (1) COVER-FIT: fit_window_view contains (min viewport dim) leaving large side margins in a wide viewport — change to cover (max viewport dim; the composite fills the screen edge to edge, data extends past the shorter axis into pan-space; the existing pan-edge refetch handles the view crossing window edges — verify no refetch churn at rest, i.e. the at-rest view inside one window must not trigger refetch when the window edge merely touches the viewport edge). (2) INPUT MODEL RULING: remove LMB-drag panning from the regional window entirely — clicks are reserved for map objects (settlements etc. will land in the window later). Pan = WASD + arrow keys (continuous, frame-rate independent, speed in screen px/s scaled by zoom) + EDGE SCROLLING (cursor within ~24px of a viewport edge pans toward it; disabled while the cursor is over UI). Wheel zoom unchanged. WASD/edge/zoom all set _user_adjusted. Esc still exits (keep the existing key path; W/A/S/D must not conflict with any current implant binding — check B/M etc. registry). Pole wall + wrap semantics unchanged and must keep working under the new pan inputs (extend the existing tests to drive WASD instead of drag; drag tests are REPLACED, not kept). (3) SMOOTHED COMPOSITE (interim presentation, pending the T-1143 design): render the window as an n x n Image/ImageTexture (one pixel per district, colors from the existing per-cell pipeline incl. overlays and ice tint) drawn scaled with LINEAR filtering instead of per-cell flat rects — GPU bilinear reads as terrain, not blocks; same treatment the planetary heightmap gets. Keep the per-cell path available if the overlay needs crisp mode later (a const toggle is fine). Record all three as one-line D-226 T-1124 SS5 amendment notes in the same PR (cover-fit supersedes the contain wording; input model supersedes drag-pan; smoothing noted as interim presentation pending T-1143). Live full-chain re-drive after (lead): WASD pan across a window edge, edge-scroll, cover assertion (no side margins at 16:9).', 'in_progress', 'high', NULL, 'client', NULL, '2026-07-21 14:17:11.161', '2026-07-21 14:17:33.958', NULL, '9d113fad367f24edc73d1cfbe5094b24', 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