Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Retention

There is no garbage collection anywhere in the engine today. Not a missing feature with a workaround - no code path exists anywhere in mnem-store that removes a commit, a state, or a memory node once written. The closest thing to a deletion primitive, delete_branch, removes a name-to-commit pointer only; its own doc comment states the property plainly:

No force variant: with no garbage collection, a deleted branch's commits stay reachable by id.

The same is true of rm (a tombstone commit recording that a node was removed from working memory, not an erasure of the commits that created or changed it) and of every adapter's own clear/ clear_session/pop_item method - all tombstone commits, confirmed directly against each adapter's own implementation, never a hard delete.

What this means in practice

Every commit, once made, is retained for the life of the store. This is a real, already-true property of the current architecture - not a promise about a future feature, not a policy decision someone made and wrote down, just a consequence of there being no deletion code at all. log, blame, and bisect can walk back to the first commit a store ever had, for as long as the store file exists.

What this is not

This document states an existing fact about the engine, not a retention policy. Whether that fact is sufficient on its own to meet a given regulatory retention requirement (for example, the EU AI Act's Article 12 automatic event-recording and Article 26 minimum- retention provisions) is a separate question this document does not answer - it would need the primary legal text read against the current architecture, which is real research, not a documentation task. See map #376 for that open question.

Nor does "no GC exists" mean a store's files can never be deleted - a caller can always remove the .mnem/ directory itself, or the whole store, at the filesystem level. What's absent is any in-engine operation that selectively forgets part of a store's history while keeping the rest.