Anyone shipping an agent whose memory must be auditable
It doesn't forget
When an agent changes its mind, keep the receipt.
Press Play — watch the same writes hit ordinary memory and CLS++ side by side.
Ordinary memory
CLS++ memory
nothing superseded yet
The problem
Agents are only as trustworthy as their memory — and most agent memory lies by omission. When a new fact contradicts an old one, the old belief is deleted. You lose the provenance of why the agent changed its mind, and you can't explain its behavior next week.
Delete-on-conflict — a contradiction wipes the old memory and its history.
Documented in mem0 #4536How CLS++ handles it
CLS++ treats a contradiction as reconsolidation, not deletion. An evidence-gated revision archives the superseded fact with full lineage and an incremented version, and surfaces the new belief. Default reads return the current belief; the entire change history is one query away.
Under the hood — the real script
"I love Chinese food" becomes "I now hate Chinese food." Watch the old belief survive.
python Benchmarking/conflict_resolution.pyBEFORE (after first statement):
CURRENT : 'love' | 'I love Chinese food' (version=1)
AFTER (after contradicting statement + reconsolidation):
CURRENT : 'hate' | 'I now hate Chinese food' (version=2)
ARCHIVED: 'love' | 'I love Chinese food' (superseded=True, lineage_of=[...])
Default retrieval returns current belief ('hate'): yes
Old 'love' fact archived with lineage, not deleted — history preserved.The belief can change. The record of how it changed can't be silently erased.