v0.16.2 — Forgetting no longer leaves a tombstone
A follow-up to 0.16.0's forgetting feature, found by looking at a real memory store rather than a test one.
Fixed
- Forgetting no longer leaves a tombstone behind. Deleting a fact removed the content — but the turn that did it is itself extractable ("forget that my canary word is bumblebee" / "Forgotten."), so the extractor stored a new fact about the forgetting:
User no longer wants their test canary word remembered,User confirmed deletion of the bedroom cooling automation. These had quietly accumulated in a live store and were being read back on recall. A memory asserting that something is not remembered is worse than no memory at all.
Two layers, because a prompt rule alone doesn't hold on small local models: the extraction prompt now states it as NEVER with worked examples, and MEMORY_META_PATTERNS catches them deterministically whatever the model does.
The pattern is deliberately narrow, and here's why that matters: matchesGarbagePattern() is also applied retroactively by the cleanup job, so anything it matches is deleted from every existing memory store on the next sweep. A loose pattern would silently destroy real facts. Positive verbs (remember / retain / store) only count when explicitly negated, and "asked … to" only counts alongside a delete verb — so User asked me to remember that 100 ppm is normal survives, while You previously asked me not to retain your canary word does not. The new test file pins a regression set of twelve real facts taken verbatim from a live store.
Tombstones already in your memory are cleared by the cleanup job — it runs 30 seconds after start, then every 6 hours. Nothing to do.
254 tests, up from 233.
Upgrade: no configuration changes required.