SWE Refactor Bench
Can a coding agent move a whole repository to a new stack — another language, framework, platform or build system — and change nothing about what it does?
Navers lab · Einsia AI · 2026
- 20
- whole-repository migrations
- 520
- graded runs · 26 configurations
- 28
- accepted, all three stages
- 13/20
- tasks solved by nobody
The job
Replacing the stack underneath a system that still has to work — C to Rust, Maven to Gradle, POSIX to WebAssembly — costs senior engineers weeks, and most of those weeks go into proving that nothing changed. It is long-horizon work: the unit is a repository, not a function, and one attempt runs for hours or days.
The leaderboard
All 26 configurations — 8 models, each swept over the reasoning-effort levels it exposes — on the same 20 tasks. The best of them scores 47.0 of 100, which is further from a finished migration than it is from the bottom of the strip.
- Accepted
- 2 of 20
- Per task
- $34.8
- Accepted
- 2 of 20
- Per task
- $38.4
- Accepted
- 4 of 20
- Per task
- $55.7
- Accepted
- 5 of 20
- Per task
- $74.9
- Accepted
- 3 of 20
- Per task
- $72.4
- Accepted
- 0 of 20
- Per task
- $2.9
- Accepted
- 0 of 20
- Per task
- $5.9
- Accepted
- 0 of 20
- Per task
- $6.0
- Accepted
- 1 of 20
- Per task
- $7.7
- Accepted
- 0 of 20
- Per task
- $19.1
- Accepted
- 4 of 20
- Per task
- $143.5
- Accepted
- 2 of 20
- Per task
- $28.9
- Accepted
- 0 of 20
- Per task
- $4.4
- Accepted
- 1 of 20
- Per task
- $11.9
- Accepted
- 0 of 20
- Per task
- $24.6
- Accepted
- 1 of 20
- Per task
- $27.0
- Accepted
- 1 of 20
- Per task
- $27.5
- Accepted
- 0 of 20
- Per task
- $1.6
- Accepted
- 0 of 20
- Per task
- $1.7
- Accepted
- 0 of 20
- Per task
- $1.7
- Accepted
- 0 of 20
- Per task
- $1.8
- Accepted
- 0 of 20
- Per task
- $2.9
- Accepted
- 0 of 20
- Per task
- $2.8
- Accepted
- 2 of 20
- Per task
- $14.5
- Accepted
- 0 of 20
- Per task
- $4.3
- Accepted
- 0 of 20
- Per task
- $17.5
The rest of this page is why those numbers are so low, and why a ranking alone would not have found it.
A passing suite cannot see this work
Bug fixing starts red and turns green, and that jump is the evidence. Migration starts green. Hand the original repository back untouched and it still scores full marks — so the maximum of the reward sits on a submission with no work in it, and more tests cannot move it.
Repair
The suite is the goal.Agent edits the repository
Passing is evidence the work happened.
Preservation
The suite is already satisfied.Agent changes nothing
Passing is evidence of nothing at all.
We call it blindness: the suite is not incomplete, it is answering a different question — was anything broken, not was anything changed.
Four kinds of debt
20 migrations of load-bearing open-source infrastructure — SQLite, zlib, libsodium, GraphHopper and others. Each moves exactly one layer of the stack, keeps the interface, and gets 6 to 30 hours of autonomous work, offline.
| Class | Tasks | Checks | Migrated | Accepted | Score |
|---|---|---|---|---|---|
| Build-toolchain rewrite What produces the artifact changes, and the package is the observable. | 3 | 7,770 | 80.8% | 6 | 31.41 |
| Platform port The host the code assumes changes. | 3 | 6,725 | 57.7% | 4 | 17.18 |
| Framework rewrite The language stays, the framework it is organized around is replaced. | 7 | 55,852 | 72.5% | 14 | 11.98 |
| Language rewrite The implementation language moves, the artifact does not. | 7 | 59,771 | 54.9% | 4 | 5.60 |
Passing the gate and being accepted are different things: build toolchain clears the gate most often and still loses most of it at stage III, while framework rewrite takes half of all acceptances.
Three stages in series
The agent sees a repository, an instruction and an offline image. It never sees any of this.
Migration Audit
Is the old stack gone from the artifact that is actually built?
Reads mechanism, not strings. Holds a veto.
Behavioural Tests
130,118 checks recorded from the original.
All of them, or the run scores zero.
Agentic Verification
Six coding agents, one hour each, hunting for a difference.
Only an executable counterexample counts.
What the models did
26 configurations, 520 graded runs, 8 models — and 28 of those runs cleared all three stages. The configuration at the top of the board, claude-opus-5 at xhigh, spent $75 a task to get there.
Ranking them is the easy part. The two findings below are what the ranking cannot say.
Two abilities, not one
Migration completeness and behavioural correctness are distinct abilities, and the failures divide along that line. A few runs preserve the behaviour by skipping the migration, and only stage I stops them. Most attempt the migration and break the behaviour doing it, and only stage II stops those. Neither stage can stand in for the other: stage II alone would reward doing nothing, stage I alone would reward doing damage.
The last mile
Once the migration is real, most runs get behaviour back above 99%. Almost none finish it: a quarter make no error at all, and two thirds of those still lose to a counterexample inside the hour.
A stronger verifier is simply a higher bar: retire the two strongest and the remaining four would accept 46 submissions instead of 28.
What we release
Score table
520 rows
Every graded run: gate verdict, checks passed, verifiers survived, composite, tokens, duration.
See the boardTrajectories
248k calls
Every tool call of every graded run, in full, across two harnesses.
Browse runsTasks
20 images
State A, the instruction, the offline image, the criteria and the frozen suite.
Browse tasksCitation
@misc{hong2026swerefactorbenchcoding,
title = {SWE Refactor Bench: Can Coding Agents Complete a Long-Horizon,
Whole-Repository Stack Migration?},
author = {Deyao Hong and Yizhe Chi and Wenyi Li and Xiaoqiu Wang and
Mingju Gao and Kaisen Yang and Bingxiang He and Youjie Zheng and
Calvin Xiao and Qinhuai Na},
journal = {arXiv preprint arXiv:2608.23564},
year = {2026}
}