Maintained memory: from what was said to what is held, and why
Tell an agent in March that you live in Berlin. Tell it in October that you moved to Lisbon. Now ask where you live.
Most memory systems hold both statements and return whichever one retrieves better. The two sentences are nearly identical in meaning, so similarity cannot separate them. Neither memory knows the other exists, and nothing in the system has noticed that one replaced the other.
Maintained memory is our answer to this problem, and it is the next major direction for Remem. The idea is simple to state: a memory system should keep track of what it holds to be true and why, and it should revise that when the evidence changes.
Observed is not believed
The central idea is a distinction that most memory systems never draw: what was reported is different from what is currently held.
An observation is something that was said or experienced, kept as it arrived, along with who reported it and when. A focused memory is what Remem holds as a result: a claim, a preference, a decision, or an event, with a scope and a period when it applies. One observation can produce several focused memories, or none. Several observations can support the same one.
This changes who does the work. Today, an agent or its developer decides what deserves storing and how to phrase it. With maintained memory, a client reports what happened, and Remem does the forming. The agent is not asked to classify every turn or to spend its context on bookkeeping. It can still recall, remember, and correct.
Scope matters here too. “Prefers Python for analysis” stays a preference about analysis. It does not quietly become “prefers Python for everything”.
Every belief has a reason
A focused memory records why it is held: the evidence behind it and the premises it depends on. This is an old idea from truth maintenance systems, and it pays off when something changes.
Suppose A and B together support a conclusion C, and D supports C independently. If A is withdrawn, the first justification falls away, but C stands because D still supports it. If D goes too, C loses its support, and anything built on C is reconsidered as well. Claims that only point at each other in a circle support nothing, because support has to start from real evidence.
The same record is what makes a change reversible. Each thing Remem accepts is tied to the decision that accepted it, including which model proposed it. If a model turns out to have been misreading your data, its contributions can be removed and the beliefs recomputed from what remains, without losing the original observations.
Evidence decides, not arrival order
So who gets to say what is true? We considered administrators, roles, and review queues, and rejected all of them. Nobody can confirm every fact in a system that takes in hundreds of conversations a day.
Instead, trust comes from independent evidence:
- A source can update itself. When you say you moved to Lisbon, your newer report replaces your older one. Berlin stays on record as where you used to live, because superseding a belief does not make its history false.
- A different source cannot simply overwrite you. If someone else says otherwise, the claim becomes contested, and recall shows both sides with their sources. The newer statement does not win for being newer.
- Agreement needs real independence. Sources count as independent only when they differ in authenticated user or in declared external origin, such as a DOI, and nothing links one to the other. A hundred chats from one person are one source. A forwarded message is not a second opinion.
- Reliability is earned from the record. A source whose claims keep losing to corroborated ones gradually counts for less, within limits. No source becomes an oracle, and none counts for nothing.
Language models help here, but they do not get the final say. A model describes what an observation seems to claim, and fixed rules decide what is accepted. A model’s inference stays a hypothesis, and because revision uses no model at all, the same evidence always gives the same answer.
Every result carries its standing, so an agent can tell “one source said so” from “independent sources agree”. This has an honest consequence: in a single-user deployment, almost everything stays at “reported”. We prefer that to a confidence score implying more than the evidence shows. And “supported” never means true. It means justified under recorded rules, and you can ask which ones.
Forgetting is several different things
Remem already has lifecycle features: decay, promotion, expiry, and archiving. One health score cannot carry everything forgetting needs to mean, though, because several different questions have been sharing it. Is this memory supported? Does it apply right now? How likely is it to be useful in this context? May we keep it at all?
Maintained memory answers those separately, and it splits forgetting into distinct operations:
- Demotion lowers a memory’s ordinary priority while leaving it findable.
- Eviction frees fast storage without losing anything durable.
- Consolidation folds repetitive material together while keeping exceptions and the evidence that matters.
- Supersession or retraction changes the current belief without erasing history.
- Deletion actually removes data, under explicit policy, and accounts for what depended on it.
A memory that has gone cold is not necessarily wrong, and a memory recalled often is not necessarily right. Usage affects how readily something comes to mind. It never affects whether it is believed.
Knowing when an answer is not ready
Revising beliefs takes time, which creates a risk of its own: answering confidently from a state you already know is out of date. A correction arrives, and for a moment the old belief is still sitting there, looking current.
So maintained memory treats currency as something to prove. A read of current beliefs is answered only once revision has caught up with what has been accepted. If it has not, Remem says the answer is pending instead of serving something stale. Raw observations stay searchable throughout, so you can always look up what was said, even while what is held is still being worked out.
Where this stands
Maintained memory is not available in a released server yet. Much of the foundation is already in the codebase: the observation store, versioned memories, justifications, belief labelling, evidence grades, and revision. Remem 0.5.3 includes this groundwork, but it stays inactive and existing behaviour does not change. The piece still ahead is the one that matters most to you: forming memories from observations and exposing all of this through the API and MCP.
We also have to show that it works. The standard is the one we set earlier: an agent using Remem should become measurably more effective over thousands of sessions, with fewer stale or contradictory errors. Maintained memory has to meet that bar, like everything else we build.
A memory system should be able to answer more than “what is similar to this?” It should also be able to answer “what do we hold, why do we hold it, and what would change our mind?”