# Tri-temporal model

System time, known time, and valid time - supersession, aging, and explicit forget.

SurrealDB Agent Memory does not treat “delete record” as the primary way to retire a belief. Memories are **superseded** or **aged**; three clocks answer three different questions.

To put this in concrete terms, take the same sentences about a **cat**:

| Sentence | What you need to remember | Clocks and fields |
| --- | --- | --- |
| “I have a cat.” | True **for this person now** | **Valid time** includes today; scoped to the speaker |
| “I saw a cat last night.” | A **past** encounter, still tied to the speaker | **Valid time** on the night in question; **episodic** source turn |
| “House cats weigh about 4 kg.” | A **general** fact, not “about me” | Broader **scope**; may come from a document (**known time** = when you ingested it) |
| “I used to have a cat.” | Was true, **is not** now | **Supersession**: prior “has cat” gets `valid_until`; history stays queryable |

Humans do this without thinking. SurrealDB Agent Memory makes it explicit so agents - and auditors - can answer “what did we believe, when, and on what evidence?” without guessing from similar-looking chunks.

## The three clocks

| Clock | What it is | Answers | Example |
| --- | --- | --- | --- |
| **System time** | SurrealDB **MVCC** history - every write keeps a versioned record; you can reconstruct database state at an instant. | “What did the **database** contain at instant T?” | “What did we store about UK head of state on 8 September 2022?” (still “Prince Charles” in a snapshot taken that morning.) |
| **Known time** | When SurrealDB Agent Memory **first recorded** a belief; `as_of` walks supersession chains. | “When did **we** first believe this?” | “When did we first store that Charles became King Charles III?” (likely 8 September 2022, even if the user mentioned it days later.) |
| **Valid time** | When the fact held **in the real world**, via `valid_from` / `valid_until`. | “When was this **true**?” | Napoleon: valid time roughly 15 August 1769-5 May 1821; your assistant might only learn his birth year in a school chat years later - that learning moment is **known time**, not valid time. |

Document facts may carry a `valid_from` long before upload (e.g. policy effective date). Conversational facts usually anchor to turn time unless you supply otherwise.

## What you get in practice

- **Time-travel queries on previous database states** - without stitching together your own application tables.
- **`as_of` queries** - belief-level history over supersession chains, indexed for retrieval.
- **Supersession chains** - prior beliefs stay addressable with `valid_until` set; you can see how “Prince of Wales” became “King Charles III”.
- **Aging, not deletion** - stale observations can be marked superseded with a reason in provenance rather than erased.
- **`forget` as a first-class verb** - explicit user-driven removal, distinct from aging.

Together with [provenance](/docs/agent-memory/mental-model/provenance-and-traceability.md) and the **single reconciler** ([Eight pillars](/docs/agent-memory/architecture/eight-pillars-and-categories.md)), this supports a defensible audit story: unwind any current fact to what it replaced, to the source that produced it, and to the exact quote in that source - and rewind the database by system time while still querying belief history on known time.

Field-level detail: [Temporal validity](/docs/agent-memory/reasoning/temporal-validity.md) and [Reconciliation and supersession](/docs/agent-memory/reasoning/reconciliation-and-supersession.md).
