Overview
When an incoming memory cannot be true at the same time as an existing one, memloom keeps both active and records a conflict. Nothing is auto-overwritten and nothing is lost while it is pending.Both are kept
No last-write-wins, no model picking a winner behind your back.
You decide
Four resolutions, from the CLI, the viewer, or an agent relaying your choice.
Always revertable
Losers go stale, never deleted. Change your mind a week later and resolve it the other way.
How one is detected
On every save with dedup enabled:Exact duplicates short-circuit
Matched by content hash, with no model call.
Find candidates
Up to 5 active memories at cosine similarity 0.5 or above.
Classify each one
The model says how it relates to the incoming memory.
The record keeps the incoming memory, every contradicting candidate, and the classifier’s stated
reason, so you can see later why it was flagged.
Detection needs a model, so it is off in offline mode. Offline saves skip the belief pipeline
and always report
added.Resolving
Pending conflicts appear inmemloom conflicts, the viewer’s Conflicts tab,
GET /memory/conflicts, and the list_conflicts MCP tool.
Revert reactivates whatever was staled, deactivates the edges the resolution created, undoes any
lineage re-parenting, and puts the conflict back in the queue.
Letting a model clear the queue
keep_new, keep_existing, keep_both, or unsure, and is told to prefer unsure
over guessing. Only a decisive verdict resolves anything, and it lands in the same revertable
history as a manual one.
merge is not available to the judge. There is no reconciled text for a model to author on your
behalf.Three queues, one tab
The Conflicts tab holds three kinds of question. They share a surface and a revert, but not a scope.
Only memory conflicts reach the CLI and MCP surfaces. An agent asking about pending conflicts is
never handed a question about spelling, or a finding no human has confirmed.
Why possible contradictions are separate
Why possible contradictions are separate
Save-time detection compares an incoming memory against the 5 nearest that existed at that
moment, so a pair at rank 6 is never judged. The re-check goes back over old beliefs against 20
neighbours and finds those.Its measured precision is roughly 40 percent, so they wait as findings where dismissing costs a
click. Each shows the verbatim clashing sentence from both sides, so it can be judged in
seconds. Confirming one writes the real conflict row, and from there it behaves like anything
else on this page.