Observed (2026-08-12, owner hardware session at #1404's dev-approval gate)
A single press of the merged Builder Action key (Automatic verb, e.g. open-plan) re-fires its effect in VS Code every few seconds, indefinitely. Surfaced during #1404 hardware testing; almost certainly pre-existing and previously masked — the old default view-diff re-fires as a benign editor refocus, while open-plan re-opening a document is loud.
What is already ruled out (static end-to-end trace, recorded in codev/reviews/1404-stream-deck-merge-fleet-slot-i.md and the pir-1404 thread log)
Every layer reads 'once' in code, yet the effect repeats: suspicion is a runtime reconnect / multi-window / delivery effect rather than any single call site.
Decisive next test (owner, ~1 minute)
With the repeat happening, quit the Stream Deck app entirely:
- Firing continues → the loop lives in Tower/VS Code delivery (deck fully exonerated).
- Firing stops → deck runtime (add a keyDown counter log next).
Also worth capturing while it repeats: whether multiple VS Code windows are open (the relay self-gates on focus per window), and Tower log for repeated POSTs vs one POST with repeated SSE deliveries — that distinguishes 'deck re-sends' from 'Tower re-delivers' from 'VS Code re-executes'.
Impact
Any relay verb is affected, not just deck presses (approve-gate is focus-modal-guarded but would re-surface the modal). Worth root-causing before more remote-driving surfaces land (#1401 rides a different, targeted channel, but shares the SSE transport).
Relation
Found during #1404 (merging ships regardless; the bug predates it). Not deck-code: the static trace above.
Observed (2026-08-12, owner hardware session at #1404's dev-approval gate)
A single press of the merged Builder Action key (Automatic verb, e.g.
open-plan) re-fires its effect in VS Code every few seconds, indefinitely. Surfaced during #1404 hardware testing; almost certainly pre-existing and previously masked — the old defaultview-diffre-fires as a benign editor refocus, whileopen-planre-opening a document is loud.What is already ruled out (static end-to-end trace, recorded in codev/reviews/1404-stream-deck-merge-fleet-slot-i.md and the pir-1404 thread log)
sendCommandcall sits in an input handler; the store'sonChangesubscriptions only re-render.command-relay.ts:105, stateless) andbroadcastNotificationwrites once; command events are NOT replayed on SSE reconnect (that replay buffer is terminal-only, tower + vscode: terminal freeze from oversized-replay reconnect storm (unbounded no-newline buffers + client backpressure loop) #1047).streamdeck listshows a single plugin link (double-instance ruled out).Every layer reads 'once' in code, yet the effect repeats: suspicion is a runtime reconnect / multi-window / delivery effect rather than any single call site.
Decisive next test (owner, ~1 minute)
With the repeat happening, quit the Stream Deck app entirely:
Also worth capturing while it repeats: whether multiple VS Code windows are open (the relay self-gates on focus per window), and Tower log for repeated POSTs vs one POST with repeated SSE deliveries — that distinguishes 'deck re-sends' from 'Tower re-delivers' from 'VS Code re-executes'.
Impact
Any relay verb is affected, not just deck presses (
approve-gateis focus-modal-guarded but would re-surface the modal). Worth root-causing before more remote-driving surfaces land (#1401 rides a different, targeted channel, but shares the SSE transport).Relation
Found during #1404 (merging ships regardless; the bug predates it). Not deck-code: the static trace above.