Isolation is not engineering
A function-level benchmark hands the model a signature, a docstring, and the intent. Real work supplies none of those. The first task is finding which of four hundred thousand lines is wrong.
Real repositories. Real engineering tasks. Reproducible evaluation.
Evaluating a coding model means giving it work that resembles the work. Three things make that hard — and all three are design decisions, not accidents.
A function-level benchmark hands the model a signature, a docstring, and the intent. Real work supplies none of those. The first task is finding which of four hundred thousand lines is wrong.
When every frontier system clears ninety percent, the benchmark has stopped measuring and started congratulating. Difficulty has to be admitted deliberately, not discovered by accident.
Reviewers approve changes that read correctly and do nothing. Only a suite that ran red before the patch and green after it can tell you the behaviour actually moved.
A benchmark assembled from merged pull requests in projects people depend on. Each instance is a repository at a commit, an issue written by someone who hit it, and the tests that prove the fix.
The model gets what an engineer gets on their first morning: the codebase, the report, and nothing else.
The repository at its base commit and the problem statement. Not the patch, not the test names, not the files the fix touches — those are held back and used to score it.
The published record, field by field
Lifetimes, trait resolution, and failures the compiler refuses to let you fake.
Lifetimes, trait resolution, and failures the compiler refuses to let you fake.
Four stages, every one of them executed. Nothing about a run is inferred from the diff.
The repository is restored to its base commit inside a pinned container, then built from scratch. A patch that does not compile stops here.
Two suites run. The failing tests attached to the issue must go green, and every test that passed before must still pass.
The patch is compared against the reference fix: scope, file overlap, and whether the change addresses the cause or masks the symptom.
Results are written to a run record with the seed, image digest, and timings, so any number on a leaderboard can be reproduced exactly.
Four decisions, each of which costs something to make and shows up in every score the benchmark produces.
Every task comes from a merged pull request in a project people actually depend on. No generated bugs, no toy repositories, no puzzles written to be solvable.
Projects of the kind we draw from
A task is only admitted if the reference fix required reading code the issue never mentions. Single-line typo fixes are filtered out before review.
Each task ships the tests that failed before the fix and the suite that must stay green after it. Passing means the behaviour changed, not that the diff looked plausible.
Pinned images, recorded seeds, and a run record for every evaluation. A score you publish today can be re-derived by someone else next year.
Same record, same inputs, same result — whoever re-runs it, whenever they do.
The whole edition, delivered once. No seats, no metering, and no call with anybody.
Early
access
Open now
The edition is still growing. Write to us and you will be sent what exists today, the harness that runs it, and the licence that covers it.
Evaluating at scale or need a custom split? Write to hello@dorabench.in.
Everything a reviewer usually emails about, answered before they have to.
DoraBench is a benchmark company that builds evaluation datasets and harnesses for AI software-engineering agents. It publishes Terminus, a benchmark of real engineering tasks drawn from merged pull requests in open-source repositories across eight programming languages.
Terminus is DoraBench's software-engineering benchmark. Each task pairs a real repository at a specific commit with a real issue and the tests that verify the fix, so a coding agent is scored on whether its patch makes failing tests pass without breaking the existing suite.
Terminus covers eight languages: Python, TypeScript, JavaScript, Java, Go, Rust, C++, and Ruby. Kotlin, Swift, Scala, C#, Elixir, and Zig are in review for the next edition.
Evaluation runs in four stages. The repository is restored to its base commit in a pinned container and built; the failing tests attached to the issue must go green while the existing suite stays green; the patch is compared against the reference fix for scope; and the result is written to a run record with the seed, image digest, and timings.
Every task is executed before admission. The reference patch must build, turn its FAIL_TO_PASS tests from red to green, and leave the PASS_TO_PASS suite untouched. Tasks that pass without the patch, fail intermittently, or resolve in a single line are rejected at review.
Terminus ships a held-out split built only from commits merged after the published cutoff of current frontier models, so those tasks cannot appear in existing training corpora. Each task records its merge date, letting you filter the set against any model's cutoff yourself.
Terminus is in early access. Write to hello@dorabench.in and you will be sent the dataset, the evaluation harness, the container definitions, the schema reference, and a commercial-use licence.
Tasks ship as JSONL, one object per instance, with the repository, base commit, problem statement, reference patch, test manifests, and container digest. A Docker context accompanies each repository, and the evaluation harness runs locally or in CI without calling a DoraBench service.
Yes. The early-access licence permits commercial evaluation, including internal model development and published results. Source repositories keep their original licences, and per-repository attribution ships with the dataset.
Test it against reality — real repositories, real issues, real suites.