#478: advisory change feed for sync clients #489
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix-478"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements #478 per the design assessment on the issue.
internal/changes: journal (in-memory ring, opaque base64 (epoch, seq) cursors, debounced statestore persistence, clean-close epoch resume, dirty/crash epoch bump →{"expired": true}) + storage.Driver decorator recording only successful write/delete/move/mkdir/copy, no actor identity.unscopedStore— REST, WebDAV, TUS, peering and public-share uploads all covered; logical deletes recorded above trash;.cairn-state/structurally excluded (statestore binds the raw driver) plus a defensive skip.GET /api/v1/changes?since=&limit=500: session/app-password auth, per-caller visibility filter mirroring scope (own home translated to/home/…, member spaces incl.-roand app-owned via spacestore), moves with one end out of view degrade to delete/write. Nosince→ cursor only.changeJournal.Close()on graceful shutdown so cursors survive rollouts.docs/handbook/change-feed.mddocuments the protocol and the advisory contract (reconciliation backstop, no space-history replay).TDD: 8 journal/driver + 5 endpoint tests, witnessed red on the runner, full suite green.