Never count kept or stale work as the canvas's own

Live sync passes recovered work it keeps through the same desired-op
map as new edits. If that work landed while the page write waited its
turn, the queue found no record, wrote it again as the canvas's, and
its replayed ack moved the held item's base: a drop then replaced the
recovered edit. A desired op the queue already held when asked is now
only a request to keep it: never marked as the canvas's, and not
written again once it has landed or been replaced.

An ack is now judged when it is published rather than before its
records are stored, so a canvas drawn fresh in between gets it as
restored instead of moving its new base back.

The discard paths and attention retries prune remembered canvas op IDs
too.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
a51270597aDara Adedeji committed on 10/1/2026, 3:05:15 PMparent7083fe9
2 files changedLine totals unavailable