Temporal validity
Every fact and edge carries valid_from and an optional valid_to. Superseding a fact closes the old window rather than deleting the row, so “what did we believe in March?” stays answerable. Pass as_of on a query to read the graph as it stood at any point in time.
Provenance and audit
Consolidated records point back at the exact source sessions, the extraction model that produced them, and the timestamp. When a fact looks wrong you can walk from the answer to the transcript that caused it, without guessing.
Confidence, not certainty
Extraction produces a score, and retrieval takes a floor. Low-confidence candidates can be surfaced for review instead of being silently promoted into the graph — and a genuine contradiction opens a conflict rather than overwriting the incumbent.
Controlled forgetting
Retention is a policy, not an accident. Episodes can be pruned on a schedule once the facts derived from them are consolidated; facts can be expired, superseded, or deleted outright for a subject-erasure request — and the deletion propagates through the graph edges that referenced them.
Human-in-the-loop for behaviour
Facts can be written automatically because a wrong fact is a retrieval problem. Procedures cannot, because a wrong procedure is an incident. Skill versions require explicit approval before they go live, and every activation is attributed.
Isolation you cannot misconfigure
Scope — tenant, user, agent — is a required field on every long-term record, not a filter applied at query time. Keys resolve to exactly one tenant, and there is no endpoint that reads across tenants.