---
title: "What is fact supersession in agent memory?"
description: "Fact supersession replaces an outdated fact by closing its validity window and linking the successor, instead of overwriting or deleting. Definition and mechanics."
canonical: https://past.dev/glossary/fact-supersession
last-updated: 2026-08-31
---
# Fact supersession

Source: https://past.dev/glossary/fact-supersession

Fact supersession records a replacement for an existing fact. The previous fact's validity window closes, the new fact receives its own window and a link records the replacement. Current-state queries select the new fact. Historical queries can still retrieve the previous fact.

## The three ways systems handle a changed fact

| Strategy | Current state | History | Failure mode |
| --- | --- | --- | --- |
| Overwrite | Clear | Lost | As-of questions unanswerable; silent rewrites |
| Append only | Ambiguous | Kept as text | Retrieval surfaces old and new with equal confidence |
| Supersession | Clear | Kept as structured windows | Storage grows with change frequency |

Append-only vector storage retains both statements without recording which one is current. An overwrite removes history. Supersession retains both facts and records their validity periods.

## Supersession vs deletion

Deletion removes information. Supersession marks a fact as no longer current while preserving it for historical queries. Use deletion for information that must be removed, such as a privacy erasure request. See [privacy](/privacy) for deletion behavior in past.dev.

## How supersession behaves in past.dev

Ingestion extracts facts onto the [temporal knowledge graph](/glossary/temporal-knowledge-graph). When a new fact contradicts a stored one about the same entity and attribute, the stored fact's [validity window](/glossary/validity-window) closes at the new fact's event time and the supersession link is recorded. Recall then returns the current fact with its dates and sources, and can report the superseded value for historical questions through [point-in-time recall](/glossary/point-in-time-recall).

When sources disagree and neither clearly supersedes the other, recall returns `Conflicted` with evidence from both sides. [What is agent memory?](/what-is-agent-memory) describes the complete memory pipeline. The [benchmarks page](/benchmarks) covers update tests. Integration examples are in the [docs](/docs/memory-api/quickstart).

## Why retrieval alone cannot substitute

Ranking and recency settings change retrieval order. They do not record that one statement replaced another. The system must record the change, date and source during ingestion because query-time retrieval cannot recover data that was overwritten.

## Frequently asked questions

### What happens when two facts conflict and neither is clearly newer?

past.dev keeps both and reports `Conflicted`, with the evidence and dates for each side. The application can then present the disagreement or route it for review.

### Is supersession the same as Zep's fact invalidation?

The ideas are close. Graphiti, Zep's open-source engine, marks an edge invalid when new information contradicts it, as their documentation describes. past.dev additionally links successor facts and exposes an explicit conflict status on recall.

## Related

- [Validity window](https://past.dev/glossary/validity-window)
- [Temporal knowledge graph](https://past.dev/glossary/temporal-knowledge-graph)
- [Point-in-time recall](https://past.dev/glossary/point-in-time-recall)
- [past.dev vs Zep](https://past.dev/vs/zep)
- [Quickstart](https://past.dev/docs/memory-api/quickstart)