Rapid consecutive Canvas renames can leave the second title unchanged #1090

Open
opened 2026-10-05 04:16:32 +00:00 by kayg · 0 comments
Owner

Found in merge round 7c5 (#867), branch job/merge-round-7c at 06bb908d4.

The ordinary Canvas persistence regression saved four text elements, then renamed the Canvas to Retained Canvas and immediately back to Planning. The second retitle returned 412. The API still held Retained Canvas and all four text elements (Canvas plan, Reload text, Closed Tab text, Rename text). No source was lost or overwritten.

CanvasView.renameTo already uses withFreshEtag with three bounded reads. The exact reason that this operation did not recover from the 412 is not yet established. A live scene save or a Files notice may supersede its reads. The dialog remains open and shows the existing calm error, so Save can be tried again.

Reproduce with the new lifecycle block in apps/web/e2e/canvas-976.mjs: New Canvas → rename → reopen → add bound text with forced echo → immediate reload → close Tab while editing text → reopen → add text → two immediate retitles. Evidence: artifacts/merge-round-7c5/canvas-976-final.log. The error is a retryable rename gap, not data loss. Keep the revision fence and the existing bounded-read regression assertions when fixing it.

Found in merge round 7c5 (#867), branch job/merge-round-7c at 06bb908d4. The ordinary Canvas persistence regression saved four text elements, then renamed the Canvas to Retained Canvas and immediately back to Planning. The second retitle returned 412. The API still held Retained Canvas and all four text elements (Canvas plan, Reload text, Closed Tab text, Rename text). No source was lost or overwritten. CanvasView.renameTo already uses withFreshEtag with three bounded reads. The exact reason that this operation did not recover from the 412 is not yet established. A live scene save or a Files notice may supersede its reads. The dialog remains open and shows the existing calm error, so Save can be tried again. Reproduce with the new lifecycle block in apps/web/e2e/canvas-976.mjs: New Canvas → rename → reopen → add bound text with forced echo → immediate reload → close Tab while editing text → reopen → add text → two immediate retitles. Evidence: artifacts/merge-round-7c5/canvas-976-final.log. The error is a retryable rename gap, not data loss. Keep the revision fence and the existing bounded-read regression assertions when fixing it.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal#1090
No description provided.