Daviance
Proof of what an AI coding agent actually did.
Daviance is proprietary and in private evaluation.
Problem
AI coding agents can report success while deleting tests, adding skips, or weakening assertions. Reviewers need proof of what the agent actually did.
My role
Co-founder. I built Daviance with my co-founder.
Constraints
- Daviance builds and tests a repository only from the repository’s own declared configuration: its CI workflows, package.json, pyproject, go.mod, or Makefile. If it finds none, the verdict is unsupported, never an accusation.
Architecture
Given a repository, a task, and the agent’s transcript, Daviance returns one of four verdicts: verified, suspect, failed, or unsupported. Every verdict is backed by an ed25519-signed evidence pack that anyone can replay on their own machine. Packs are currently signed with a development key; keyless signing through Sigstore is the next step.
- Tamper analysis uses Tree-sitter across Python, JavaScript, TypeScript, and Go.
- Held-out tests are committed to a public append-only transparency log before they are revealed: Sigstore Rekor in production, a hash-chained log in development.
- The verdict engine is a pure function with no I/O. A dependency gate in CI enforces that.
Runs start from three entry points that share one pipeline: the command-line tool; an MCP server, where a coding agent calls Daviance on its own work as a rework loop; and a GitHub App, which picks up agent pull requests and reports the verdict as a Check run.
Key decisions and trade-offs
A pure verdict engine
- Chosen: the verdict engine is a pure function with no I/O, enforced by a dependency gate in CI.
- Why: with no I/O and no outside world, the engine can be tested exhaustively and reasoned about adversarially.
Fail closed on accusation
- Chosen: the verdict engine fails closed on accusation.
- Why: a merge gate that cries wolf gets uninstalled in a week. Ambiguous rules fall to a warning and become accusations only with recorded corroboration, and a repository Daviance cannot build returns unsupported rather than an accusation.
- Trade-off: Daviance gives up some recall to keep precision.
Signed, replayable evidence
- Chosen: every verdict is backed by an ed25519-signed evidence pack that anyone can replay on their own machine. Packs are currently signed with a development key; keyless signing through Sigstore is the next step.
- Rejected: asking reviewers to take Daviance’s word for the verdict.
- Why: the pack, not Daviance’s word, is the source of trust. Its replay script reproduces the verdict on a clean machine without trusting Daviance at all.
Held-out tests behind a transparency log
- Chosen: held-out tests are committed to a public append-only transparency log before they are revealed: Sigstore Rekor in production, a hash-chained log in development.
- Rejected: timestamping the commitment in Daviance’s own database.
- Why: an append-only public log timestamps the commitment before the tests are revealed, so any challenger can check the tests were not written after the fact.
Syntax-aware tamper analysis
- Chosen: tamper analysis with Tree-sitter across Python, JavaScript, TypeScript, and Go.
Status and results
- The current gate caught 42 of 42 planted cheats at 1.000 precision.
- Cumulative to date: 0 false accusations across 1,793 honest cases from four sources, including 1,138 agent PRs (28 live and 1,110 merged).
- Proprietary, in private evaluation.
What’s next
Keyless signing through Sigstore, replacing the evidence pack’s static ed25519 key.