# The accuracy promise

Defensible correctness - provenance, reconciliation, tri-temporal history, traces, and inspectable substrate state.

SurrealDB Agent Memory is built around a single design question:

> Can someone watch the substrate in real time and **verify** that the agent is operating on the right information - not infer it from output quality alone?

That requires structured facts, **first-class provenance**, **non-destructive** belief history, **explicit uncertainty**, and **graph-resident traces** that make retrieval and reconciliation auditable. It is the same standard you apply informally when someone says they **used to** have a cat: you keep the old fact in mind, date it, and do not treat it as current - SurrealDB Agent Memory makes that distinction queryable.

## Structured facts, not opaque blobs

Turns and document passages are reconciled into **entities**, **attributes**, and **relations** stored in SurrealDB - not only as embedded chunks. Discrete records are what make the rest of the guarantees possible: you can query “what is the current role?” deterministically, enumerate everything known about an entity, and detect duplicates structurally.

## Provenance is a field, not a log line

Fact-bearing records carry a **`source`** object ([Provenance and traceability](/docs/agent-memory/mental-model/provenance-and-traceability.md)):

- **`source.kind`** - `turn`, `document`, `reflect`, `elaboration`, `consolidation`, …
- **`source.ref`** - originating turn, document, or trace identifier
- **`source.span`** - character positions for quoting the originating message or passage
- **`source.trust`** - default weight for how authoritative that source stream is (curated document versus casual turn, and so on)
- **`source.derived_from`** - lineage for reflections, elaborations, consolidations, collective promotion

Calibration stores **`attribute.confidence`** (reconciler posterior) **separately** from `source.trust`. A low-confidence extraction cannot silently supersede a higher-confidence belief; it becomes **`uncertainty`** instead. See [Surface, models, and security](/docs/agent-memory/architecture/surface-security-and-models.md) for the model-hook story.

## Model-derived facts are first-class - and visibly probabilistic

Facts minted by reflection, elaboration, or consolidation are stored with their own **`source.kind`**, a **`source.derived_from`** link to the inputs they were synthesised from, and a **lower default trust** than a human turn or an authoritative document. A probabilistic upstream remains visible at every hop in the chain - it is not laundered into ground truth because it became input to a later stage.

## Walking “why did this change?”

Supersession chains answer **what** changed between two points in time. **`decision_trace`** nodes answer **why** the reconciler moved: what it considered, what it superseded, and which source triggered the update. Compare two traces to see whether a revision came from **new inputs**, **different retrieval**, or **model variance** with the same inputs recorded in the trace metadata.

## Three ways memory stops being “current”

**Supersession** (“this replaced that”), **decay with reinforcement** (“this faded from relevance”), and **forget** (“remove from the agent’s working set”) are intentionally separate. See [Supersession, decay, and forget](/docs/agent-memory/mental-model/memory-lifecycle.md).

## One reconciler, explicit uncertainty

Document facts and turn facts **meet in the same graph** and pass through the **same** supersession-and-uncertainty logic. Cross-provenance contradictions become **`uncertainty`** records instead of silent overwrites - **not last-write-wins**. Same-stream updates supersede with `valid_until` on the prior record. When confidence is below the calibration floor, SurrealDB Agent Memory refuses to do away with a stronger existing belief and surfaces uncertainty instead.

Concurrent writers hit the same reconciler in **one ACID transaction** per write, so conflicts are recorded where the facts live - not reconciled eventually by a background job that leaves stale reads in between.

## Tri-temporal, not “delete and forget”

SurrealDB Agent Memory tracks **three clocks** - system (MVCC), known (`as_of` over supersession), and valid (real-world `valid_from` / `valid_until`). Aging and supersession replace naive deletion; **`forget`** exists when operators or users require explicit removal. See [Tri-temporal model](/docs/agent-memory/architecture/tri-temporal-model.md).

## Traces make behaviour inspectable

Every ranked read can emit a **`retrieval_trace`**; every reconciliation emits a **`decision_trace`**; `/chat` and `/reflect` emit **`response_trace`**. They are **nodes** with edges to the entities and attributes they touched - so you can walk “this answer used these retrievals → which considered these records → which decisions superseded what.” See [Traces and memory evolution](/docs/agent-memory/architecture/traces-and-evolution.md).

## Authoritative versus experiential streams

Curated knowledge and conversational knowledge are distinguished by **`source.kind`** and trust policy, **not** by hiding one half in a separate database you cannot join transactionally. When user assertions disagree with curated documents, reconciliation preserves curated truth and surfaces the clash ([Unified substrate and authority](/docs/agent-memory/mental-model/two-layer-architecture.md)).

## Observable today

Operators can use HTTP and CLI surfaces (`spectron entities …`, `spectron sessions …`, `spectron recall …`, `spectron inspect trace:…`) plus direct SurrealDB access on self-hosted stacks to read live state and historical belief - the same substrate the ranker uses. A fuller inspectability list is in [Surface, models, and security](/docs/agent-memory/architecture/surface-security-and-models.md).

Together, these properties mean “is the agent correct?” has a **defensible** answer: you can point to records, spans, traces, and time axes - not only to a model transcript.
