Methodology · how it works

Memory that knows when and why.

Most agent memory stores a string and hopes. abagraph stores a fact with two timelines and a source. It can tell you what it knew at any moment, where every claim came from, and why it changed its mind — without ever overwriting the past.

Four mechanics make that real: bitemporal time, calibrated confidence, atomic supersede, and context compaction. None of them are configuration. They are the substrate.

01

Two timelines, not one.

A normal database remembers what is true now. abagraph remembers what was true and when you learned it — two independent clocks on every fact. That separation is what lets an agent rewind to the exact world-state it reasoned over, and explain a past decision honestly.

FACT LIFECYCLE · subject = sarah-chen · predicate = role as_of(Apr 1)
VALID TIME when it was true in the world
as_of
role = Director · superseded
role = VP Product · valid_until = ∞
Jan 1
Apr 1
now
RECORDED TIME when abagraph learned it
recorded_at Jan 12 · Director
recorded_at Apr 3 · VP Product
as_of(Apr 1) → the graph as it stood that day: role = Director. The VP Product fact was true and recorded later — it does not leak backward.
VALID TIME · valid_from / valid_until

The window during which a fact is true in the real world. A correction to history changes valid-time without touching when you recorded it — so you can fix the past without lying about when you found out.

RECORDED TIME · recorded_at

The moment the fact entered the store, append-only and immutable. This is the audit axis: it answers “what did the agent actually know when it acted?” — the question every post-mortem starts with.

02

Every fact carries its receipts.

A fact is not just subject–predicate–object. It ships with a source and a calibrated confidence from 0.00 to 1.00. The score is the sort key for context. Below your threshold, the fact lands as a candidate — held, not surfaced — and the agent abstains rather than guesses.

FACT SOURCE CONFIDENCE
Sarah Chen — VP Product hr-system 0.98
Budget cycle closes end of Q3 call-2026-06-18 0.95
Primary pain: manual reporting support-ticket 0.92
Prefers async-first comms email-thread 0.88
THRESHOLD 0.80 · CANDIDATE-HOLD BELOW
Headcount ≈ 240 (scraped) linkedin-scrape 0.58
▲ status = Candidate · held back. Re-assert this same fact at full confidence and it is promoted to active — nothing is lost.
SOURCE

Where the claim came from, attached at write time. The agent can cite it, a reviewer can audit it, and you can revoke everything a bad source ever asserted in one query.

CALIBRATED CONFIDENCE

Not a vibe — a number the pipeline acts on. It ranks context, gates the candidate-hold, and gives the agent a principled reason to say “I’m not sure, please verify.” instead of confabulating.

03

Contradictions don’t overwrite. They supersede.

When a new fact contradicts an active one, abagraph doesn’t mutate a row. In a single atomic batch it closes the old fact (status Superseded, valid_until stamped) and opens the new one. The old fact never disappears — it just stops being current. Time-travel still sees it.

BEFORE · ACTIVE
sarah-chen · role · Director
status: Active valid_until: ∞
assert
VP Product
1 batch
AFTER · ATOMIC RESULT
sarah-chen · role · VP Product
status: Active valid_from: Apr 3
sarah-chen · role · Director
status: Superseded valid_until: Apr 3
ATOMIC

Close + open commit together. There is never a moment with two active roles, or none.

FUNCTIONAL

Most predicates hold one active object per subject. Set-valued ones (tags, references) coexist on purpose.

TENANT-LOCAL

Conflict resolution is scoped to your namespace. One tenant’s truth never supersedes another’s.

HISTORY-KEEPING

The superseded fact stays queryable forever. as_of and audit still find it.

04

From the whole store to one packet.

Bitemporal time, provenance, and supersede all converge on the call an agent actually makes: build_context. It recalls across vector, graph, relational, and temporal paths, ranks by confidence, collapses superseded facts, and trims to your token budget — one structured, source-cited packet, ready to inject.

2,300
Recall
Candidate facts across every access path for the seeds.
410
Rank & gate
Sorted by confidence; sub-threshold candidates dropped.
36
Dedupe
Superseded duplicates collapse to the single current truth.
8
Packet
Trimmed to the token budget. Source-cited, ready to inject.
build_context · MCP call
JSON-RPC 2.0
{
  "tool": "build_context",
  "args": {
    "seeds":       ["acme-corp", "sarah-chen"],
    "token_limit": 1200,
    "as_of":       "now"
  }
}
 8 facts · 840 tokens · every row source-cited
WHAT THE PACKET GUARANTEES
Strongest signals first — confidence is the sort key.
No stale duplicates — superseded facts already collapsed.
Fits the budget exactly — the rest of the window is free to reason.
Pin as_of to a past instant and replay the world as it was.
See context compaction in depth →
05

Agents that don’t hallucinate stale facts.

Put the four mechanics together and the failure mode disappears. The agent reads only current, high-confidence, source-cited truth — and when it isn’t sure, it says so instead of inventing.

WITHOUT abagraph
agent says
“I’ll loop in Director Sarah Chen on the renewal.”
  • Reads a stale title nobody ever closed out.
  • Can’t cite where the claim came from.
  • Acts on a low-confidence guess with full conviction.
WITH abagraph
agent says
“I’ll loop in VP Product Sarah Chen (hr-system, 0.98, current as of Apr 3).”
  • Current truth — the old title was superseded, not surfaced.
  • Cites source and confidence inline. Verifiable.
  • Below threshold? It abstains and asks you to confirm.
Early access open now

The method is the moat. Build on it.

Bitemporal time, calibrated provenance, atomic supersede, and one-call compaction — in a single embeddable engine, served over MCP. Not a vector index with extras bolted on.

Join early access Read the docs →