The Coding-Agent Trial: Shortlist to Adoption Verdict on Your Repo
You will run a controlled trial that yields a defensible adopt, hold, or reject verdict for a coding agent, scored against your own repo baselines.
You are choosing which AI coding agent, if any, your team should adopt, and you have decided not to trust a public leaderboard to make the call. This guide is the end-to-end trial procedure for engineering managers, technical founders, developer-relations leads, and technical sourcers: what to measure before the trial starts, how to isolate harness effects from model effects, the sample size that holds up, and the numeric thresholds that separate adopt from reject. Follow it start to finish and you will produce a defensible adopt, hold, or reject verdict scored against your own repository, not against benchmark scores.
Why a leaderboard cannot make this decision for you
A public benchmark score tells you how an agent performed on old, public, contaminated tasks under someone else's scaffold. It does not predict how it behaves on your private code, your review process, or your definition of done. Two mechanisms break the leaderboard-to-adoption inference, and both are measurable.
The first is contamination. In SWE-bench, 32.67% of successful patches involve direct solution leakage from the issue text, and over 94% of Verified issues and their ground-truth pull requests predate the knowledge cutoffs of leading models. The agent may be recalling the answer, not solving it. The second is that the score is not even the score you think it is: 31.08% of passing SWE-bench patches ride inadequate oracles, and OpenAI's manual audit of 138 o3 failures found 59.4% were caused by test flaws, which led them to recommend discontinuing SWE-bench Verified reporting entirely.
So the question "how to evaluate AI coding agents" has one honest answer: run a coding agent trial on your own codebase. Everyone says this. Almost no one tells you the baselines to capture, the task set to draw, the sample size, or the decision rule. That gap is what this guide fills.
The baselines to capture before the trial starts
Capture your delivery baselines for human-authored changes first, because without them any post-trial number is unanchored. The load-bearing frame is the DORA delivery metrics plus a rework signal, pulled from your version control and CI over roughly two weeks of existing data.
The DORA research program defines change lead time, deployment frequency, mean time to restore (MTTR), and change failure rate (CFR), which is the percentage of deployments to production that result in a failure. It adds a fifth metric, rework rate, which measures the amount of code rewritten or deleted shortly after being committed. That fifth metric is the one that catches AI-specific damage.
Resist the temptation to lean on suggestion acceptance rate. The number of generated lines and raw acceptance rates say little about whether throughput, quality, and stability actually improve. Acceptance is an activity metric; you need outcome metrics.
| Baseline metric | What it proves | When it lies |
|---|---|---|
| Change lead time | Speed from commit to merge or deploy | Falls while rework rises, hiding churn |
| Change failure rate | Share of deploys that fail | Stays flat while absolute incidents grow |
| Rework rate | Code rewritten or deleted soon after commit | Ignored, it masks a low CFR that hid the fix cost |
| Deployment frequency | Cadence of shipping | Rises on trivial deploys, inflating apparent velocity |
Note "queue depth" is not an established public baseline, so capture review-queue and work-in-progress numbers from your own tracker rather than citing a standard figure. The 2025 DORA report, drawing on nearly 5,000 professionals, found that teams increasing AI adoption experienced worsened change failure rate and deployment rework rate even as individual output increased. Your baseline table is what lets you see that inversion when it happens.
The trial size that actually holds up
Size the trial off the strongest published template and adjust down deliberately. METR ran a randomized controlled trial to measure how early-2025 AI tools affect experienced open-source developers working on their own repositories, using 16 experienced developers, 246 tasks, and mature repositories, with tasks averaging two hours each. That is the shape to imitate: real developers, real repos, tasks drawn from work that would normally happen anyway.
Most teams cannot muster 246 tasks. A defensible compromise is 30 to 50 real issues per repo. The harder sizing question is runs-per-task, because agents are non-deterministic. Setting temperature to zero does not guarantee identical results; accuracy can still vary by 15% across runs. Worse, τ-bench found agents achieving 60% pass@1 may exhibit only 25% consistency across multiple trials. One lucky pass is not capability.
From candidate agents to an adoption verdict
- 4-6Candidate agents shortlisted
from public reputation, not scores
- 30-50Private tasks drawn
real repo issues with tests
- k=3 minimumRuns per task
10-20 for high-risk tasks
- 1 per agentVerdicts issued
adopt, hold, or reject
Running an agent 10 to 20 times per task gives proper statistical coverage but is expensive. The defensible floor is k=3 with a pessimistic bound: use the worst of the three runs, not the best, as the task's score. Spend your 10-to-20-run budget only on the highest-risk tasks where a flaky pass would move the verdict. Choose k before you run; deciding after you see results is how motivated reasoning enters.
The task set: what to draw and how to judge it
Seed a private task set with the categories that mirror real work and stress different agent skills, then judge against tests while treating those tests as fallible. METR's issues were bug fixes, features, and refactors that would normally be part of regular work. For a trial, draw bug fixes, test generation, dependency upgrades, and small refactors, because they exercise reading, writing, and integration in different proportions.
Each task needs clear acceptance criteria and a passing or failing test attached. But a passing test is not a passing verdict. About 31% of instances with passing patches rely on insufficiently robust test suites, allowing plausible but semantically wrong patches to pass. For high-risk tasks, manually review passing patches rather than trusting the green check.
| Task type | What it stresses | Judgment method |
|---|---|---|
| Bug fix | Localization and minimal correct change | Regression test plus manual review on high-risk |
| Test generation | Coverage of real behavior, not tautologies | Mutation or oracle-strength check |
| Dependency upgrade | Cross-file integration, breaking changes | Full suite plus build and runtime smoke test |
| Small refactor | Behavior preservation | Unchanged test suite must still pass |
Judge stability post-merge, not just at merge. In AI-augmented workflows a low CFR can hide a high rework rate: if a team is fixing AI-generated errors before they reach production, they avoid a deployment failure but lose developer effectiveness. Track rework and churn on agent-authored changes across the trial window. GitClear research shows churn rising from 3.3% to 5.7-7.1% alongside AI adoption, and Faros AI found bug rate rising 9% per developer. If your rework rate climbs like that, a clean pass rate is misleading you.
A green test suite is a claim, not a verdict; on high-risk tasks, read the patch yourself.
Isolating the harness from the model
Before you credit any score to the model you are considering, run an ablation, because the harness moves scores as much as or more than the model does. The harness, also called the scaffold, is the wrapper that controls prompts, tools, retries, and context management around the raw model. Same model, different scaffolding can vary by 10 to 20 percentage points on the same benchmark.
The evidence is stark. On the Morph leaderboard, six leading frontier models span only 4.9 percentage points under the standardized SEAL scaffold, from 41.0% to 45.9%. Hold Claude Opus 4.5 fixed and vary only the harness, and that range widens to 9.5 points. HAL reports double-digit cross-scaffold gaps of 34 points for Claude Sonnet 4.5, 34 for GPT-5 Medium, and nearly 48 for o4-mini, far larger than the cross-model spread under either scaffold. Independent monitoring reports 11 to 15 points of scaffold-only variation on SWE-bench Verified.
| Benchmark | Fixed model | Harness delta |
|---|---|---|
| SWE-bench Pro | Claude Opus 4.5 | +9.5pp (SEAL to Claude Code) |
| SWE-bench Verified | Grok 4 | +14-16pp (SWE-agent to xAI) |
| SWE-bench Verified Mini | o4-mini | ~48pp (SWE-Agent vs HAL) |
| SWE-bench Verified | general | 11-15pp scaffold-only |
The practical consequence: when you compare coding agents, a harness change on your own repo can dwarf the difference between two models. The scaffold taxonomy behind this ranges from tool counts of 0 to 37, through seven context-compaction strategies, to five loop primitives across 13 systems. So run the same private tasks twice: once holding the model fixed and swapping the harness, once holding the harness fixed and swapping the model. Produce a delta table that attributes points to each axis. Without it, you will buy a model when you actually needed a better wrapper, or reject a strong model trapped in a weak one.
Reading the ablation result
Finding the right internal or external reviewer for an ablation is its own sourcing problem, and describing the person in plain English is faster than reconstructing it from filters. Refolk turns a description like that into a ranked list of engineers who actually own these dashboards, which removes the friction of guessing who to ask.
The end-to-end trial procedure
Run these eight steps in order. Owners and rough durations are noted so you can staff and schedule the trial rather than improvise it.
The coding-agent trial, start to finish
- Capture your baselinesPull change lead time, deployment frequency, CFR, MTTR and rework rate for human-authored changes from your VCS and CI. Done means a written baseline table with a number and a definition per metric. Owner: eng lead or EM, about two weeks of existing data.
- Draw the private task setHave senior engineers list 30 to 50 real issues across bug fixes, test generation, dependency upgrades and small refactors, mirroring METR's real-value method. Done means each task has acceptance criteria and a passing or failing test. Owner: senior engineers, 1-2 days.
- Freeze configurationPin the model version, harness version and judge version, and record an environment hash. Done means a locked manifest. Owner: platform eng, half a day.
- Run the controlled trialRandomly assign tasks to agent-allowed and agent-disallowed, mirroring METR, and run each agent task at least three times, 10 to 20 for high-risk. Done means matched pass/fail and time records per task per condition. Owner: EM, 1-2 weeks, up to ~16 engineers.
- Isolate harness from modelRe-run the same tasks holding the model fixed while swapping harness, then holding harness fixed while swapping model. Done means a delta table attributing points to each axis. Owner: platform eng, 2-3 days.
- Score quality and rework post-mergeTrack CFR and rework or churn on agent-authored changes against baseline across the trial window. Done means stability deltas, not just pass rates. Owner: reviewers, over the trial window.
- Apply the decision ruleCompare deltas against baselines and require significance above run-to-run noise. Done means a written adopt, hold or reject verdict with the numbers behind it. Owner: EM plus eng lead, one day.
- Set re-test triggersDefine contamination-age and version-change triggers. Done means a documented re-evaluation policy. Owner: platform eng, half a day.
Note one deliberate disagreement to resolve up front. Some practitioners run 10 to 20 times per task for full statistical coverage; others set k=3 as a floor and spend the extra runs only on high-risk tasks. Pick before you run, and write down why.
The decision rule: adopt, hold, or reject
Turn the deltas into a verdict by comparing them against your baselines and requiring the difference to clear run-to-run noise. A pass-rate improvement smaller than your measured variance across runs is not a signal; it is noise wearing a suit. Recall that accuracy can vary 15% across runs even at temperature zero, so your significance bar has to sit above that.
Read three axes together, not one. Throughput, quality, and time, because they move independently and sometimes in opposite directions. The mandate study of 802 developers and 196,212 pull requests reached 2.09x baseline throughput, with a within-developer gain of 1.5x rising to 2x by nine months on tool. Against that, METR's mature-repo developers were 19% slower. Maturity, not the tool, drives the sign, so weight your verdict by how expert your team is on the target repo.
A workable rule of thumb, calibrated to the dossier's evidence and adjustable to your risk tolerance:
- Adopt when the agent shows a throughput or lead-time gain that clears run-to-run noise, and rework rate and CFR do not worsen against baseline, and the ablation attributes the win to something you control.
- Hold when throughput improves but rework or CFR degrades, or when the win is real but attributable mostly to a harness you have not committed to. Re-run with the harness fixed before deciding.
- Reject when the agent fails to clear noise on throughput, or degrades stability without a compensating gain, or its passes survive only weak oracles under manual review.
Remember the maturity caveat when rejecting. A pilot on expert-owned code can show a slowdown and be rejected prematurely, when gains would have grown to 2x by month nine on less familiar work. If your trial repo is the one your team knows best, treat a modest slowdown as expected rather than disqualifying.
How this trial goes wrong
Most failed trials fail the same eight ways, and each has a false positive and a specific check. This is the section to reread before you sign the verdict.
- Trusting acceptance rate as a quality signal. High acceptance can sit on top of quiet rework. Check by pairing acceptance with rework rate, because a low CFR can hide a high rework rate.
- Single-run scoring. One lucky pass reads as capability. Check by running k greater than or equal to 3; a 60% pass@1 agent may show only 25% consistency across trials.
- Weak test oracles. A patch "passes" but is semantically wrong, as in 31.08% of cases. Check by manually reviewing passing patches on high-risk tasks.
- Contaminated task set. The agent recalls the answer from training. Check by using recent, private, or post-cutoff tasks; 94%-plus of old benchmark issues predate model cutoffs.
- Attributing a harness win to the model. The number alone cannot tell you whether the model got better or the harness did. Check by running the fixed-model and fixed-harness ablation.
- Flat CFR read as healthy. More deploys at the same rate means more absolute incidents. Check by reading rework rate alongside CFR.
- Expecting instant gains on mature repos. A pilot on expert-owned code shows a slowdown and gets rejected early. Check against the maturity effect: METR's 19% slowdown versus the mandate study's climb to 2x by month nine.
- Silent provider model updates. Your pinned assumptions quietly drift. Check by pinning model and judge versions and alerting on any version change.
| Contamination signal | Figure |
|---|---|
| Solution leakage in issue text | 32.67% |
| Passes due to weak oracles | 31.08% |
| Issues predating model cutoff | 94%+ |
| o3 failures that were test flaws | 59.4% |
Before you call the verdict final
- Baseline table exists with a number and definition per DORA metric plus rework rate
- Task set is private, recent or post-cutoff, and 30 to 50 real issues
- Each task has acceptance criteria and a passing or failing test
- Every agent task ran at least three times with a pessimistic bound applied
- An ablation attributes score points to model versus harness
- Rework rate and CFR on agent-authored changes are tracked against baseline
- The claimed improvement clears run-to-run noise, not just the mean
- High-risk passing patches were manually reviewed for weak-oracle passes
- Model, harness, and judge versions are pinned in a locked manifest
- Re-test triggers for version change and contamination-age are documented
Keeping the verdict current
A verdict is valid only against the manifest it was measured on, so treat it as perishable and re-test on defined triggers rather than a comfortable calendar. Pin the exact model version used for both your agent and your judge, so when a provider updates silently your eval detects the change rather than absorbing it. A fixed numeric cadence is not publicly established; the honest triggers are model or harness version change plus the contamination-age of your task set.
Two contamination signals should force a private re-test. Models recall file paths from training data up to 76% of the time, and 32.67% of successful patches have involved solution leakage. As your task issues age past model cutoffs, refresh them with new private work so the agent is solving, not remembering.
Adoption itself is concentrated and market-skewed, which shapes who you can staff a trial with and what your team already knows. In Refolk's index, 1,081 US software and senior software engineers list GitHub Copilot against 148 in the UK, and 117 US engineers list Cursor at employers including Uber, Microsoft, and Chewy.
That skew matters because "what the team already knows" is part of your baseline: a team fluent in one agent will show different integration overhead than one meeting it cold. When you need to recruit trial participants, benchmark reviewers, or a platform engineer who owns rework-rate dashboards, describing the person in plain English and letting Refolk return a ranked list is faster than reconstructing the query from filters. Re-run the trial when a trigger fires, refresh the task set as it ages, and keep the manifest under version control so the next verdict is comparable to this one.
Questions practitioners ask
Why isn't SWE-bench enough to pick a coding agent?
Public benchmarks are contaminated and use fallible oracles. In SWE-bench, 32.67% of successful patches involve direct solution leakage and 31.08% pass on inadequate tests, over 94% of Verified issues predate current model cutoffs, and OpenAI found 59.4% of 138 o3 failures were test flaws before recommending the benchmark be dropped. A leaderboard number tells you nothing about how an agent behaves on your private, post-cutoff code, which is the only environment that predicts your adoption outcome.
How many tasks and runs do I need for a trial that holds up?
Use METR's shape as a floor: 16 experienced developers and 246 tasks on mature repos, though most teams draw 30 to 50 real issues. Because agents are non-deterministic even at temperature zero, run each task at least three times and take a pessimistic bound; an agent at 60% pass@1 can show only 25% consistency across trials. Reserve 10 to 20 runs for your highest-risk tasks where a single flaky pass would mislead the verdict.
How do I separate the harness from the model?
Run an ablation: hold the model fixed and swap the harness, then hold the harness fixed and swap the model, scoring the same private tasks each way. The harness often moves more than the model. Holding Claude Opus 4.5 fixed and changing only the scaffold widens the score range to 9.5 points, exceeding the 4.9-point spread across six frontier models under one scaffold, and HAL reports cross-scaffold gaps up to nearly 48 points.
Is suggestion acceptance rate a good quality signal?
No. Raw acceptance rates and generated-line counts say little about whether throughput, quality, and stability actually improve, and high acceptance can hide expensive rework. Always pair acceptance with rework rate and change failure rate, because a low change failure rate can mask a high rework rate when a team is quietly fixing AI-generated errors before they reach production and losing developer effectiveness in the process.
Why did my pilot on our core repo show a slowdown?
Familiarity inverts the expected sign. In METR's trial, developers averaging around five years on their repo were about 19% slower with AI because review-and-integrate overhead exceeded generation savings, even while they felt roughly 20% faster. Gains accrue with fluency: a separate mandate study reached a 1.5x per-developer gain rising to 2x by nine months on tool. Do not reject an agent on a mature, expert-owned repo without accounting for the maturity effect.
How often should I re-run the trial?
A fixed calendar cadence is not publicly established. Trigger a private re-test on two events: a model or harness version change, and contamination-age of your task set. Pin the exact model version for both your agent and your judge so a silent provider update is detected rather than absorbed. As your task issues age past model cutoffs, refresh them with recent, private, or post-cutoff work to keep the trial honest.
Try it on the search you came here for
Stop building boolean strings. Just describe the person.
Type one sentence. I plan the search, read GitHub, public LinkedIn and Crunchbase records, and the open web as it is right now, and hand back a ranked list with the reason next to every name.
01Describe them
One plain sentence. Role, city, stack, stage, whatever matters to you.
02I read the web live
GitHub, public LinkedIn and Crunchbase records, the open web. Not a database that went stale last quarter.
03You read the shortlist
Ranked, with the reasoning under every name. Open a profile, ask a follow-up, narrow it down.
- Staff backend engineers in NYC who shipped Rust in production
- Series A fintechs in SF under 50 people, growing headcount this year
- Maintainers of fast-growing Rust web frameworks on GitHub
- No boolean, no filters, no seat to buy. One box.
- Read at search time, so a profile updated yesterday counts today.
- Every step visible as it runs, every name with its reason.
500 free credits on sign-up. No card, no demo call. See real searches.