Evidence Lab
This page is rendered from docs/engineering/evidence-matrix.json in the source tree, a condensed, machine-readable
ledger of docs/STATUS.md,
docs/launch/ACCEPTANCE.json and the study
results they cite. When an entry and its source disagree, the source is the record. Results that did not go
repo-ai’s way stay here on purpose.
Read every number with its scope. Most agent studies are small, synthetic and written by an AI agent: they are not independent evaluations. How the studies were run is on Evaluation & methodology.
Statuses
- DEMONSTRATED2Measured on fresh or held-out data under a frozen protocol; the claim holds within the stated scope.
- EXPERIMENTAL8Observed working live, but on very small samples (often n = 1) or constructed scenarios. A workflow demonstration, not a performance result.
- NEGATIVE RESULT6A study or qualification found the claim false or its gate missed. Kept visible on purpose.
- INCONCLUSIVE2A study was run, but its differences are within noise: neither benefit nor harm is shown.
- NOT YET DEMONSTRATED4No study has shown it. Either none was run, or the studies run could not separate the arms.
- BLOCKED1Could not be run or qualified because of an external or safety blocker; the blocker is named.
- UNSUPPORTED2Outside what repo-ai supports by design. Stated so nobody assumes otherwise.
DEMONSTRATEDMeasured on fresh or held-out data under a frozen protocol; the claim holds within the stated scope.
0 / 127
verify gives no false assurance on fresh held-out data
0 false assurances in 127 failing states; 0 new failures classified as pre-existing; 0 false alarms; runtime no-miss 96.7%.
Source for “verify gives no false assurance on fresh held-out data”:docs/release/0.8.0rc1.md234 / 234
No working tree was touched in 234 verify runs
Working tree unchanged in 234 of 234 runs; the integrity check also fails any run that touches it.
Source for “No working tree was touched in 234 verify runs”:docs/release/0.8.0rc1.md
EXPERIMENTALObserved working live, but on very small samples (often n = 1) or constructed scenarios. A workflow demonstration, not a performance result.
0.858
context finds named code from identifiers
recall@1 0.858 for an exact symbol, 0.883 for a renamed symbol, 0.551 for a symbol named in an issue.
Source for “context finds named code from identifiers”:docs/STATUS.mdn = 1
Live coding-agent candidates, independently re-verified
Codex CLI 0.165.0 produced a PASS LIVE_CANDIDATE_VERIFIED change through repo-ai do, with coverage, apply (post-apply tests 4/4) and undo (bytes restored); agy 1.4.9 took part in the tournament and handoff journeys.
Source for “Live coding-agent candidates, independently re-verified”:docs/launch/evidence/LIVE-JOURNEYS-2026-10-29.mdn = 1
Hand unfinished work to a different agent
Codex → agy: Codex left validated partial progress, the capsule verified VALID, agy kept Codex's diff byte-identical and reached PASS; independent hidden oracle 714/714. An earlier agy → Codex transfer also reached PASS.
Source for “Hand unfinished work to a different agent”:docs/launch/evidence/LIVE-JOURNEYS-2026-10-29.md4 / 4
Tournaments abstain instead of picking a winner
In abc-v3 both providers passed with different diffs on every task, so the no-tie-breaker rule abstained 4 of 4; on 2026-10-29 one live comparison abstained (distinct passing diffs) and one byte-identical pair was resolved by the equivalence rule.
Source for “Tournaments abstain instead of picking a winner”:benchmarks/abc-v3/RESULTS.mdPASS, oracle 17/17
Claude Code as an isolated execution provider
On the published 0.10.0 wheel, Claude Code 2.1.314 produced a model-generated fix inside repo-ai's isolation; repo-ai re-ran the frozen tests (PASS LIVE_CANDIDATE_VERIFIED), an author-written hidden oracle passed 17/17, apply and undo were byte-exact; a hostile repository's injected instructions were not followed.
Source for “Claude Code as an isolated execution provider”:docs/engineering/evidence/JOURNEYS-0.10.0-PYPI.md1 of 4 PASS
An account-free local model as a repo-ai provider
OpenCode 2.2.1 with qwen3:8b (Ollama, loopback only, $0): on the published 0.10.0 wheel one attempt was refused (broken edit) and one passed the visible tests while failing a hidden case (it dropped a docstring requirement no test pinned; repo-ai labelled the claim ASSURANCE_PARTIAL); on development builds 1 of 4 passed (hidden oracle 9/9). repo-ai refused every broken candidate.
Source for “An account-free local model as a repo-ai provider”:docs/engineering/evidence/JOURNEYS-0.10.0-PYPI.md2 hosts
A repo-ai-installed skill loads on two real hosts
A skill vetted and installed by repo-ai was listed and invoked by Claude Code (paired run: the convention it states appeared in 2 of 2 tests with the skill, 0 of 2 without) and loaded by OpenCode from .agents/skills on request; uninstall restored every file byte-for-byte.
Source for “A repo-ai-installed skill loads on two real hosts”:docs/engineering/evidence/SKILL-HOSTS-2026-10-30.mdPASS_WITH_PRE_EXISTING_FAILURES
A fix verified on a real repository with unrelated failures
On un33k/python-slugify (a deliberate regression committed as a bad commit), a live Codex candidate was verified through a scoped mission (--expect-fix with the three tests the regression broke): the declared tests went from failing to passing, nothing that passed at the base failed, 20 unrelated failures were listed; the candidate is byte-identical to the upstream line. An unscoped mission on an equivalent candidate (Claude's recorded fix, replayed) could not be verified because of the 20 unrelated failures.
Source for “A fix verified on a real repository with unrelated failures”:docs/engineering/evidence/REAL-PROJECT-2026-10-30.md
NEGATIVE RESULTA study or qualification found the claim false or its gate missed. Kept visible on purpose.
0.320
context on plain-prose and error-message queries
recall@5 0.320 on natural-language and error-message queries: prose queries are weak.
Source for “context on plain-prose and error-message queries”:docs/STATUS.md1 of 4
repo-ai reported PASS for a false green
On node-slug, repo-ai reported PASS / LIVE_CANDIDATE_VERIFIED for a candidate that failed a hidden requirement the visible tests never stated.
Source for “repo-ai reported PASS for a false green”:benchmarks/abc-v1/RESULTS.md1.44–2.31×
verify is faster than running the native suite
On held-out-7, verify --run was slower than the native suite on 3 of 5 projects (1.44×, 1.70× and 2.31× the native time) and faster only on the two larger ones.
Source for “verify is faster than running the native suite”:docs/release/0.8.0rc1.md0.385 vs 0.80
Capability recommendation meets its recall gate
FAIL: top-3 recall 0.385 against a gate of 0.80; shortlist recall@6 0.736; top-3 precision 0.712; 5 constraint-forbidden recommendations reached the top 3. Still above the lexical (0.088) and repository-only (0.286) baselines.
Source for “Capability recommendation meets its recall gate”:docs/CAPABILITIES.md12 of 42
Plugin inspection passes its fresh validation
FAILED: 12 of 42 benign cases were blocked; executable-resolution coverage 0.25 (0.43 after a post-hoc corrective pass, still a fail). Nothing critical or unresolvable was reported eligible.
Source for “Plugin inspection passes its fresh validation”:docs/SKILL_NETWORK.md3 classes
ProofLab (prove) qualification
NOT QUALIFIED: the release qualification found false proofs inside the narrowed scope (swallowed-assertion, importorskip-zero-entry-points, always-equal-class). The sealed certification is blocked.
Source for “ProofLab (prove) qualification”:docs/STATUS.md
INCONCLUSIVEA study was run, but its differences are within noise: neither benefit nor harm is shown.
92 / 90 / 88 %
Claude Code succeeds more often with repo-ai context
Plain Claude 92%, repo-ai Core 90%, repo-ai Full 88%; Holm-adjusted p = 1.0 for every comparison; equivalence not shown either. Full cost about 10% more.
Source for “Claude Code succeeds more often with repo-ai context”:benchmarks/results/coding-option-a-v0.7.5.md92 / 84 %
Core vs plain Claude on sealed-v2
Plain solved 23 of 25 (92%), Core 21 of 25 (84%); −8 points, 95% CI −22 … +7, p = 0.5.
Source for “Core vs plain Claude on sealed-v2”:benchmarks/results/coding-sealed-v2-pairs-v0.7.7.md
NOT YET DEMONSTRATEDNo study has shown it. Either none was run, or the studies run could not separate the arms.
14 tasks
Lift over a standalone coding agent
In abc-v2 to v4 the bare provider already solved every task, so nothing could separate the arms; in abc-v1 the one-task difference of four is consistent with noise.
Source for “Lift over a standalone coding agent”:docs/launch/EVALUATION.md0 of 4
repo-ai catches false greens better than “tests pass”
Calibration only: repo-ai (arm B) accepted 5 of 9 semantic decoys and 0 of 10 test-gaming controls, against 9 and 10 for “tests pass”; task-level discrimination 0 of 4. The confirmatory phase was not run.
Source for “repo-ai catches false greens better than “tests pass””:docs/launch/EVALUATION.mdThe opt-in verify completion gate changes agent outcomes
Its own tests pass; its effect on agent outcomes has never been measured.
Source for “The opt-in verify completion gate changes agent outcomes”:docs/STATUS.mdWindows, on fresh data
Unit tests pass in CI (Python 3.10 and 3.13); no held-out or fresh-data run on Windows.
Source for “Windows, on fresh data”:docs/STATUS.md
BLOCKEDCould not be run or qualified because of an external or safety blocker; the blocker is named.
exit 41
Gemini CLI as an isolated execution provider
A bounded retry through repo-ai do failed authentication (Gemini CLI exit 41) before any edit, for the tested account. From 0.10.0 repo-ai no longer copies ~/.gemini into the sandbox; live Gemini needs GEMINI_API_KEY or GOOGLE_API_KEY.
Source for “Gemini CLI as an isolated execution provider”:docs/engineering/INTEGRATIONS.md
UNSUPPORTEDOutside what repo-ai supports by design. Stated so nobody assumes otherwise.
Missions (repo-ai do execution) on Windows
Not supported: apply needs POSIX no-follow file operations.
Source for “Missions (repo-ai do execution) on Windows”:docs/launch/LAUNCH_REPORT.mdPer-file test selection for Jest, Vitest and Mocha
These runners are opaque to verify: they run only as a full suite, one runner per invocation; monorepos with several runners are not supported.
Source for “Per-file test selection for Jest, Vitest and Mocha”:docs/STATUS.md