Two real bugs, one bug report
The pipelinefrom two merged pull requests to a shipped task
- 1 · mine
Pair two real fixes
Two merged bug-fix pull requests in the same project, usually within a week of each other, each adding tests.
- 2 · validate
Both bugs at one commit
Both bugs reproduce at a shared base, each fix flips only its own tests, both together pass; three runs against flakiness.
- 3 · specify
One bug report
A single report that describes both failures and the interface the tests use, never the fix. Audited against the hidden tests.
- 4 · seal
Probe for leaks
One commit, no remotes, no network, no trace of hidden test names in the sandbox.
- 5 · tier
Measure difficulty
Two models at maximum reasoning sort tasks into clean, split and hard.
- 6 · verify
Check what ships
Each image graded three times with the reference fix (must score 1) and an empty submission (must score 0).
Public and private halveshow the split was made
- Tasks that share an upstream pull request always sit in the same half, so a public reference fix never reveals a private task.
- 37 public tasks are also SWE-Race public tasks; SWE-Pair tasks built on SWE-Race private pull requests are private here too.
- Both halves are scored side by side; a model tuned on the public half shows a gap.
Left out before releaseeach with its reason
- 25 tasks from repositories without a permissive license (no license, GPL/AGPL/LGPL, proprietary or noncommercial).
- aio-libs__aiohttp-13001-13136: pytest-asyncio 1.4.1 (2026-10-25) warns at startup and the repo's filterwarnings=error turns that into an INTERNALERROR, so no test runs and the reference fix scores 0; every model attempt after 2026-
- pydantic__pydantic-ai-4419-4502: pytest-asyncio 1.4.1 (2026-10-25) warns at startup and the repo's filterwarnings=error turns that into an INTERNALERROR, so no test runs and the reference fix scores 0; every model attempt after 2026-
- 12 private task(s) for reasons of the same kinds.
Relation to SWE-Racetwo benchmarks, one pipeline
SWE-Race covers concurrency bugs only; SWE-Pair covers all bug types and always asks for two fixes at once. On SWE-Race, multi-fix tasks were where models separated, which is why SWE-Pair exists. The two leaderboards are independent: SWE-Race v0.1 stays as published.