Mark recovered work by what the canvas queued, not by when the queue opened

Marking ops present when the queue activated a strategy missed two
paths. A trip to a local strategy and back redraws the canvas from the
server, but the queue never switches, so work sent before the trip
landed as the canvas's own. And a successor promoted in the background
while the user opened its strategy was stored after activation looked,
so its new op ID went unmarked.

The queue now remembers the reverse: op IDs it made from the canvas's
desired ops, plus the ops it resends in their place. Live sync tells it
to forget them whenever it drops its bases and overlays (a strategy
opened or left, local ones included, or a reset), and ops asked for
before that are not counted. Every other ack is marked restored, so a
background promotion needs no bookkeeping at all. Remembered IDs are
pruned once their records are gone, inside the queue's serialized
writes.

The new regressions drive the real queue: a cloud, local, cloud round
trip through the page session with a drop over the landed edit, and a
gated store that opens the strategy mid-promotion.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
65f978afefDara Adedeji committed on 10/1/2026, 2:49:50 PMparent8eaacc1
5 files changedLine totals unavailable