You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 7fcbd00
Browse filesBrowse the repository at this point in the historyBrowse files
Mount retention routes so a host can offer forget and purge (CL-6288)
tombstoneDocument, hardDeleteDocument and setRetentionClass were implemented, tested, exported — and reachable by no host over HTTP. A memory UI could show a user everything the system remembered about them and offer no way to take any of it back.
Three routes, each guarded on the same grant model as add/search and usable by browser and machine callers alike:
POST .../memory/documents/:documentId/forget memory:forget
POST .../memory/documents/:documentId/purge memory:purge
POST .../memory/versions/:versionId/retention-class memory:forget
forget and purge stay distinct routes with distinct grant actions, never a boolean flag, so a host can wire "forget this" broadly while restricting the irreversible one. Ownership is enforced by resolving the document's true creator before any destructive call: a share grant that lets a peer read a document never lets them destroy it, and grants only ever carry action "search".
Honest about what forget does: it stops the document appearing in search and overwrites chunk text with [redacted]. The content is destroyed, not archived, and there is no un-tombstone verb — earlier wording claiming reversibility was wrong and is corrected here.
Grant metadata renamed from source to installHint, because nothing reads it at request time. ARCHITECTURE.md now states plainly that this package has two authorization mechanisms — grant tags for capability and visibility, and the imperative ownership check as the sole source of truth for whose document it is.
sweepEphemeral is deliberately not routed: it is tenant-wide maintenance with no per-caller ownership, so a host schedules it against the in-process plane.
Known gap, filed: CL-6294 — purge deletes the version rows carrying deprecatedAt/reason, so it destroys its own audit trail.
0 commit comments