Truth maintenance.
A graph that only grows becomes wrong. Team0’s World Model re-reads itself continuously and retires what stopped being true, without ever deleting it, and without letting a model make that call alone.

Events accumulate. States are replaced.
The most important distinction in keeping a model true is between things that happened and things that are.
“Dana met Arun on Tuesday” is an event. Another meeting on Thursday does not make Tuesday’s meeting untrue, so events are never superseded by other events. “Dana is Head of Product” is a state. When a later, authoritative statement says she is now VP of Product, the earlier state is replaced and kept in history, and the change is recorded in a feed of what changed.
States that can be replaced are declared explicitly: role, employer, status, location, key dates and a few others. Supersession also respects the two clocks. A statement that arrives late but was said earlier than the current belief is stored as already superseded, so reading your mailbox in the wrong order never flips the truth back and forth.
What keeps the graph true.
Several independent mechanisms decide that something is no longer current. Each has one job and one kind of evidence.
- State supersession
- A newer value of a single-valued relationship or typed attribute replaces the older one as it is written.
- Plans that changed
- “Feedback tonight”, then “feedback tomorrow”. Right after the newer one is learned, Team0 checks it against earlier statements about the same people or from the same conversation, and retires the older one only when it is clearly the same matter, changed. When that is not clear, both stay, newest first, each with its date.
- Reinforcement, not duplication
- The same statement heard again strengthens the existing one instead of creating a copy. Money uses exact transaction keys, never wording, so two similar receipts stay two orders.
- Deadline expiry
- A dated item long past its date with nothing newer about it is retired by date arithmetic. No model involved.
- Events that are over
- A calendar-sourced item whose date has passed is over, not overdue, and stops being presented as open.
- Promises kept by someone else
- When newer evidence shows another party delivered what they promised, the open promise is closed.
- Tasks that closed
- When a tracked task reaches a terminal state, the statements exactly linked to it are retired by identity. A guessed match between a task and a promise never closes anything on its own.
- Cancelled meetings
- A meeting cancelled in the calendar retires what depended on it.
- Your corrections
- Rename someone, say an outcome happened, retract something, or say two things are the same. The correction propagates to everything built on it.
- Open loops
- Promises and requests are reconciled against later evidence, and a request answered later stops showing as waiting.
What never replaces anything.
Most mistakes in memory systems come from letting the latest thing win. These are the cases where Team0 deliberately doesn’t.
- Two people who say different things
- If one person says the deal closes in March and another says April, both stay. Team0 does not decide between people for you.
- Something heard over something confirmed
- A remark in passing can never retire what a source of record or you confirmed.
- A web page over what you said
- Something found on the open web can correct its own earlier answer, never what came from you or your work.
- Two records from a connected tool
- Two GitHub commits or two CRM records are two separate things, even when they look alike. The tool’s own sync keeps each one current.
- Facts about different people
- However similar they sound, statements about different people or different things are never treated as the same matter.
- Something you corrected
- No automatic step can flip it back, and reading the same email again does not bring the old version back.
When no rule can decide, nothing is decided silently.
Most conflicts are settled by the rules above. For the few that aren’t, Team0 keeps both sides visible instead of picking one.
- 01Conflict detectedSame record, same attribute, a genuinely different value, with no model involved.
- 02Held as contestedBoth statements stay current, and an agent that asks gets the disagreement with both sources, not a guess.
- 03Sometimes, you are askedNot about every conflict. At most one “which is current?” question a day, and until you answer, agents simply see both sides.
- 04Settled for goodYour answer retires the loser, entrenches the winner as your own statement, and is remembered.
Heard is not confirmed.
Not everything Team0 learns is treated as fact. What was only heard is kept, labelled and never passed off as true.
- What stays “heard”
- Something mentioned in passing, a statement Team0 isn’t sure about, or one where it’s unclear who it is about. It is kept and can be found, but it is not stated as fact.
- How agents see it
- When an agent reads your understanding, heard items arrive in their own section, labelled “heard, not confirmed”, so the agent reports them as said, not as true.
- What confirms it
- You confirm it when Team0 asks, you correct it, or a source of record shows it: the meeting appears on your calendar, the deal moves in your CRM.
- What doesn’t
- Repetition. Ten people mentioning something is still ten times heard. Being said often is not proof.
The laws every mechanism obeys.
New mechanisms are added to the system over time. These rules don’t change, and a mechanism that breaks one is a bug.
- 01
Never delete
A verdict marks a statement retired and, where something replaced it, points to the winner. The statement stays. Every retirement is reversible.
- 02
Every verdict is typed and attributed
Each retirement records who or what decided it and why: a deadline passed, the owner corrected it, a task closed, a newer state replaced it. An untyped retirement cannot be audited, so none exist.
- 03
One owner per kind of thing
A promise that is tracked as a task is closed by the task, and the graph mirrors that. Two mechanisms never fight over the same statement.
- 04
The model proposes; code decides
Where a model judges two statements, it must answer from a closed set of verdicts and defaults to doing nothing. Code decides what each verdict does. Model confidence was measured, clustered uselessly, and is never the decider.
- 05
Supersession keys on identity, never on wording alone
A statement replaces another through a single-valued relationship or the same typed attribute of the same record. A plan written in plain words is replaced only when two separate checks agree it is the same matter, about the same people, changed. Similar wording alone never retires anything.
- 06
A retirement survives re-ingest
When the same email is read again next cycle, a closed statement stays closed rather than quietly reopening.
- 07
Your corrections outrank everything
Something you pinned or corrected is exempt from automated deduplication, supersession and retirement. No later automated write can flip it back.
- 08
Dry run before you write
Every mechanism that retires beliefs ships in measurement mode first, logging what it would do. It only starts writing once its proposals hold up.
What is still in measurement mode.
Closing a promise is the most consequential judgment the graph makes, so the mechanisms that do it prove themselves before they write.
Two closers currently run as proposals only: closing a promise because you said it was handled, and closing a promise because a task that seems to match it completed. (A task exactly linked to its promise closes it directly.) An audit in August found cases where a promise with several parts was closed when only one part was done. Both went back to measuring, and they stay there until their proposals replay cleanly against real history. Until then, those promises stay open and visible.
- OverviewThe World Model
- ArchitectureFollow one fact from email to every agent
- Data modelStatements, two clocks, belief lanes
- Entity resolutionOne person, one record, carefully
- Trust and scopeWho said it, who may see it
- Understanding EngineFrom graph to a read an agent can use
- Memory vs understandingWhat a memory layer does, and what understanding adds
- Markdown vs Team0Where notes files stop, and what keeps them true
- ComparisonsSupermemory, Mem0, Letta, Zep, Claude and ChatGPT memory
- The 31 problemsEverything you have to solve, in one list
Your agents will change. Your understanding shouldn’t.
Invite-only private beta.