fix(desktop): retain outgoing draft deletion authority after navigation

Bind authored revisions to captured lifecycle visits instead of the visible editor. Apply source authority to cancellation and preflight recovery and sent-draft cleanup, while keeping editor ownership separate. Cover reviewer deletion reproduction, queued files, supersession, return visits, and actual thread-switch persistence.

Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Signed-off-by: Logan Johnson <loganj@squareup.com>
(cherry picked from commit 13e1245bbd042fb6d1afa6cf54152e839d9fe400)
Signed-off-by: Logan Johnson <loganj@squareup.com>
(cherry picked from commit e5e77d88c3eb87360aac8771d17389abee831d3f)
Signed-off-by: Logan Johnson <loganj@squareup.com>
This commit is contained in:
Logan Johnson
2026-08-31 15:32:50 -04:00
parent e90edd6104
commit c4e55a4e21
7 changed files with 328 additions and 31 deletions

View File

@@ -52,8 +52,13 @@ visible pending, Escape/retry and route navigation at deferred IPC boundaries.
Invitation intent belongs to one visit of the effective persistence key and
channel, not just the mounted composer or destination channel. Same-channel
thread changes and A → B → A invalidate the original visit. The same owner gates
optimistic clear, recovery and pending state. Invalidation makes recovery durable
thread changes and A → B → A invalidate the original visit. The visible owner gates
optimistic clear, editor recovery and pending state. Storage recovery instead
consults the captured source visit's authored revision even after that visit
exits; losing visible ownership never revokes an authored deletion. The lifecycle
retains a per-visit revision record through its captured accessor, so B's edits
cannot authorize or suppress A's recovery. Preflight recovery and sent-draft
cleanup use that same source authority. Invalidation makes recovery durable
synchronously, before a later visit can load or edit the source draft; late async
completion cannot revive that recovery or release a newer attempt's latch.