Bi-temporal beliefs with provenance chains, confidence, and structured abstention.
core evidence graph — real, 56 test files · ADR-012
The platform
Claude Code, Cursor, Codex, and opencode each keep a private, machine-local, unverified scrap of what your project knows. Zephr is the plane above all of them — one governed evidence graph that every tool reads from and writes to, and that can prove where each claim came from and who verified it.
Nine equal cards would be a feature wall. These group into three questions: what the work knows, what the system can work out, and what it is allowed to do.
What the work knows, and how that knowledge survives leaving one tool for another.
core evidence graph — real, 56 test files · ADR-012
Continuity Format v1 + authenticated handoff E2E-proven · ADR-014
crawler + zephr_docs shipped with honest degraded states · ADR-018
What the system can work out about the code, and how it shows its reasoning.
local tools + Qdrant substrate exist; hosted orchestration missing · ADR-028
ADR + exact-change contracts shipped; three issues in progress · ADR-023
radar page + freshness migration shipped; wiring partial · ADR-016
What the system is allowed to do, on whose authority, and with what proof.
firewall + admission real; TrustBench CI-blocking; T3 unbuilt · ADR-009, 013
fleet-domain + client-adapters real; UI needs honest empty states · ADR-017
adapters real; SDK integrations paused pending the real API · ADR-019
Status labels follow docs/PRODUCT-DESIGN.md §3. “Shipped” means substantially implemented and covered by tests; “Evolving” means real foundations with material work remaining; “Planned” means decided but not built.
A memory is not a row in a memory table and a handoff is not a row in a handoff table. Every kind of record is a provenance-linked node in the same graph, which is why a review finding can cite the decision that forbids a pattern and a recall can explain itself.
Evidence graph · one store, one write path
Every node reaches every other node through provenance edges. That is the whole trick: there is no second store to reconcile, so “why did you tell me that?” is a graph traversal rather than a guess.
The ledger below is the platform in one artifact: a claim captured, sealed, transported, challenged, and reviewed. Every card is real markup — select it, copy the hashes, read it with styles off.
The continuity ledger
Every card below is real markup — select it, copy the hashes, read it with styles off. This is the record Zephr keeps, not a picture of one.
A decision is captured explicitly and recorded with its citations.
The agent proposed a fourth retry; the engineer rejected it and recorded why. Zephr captures only what is handed to it — nothing is inferred from the transcript.
Stripe redelivers on its own schedule, so a fourth in-process retry double-charges the idempotency window instead of recovering from it.
The evidence card, its four citations, and its scope are serialized into one signed envelope. The signature covers the citations — not just the claim — so a receiving agent can tell whether the supporting files were swapped in transit.
The envelope opens and the signature checks out. Three cited files still match their recorded digests; backoff.ts changed after capture, so the agent flags it rather than reasoning from it.
The claim is still usable — it is simply carried forward with an open challenge instead of being presented as settled.
The reviewer sees exactly what changed: the recorded digest for backoff.ts, the current one, and the diff between them. Nothing is auto-resolved.
The reviewer re-pins the stale citation to its current lines and signs the result. The claim keeps its full history — the earlier provisional record is superseded, never overwritten.
Local mode is one file on disk and a loopback API. The evidence card, the envelope, and the signature are byte-identical to the managed path — the only thing that changes is where the file lives.
Illustrative example — not live data
These are the calls that collapse a pile of packages into one product. Each is stated with what it kills, the record that governs it, and how far along it actually is.
Summarized from docs/PRODUCT-DESIGN.md §2. The status column is the honest one: three of the eight are only partly built, and saying so is cheaper than being found out.
Kills split-brain stores, the 4,096-vector cap, the local-first/cloud-first contradiction
Kills the producer-less projector, schema-violating webhooks, dual-write drift
Kills env-var pseudo-tenancy, session pinning, hardcoded protocol versions
Kills slow per-machine cold starts, no shared code intelligence
Kills branch-poisoned memory, false whole-file staleness, overlay truth leakage
Kills daemon-deferral fiction, second-writer risk
Kills "exactly eight" theater and ungoverned tool growth
Kills disconnected feature islands
Illustrative example — not live data. Statuses are summarized from the decision records, not measured at runtime.
Above all eight sits one law: honest or absent. No fabricated data, no invented confidence, no simulated connectivity. Every surface renders exactly one true state of connected, disconnected, stale, or empty — and abstention is a feature (ADR-016).
Every decision on this page has a decision record behind it. Start with the docs, or look at how one claim survives the trip between four tools.