Skip to content

Forget memories completely; stop keeping deleted text in the audit - #1

Merged
alexeybe1kin merged 1 commit into
mainfrom
feat/forget-memory
Sep 25, 2026
Merged

alexeybe1kin merged 1 commit into
mainfrom
feat/forget-memory

Conversation

@alexeybe1kin

Copy link
Copy Markdown
Collaborator

Part of Conker-AI/conker#44.

Bug fixed

Deleting a memory copied its full text into memory_audit, and revision snapshots and conflict records kept it too. "Deleted" memories were still stored.

What changes

  • erase() runs in one transaction: removes the memory, its revision snapshots and conflict records, redacts its audit payloads, and writes a content-free audit entry plus a deletion receipt for recovery replay.
  • PUT /runtime/corrections/forget/{request_id}: owner-reviewed forget through the dedicated correction capability. Namespace-bound, revision-checked, idempotent, with a receipt that reports vector-index removal (removed or degraded).
  • The admin delete route uses erase() too.

Verification

  • New tests scan every table after forget and after admin delete: the forgotten sentence survives nowhere. Also covers replay, revision, namespace, capability and index outage. 116 passed.
  • Cross-repo: Pi's real correction client against this router, in one process: preview, forget and replay work; nothing left in any table.

🤖 Generated with Claude Code

Deleting a memory copied its full text into memory_audit, and revision
snapshots and conflict records kept it too, so "deleted" memories were
still stored.

- erase(): removes the memory, its revision snapshots and conflict
  records, redacts its audit payloads, writes a content-free audit entry
  and a deletion receipt for recovery replay, all in one transaction.
- PUT /runtime/corrections/forget/{request_id}: owner-reviewed forget
  through the dedicated correction capability, namespace-bound and
  revision-checked, idempotent by request id, with a receipt that records
  vector-index removal (removed or degraded).
- The admin delete route uses erase() too.

Tests: the forgotten sentence survives in no table after forget or
delete; replay, revision, namespace, capability and index-outage cases.
116 passed.

Refs Conker-AI/conker#44

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@alexeybe1kin
alexeybe1kin merged commit 8c7cb66 into main Sep 25, 2026
3 checks passed
@alexeybe1kin
alexeybe1kin deleted the feat/forget-memory branch September 25, 2026 14:07
alexeybe1kin added a commit to Conker-AI/pi that referenced this pull request Sep 25, 2026
- GET /memory/forget/{id} shows the exact current text and revision;
  POST /memory/forget forgets that revision through MemoryGate's
  correction capability (Conker-AI/memorygate#1), idempotent by request id.
- Pi then clears every cached per-turn memory package that quoted it.
  The source conversation is kept.
- Owner-control routes: through the browser the write needs the owner
  password. Outcomes map to 404/409/503; a lost reply is reported as
  unknown and is safe to repeat.

Tests: 8 new; full suite 1113 passed on Linux; auth 19/19 and audit
28/28 mutants caught. Cross-repo check against MemoryGate's real router:
nothing of the forgotten text remained in any table.

Refs Conker-AI/conker#44

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant