diff --git a/backlog/tasks/task-027 - Implement-proper-Automerge-CRDT-sync-for-offline-first-support.md b/backlog/tasks/task-027 - Implement-proper-Automerge-CRDT-sync-for-offline-first-support.md new file mode 100644 index 0000000..5e4b694 --- /dev/null +++ b/backlog/tasks/task-027 - Implement-proper-Automerge-CRDT-sync-for-offline-first-support.md @@ -0,0 +1,34 @@ +--- +id: task-027 +title: Implement proper Automerge CRDT sync for offline-first support +status: In Progress +assignee: [] +created_date: '2025-12-04 21:06' +labels: + - offline-sync + - crdt + - automerge + - architecture +dependencies: [] +priority: high +--- + +## Description + + +Replace the current "last-write-wins" full document replacement with proper Automerge CRDT sync protocol. This ensures deletions are preserved across offline/reconnect scenarios and concurrent edits merge correctly. + +Current problem: Server does `currentDoc.store = { ...newDoc.store }` which is full replacement, not merge. This causes "ghost resurrection" of deleted shapes when offline clients reconnect. + +Solution: Use Automerge's native binary sync protocol with proper CRDT merge semantics. + + +## Acceptance Criteria + +- [ ] #1 Server stores Automerge binary documents in R2 (not JSON) +- [ ] #2 Client-server communication uses Automerge sync protocol (binary messages) +- [ ] #3 Deletions persist correctly when offline client reconnects +- [ ] #4 Concurrent edits merge deterministically without data loss +- [ ] #5 Existing JSON rooms are migrated to Automerge format +- [ ] #6 All existing functionality continues to work +