Skip to content

v0.16.2 — Forgetting no longer leaves a tombstone

Choose a tag to compare

@hoornet hoornet released this 09 Aug 11:33
· 32 commits to main since this release

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.