chore(meta): file T-1146 — gameplay movement leaks to server while implant open (T-1145 finding)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -59,3 +59,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 ('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);
|
||||
INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FRA9Z84VKCZ3ECQDEGDW4MSW', 'T-1146', '2026-07-21 14:50:12.905', '2026-07-21 14:50:12.905', NULL, '268fd5ca3a99ce6d776fd6df52294647', 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);
|
||||
|
||||
@@ -2358,3 +2358,4 @@ INSERT INTO tickets (record_id, type, parent_record_id, title, description, stat
|
||||
|
||||
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);
|
||||
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 ('06FRA9Z84VKCZ3ECQDEGDW4MSW', 'bug', '06FBPPMZNNEV052DBYYY3A897C', 'Gameplay movement input leaks to the server while an implant screen is open', 'Found by Stig during T-1145 (2026-07-21), pre-existing: InputMapper._process() polls the D-054 move_north/west/south/east actions unconditionally and the queue flush path (input_mapper.gd -> main.gd flush_queue -> sim_bridge.send_input) never checks HudGroups.gameplay_occluded / is_app_active — so pressing WASD while ANY implant screen is open (Atlas, browser, wiki...) queues real movement commands to the server and walks the character blind behind the fullscreen overlay. Affects every implant screen equally; the companion is immune only because readers cannot send inputs (T-1130 matrix). Fix shape: gate the InputMapper poll (or the queue flush) on not HudGroups.gameplay_occluded — decide whether stance/other gameplay actions need the same gate while there (they do — audit the full polled action set). Regression test: occluded -> WASD poll queues nothing; unoccluded -> queues normally. Note: T-1145''s regional-window pan deliberately reads raw physical keycodes, architecturally independent of this fix.', 'backlog', 'high', NULL, 'client', NULL, '2026-07-21 14:50:12.902', '2026-07-21 14:50:12.902', NULL, '38bedb4bdf8179318f8049a22220256f', 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