Agent memory that knows
when it shouldn't answer.

Every fact is a claim with provenance and a validity window. Contradictions and overwrites are graph structure, not something re-derived at read time. A graph probe answers simple questions cheaply, escalates conflicted ones, and abstains when the graph can't back an answer.

View source
hydraclaim · ask
QUESTION
What is the current launch deadline?
DEEP
Three claims cover this predicate, two supersessions deep, with one unresolved contradiction between sources. Cheap retrieval would have returned the stale one.
ANSWER
April 18, 2026
Cited from Slack #launch, Apr 3 · supersedes two earlier dates
GRAPH PROBE
Coverage3 claims
Contradictions1 edge
Supersession depth2 hops
Queries run5 · ~0.7 s

Overwrites and contradictions are structure, not accidents.

SUPERSEDES

Overwrites keep their history

When a fact changes, the old claim isn't deleted. A typed edge records the replacement, so the chronology of a decision is a bounded traversal instead of an inference over chunks.

CONTRADICTS

Conflicts surface, not average out

Two sources disagreeing is a first-class relationship. Trust scoring is predicate-specific, and unresolved conflicts stay visible rather than silently picking a winner.

ABSTENTION

No claim means no answer

Typed coverage is a query, not a similarity score. If nothing supports the question, the router declines and reports the gap instead of retrieving the nearest chunk and guessing.

Measured against the alternatives

50 questions · 16 scenarios · oracle ingestion · reproducible
ARMACCABST. P/RCONFLICTKUTEMPORALLOOKUPQ/Q · P95
Naïve RAG0.2800.000 / 0.0000.0000.9230.1430.0001.0 · 123ms
Question router0.6800.857 / 0.3750.2500.8461.0000.6674.8 · 1043ms
Always deep0.7800.857 / 0.3751.0000.9231.0001.0005.0 · 622ms
Router + graph probe0.9800.941 / 1.0001.0000.9231.0001.0004.7 · 733ms

50 questions across 16 scenarios (supersession chains up to depth 3, typed and untyped value conflicts, alias-only references, and as-of boundary reads). The naïve baseline picks the active claim with the most word overlap — it can't see supersession chains, can't surface conflicts, and guesses on every abstention. The graph probe gives typed coverage: abstain when nothing supports the question, escalate on conflict or history, answer cheaply only when the graph is clean. The single router+probe miss is a subject/object inversion ("who works on X" vs "X is owned by who") — a documented vocabulary limitation, not a retrieval error.