Claude Opus 5.5, GPT-6.1 Sol and Claude Haiku 5.5 were within one run of each other on hard coding tasks.

A run is one fresh try at a task, 30 minutes at most, graded by the task's own tests. Each model had three runs at each of seven tasks: Claude Opus 5.5 solved 15 of its 21 runs, GPT-6.1 Sol and Claude Haiku 5.5 14 each, and GPT-6 Luna 9. They are public tasks in real open-source projects: building features, fixing bugs, speeding up code and fixing memory-safety flaws in C. One more task, Ansible, is reported on its own and left out of these totals.

Runs solved#

Each task had three runs per model, so a gap of one run can come from chance alone. The panels split the count by kind of work.

Runs solved of 21: Claude Opus 5.5 15, GPT-6.1 Sol 14, Claude Haiku 5.5 14, GPT-6 Luna 9.

Seven public tasks in real open-source projects, three runs each, graded by each task's own tests. Hover or tap a row for every task.

Features and bugsruns solved of 909GPT-6.1 Sol9Claude Opus 5.58Claude Haiku 5.59GPT-6 Luna5Speed-upsruns solved of 60362422Security fixesruns solved of 60363332Allruns solved of 210211415149

Source: skill-evals.brenhq.com, updated 14 October 2026. 84 runs, medium effort, 30 minutes each at most.

Every task#

Every model got the same task text in the same container, three runs per task, with no web access and 30 minutes per run at most. Each square is one run: solved, not solved.

TaskGPT-6.1 SolClaude Opus 5.5Claude Haiku 5.5GPT-6 Luna
Build a featureThe model gets a feature request. A run passes when the project's tests for that feature, which the model never sees, pass and its existing tests still pass.
Flipt feature-flag server, GoLet one rule target several user segments at once.3 of 33 of 33 of 31 of 3
Fix a bugThe model gets a bug report. A run passes when the project's tests for that bug, which the model never sees, pass and its existing tests still pass.
Proton Mail web client email web app, TypeScriptHold back mailbox reloads until pending changes finish, and recover from failed loads.3 of 32 of 33 of 31 of 3
Navidrome music streaming server, GoFix pages that crash after an upgrade leaves date fields empty.3 of 33 of 33 of 33 of 3
Speed up codeThe model gets a script that times a slow operation. A run passes when the results are unchanged, the code is at least 1.1 times as fast, and it reaches 95% of the speed-up the project's own developer got.
pandas data library, PythonMake setting values one at a time in nullable integer arrays faster.0 of 31 of 30 of 30 of 3
NumPy math library, PythonMake np.isin faster on integer arrays.2 of 33 of 32 of 32 of 3
Fix a security flawThe model gets a memory checker's crash report. A run passes only when the crash is gone and the library's own tests and checks still pass.
wolfSSL TLS and crypto library, CFix a heap buffer overflow when a big number is written out in hex.3 of 33 of 33 of 32 of 3
LibreDWG library that reads CAD drawings, CFix a buffer over-read while reading a drawing file.0 of 30 of 30 of 30 of 3
Reported on its ownLeft out of every total: its hidden tests need a get_manager() method that the task text never names.
Ansible IT automation tool, PythonAdd a module that manages message routing routes on F5 BIG-IP devices.2 of 33 of 31 of 30 of 3
Every run
TaskModelRunSolvedMinutesOutput tokensUpstream linesWhat the grader saw
AnsibleGPT-6.1 Sol1yes2.65,97141%6 of 6 hidden tests passed
AnsibleGPT-6.1 Sol2yes3.17,05739%6 of 6 hidden tests passed
AnsibleGPT-6.1 Sol3no2.46,04042%3 of 6 hidden tests passed
AnsibleClaude Opus 5.51yes1.911,22791% *6 of 6 hidden tests passed
AnsibleClaude Opus 5.52yes2.013,52891% *6 of 6 hidden tests passed
AnsibleClaude Opus 5.53yes1.811,39392% *6 of 6 hidden tests passed
AnsibleClaude Haiku 5.51no1.115,57374% *3 of 6 hidden tests passed
AnsibleClaude Haiku 5.52yes1.215,79872% *6 of 6 hidden tests passed
AnsibleClaude Haiku 5.53no1.517,76773% *3 of 6 hidden tests passed
AnsibleGPT-6 Luna1no0.63,48629%3 of 6 hidden tests passed
AnsibleGPT-6 Luna2no0.74,11524%3 of 6 hidden tests passed
AnsibleGPT-6 Luna3no1.23,41922%3 of 6 hidden tests passed
FliptGPT-6.1 Sol1yes4.48,2199%3 of 3 hidden tests passed
FliptGPT-6.1 Sol2yes4.07,4489%3 of 3 hidden tests passed
FliptGPT-6.1 Sol3yes4.18,63416%3 of 3 hidden tests passed
FliptClaude Opus 5.51yes5.112,38371% *3 of 3 hidden tests passed
FliptClaude Opus 5.52yes4.010,78285% *3 of 3 hidden tests passed
FliptClaude Opus 5.53yes4.411,54476% *3 of 3 hidden tests passed
FliptClaude Haiku 5.51yes3.121,39326%3 of 3 hidden tests passed
FliptClaude Haiku 5.52yes4.119,71224%3 of 3 hidden tests passed
FliptClaude Haiku 5.53yes3.318,35320%3 of 3 hidden tests passed
FliptGPT-6 Luna1yes1.14,1570%3 of 3 hidden tests passed
FliptGPT-6 Luna2no2.55,3586%2 of 3 hidden tests passed
FliptGPT-6 Luna3no1.53,7313%2 of 3 hidden tests passed
Proton Mail web clientGPT-6.1 Sol1yes6.010,56056%3 of 3 hidden tests passed
Proton Mail web clientGPT-6.1 Sol2yes7.013,75757%3 of 3 hidden tests passed
Proton Mail web clientGPT-6.1 Sol3yes7.913,23857%3 of 3 hidden tests passed
Proton Mail web clientClaude Opus 5.51yes18.118,37870% *3 of 3 hidden tests passed
Proton Mail web clientClaude Opus 5.52yes13.017,00768% *3 of 3 hidden tests passed
Proton Mail web clientClaude Opus 5.53no18.213,32470% *2 of 3 hidden tests passed
Proton Mail web clientClaude Haiku 5.51yes10.744,20261% *3 of 3 hidden tests passed
Proton Mail web clientClaude Haiku 5.52yes8.155,82956%3 of 3 hidden tests passed
Proton Mail web clientClaude Haiku 5.53yes5.841,89964% *3 of 3 hidden tests passed
Proton Mail web clientGPT-6 Luna1yes1.35,38243%3 of 3 hidden tests passed
Proton Mail web clientGPT-6 Luna2no1.23,45842%2 of 3 hidden tests passed
Proton Mail web clientGPT-6 Luna3no0.93,72842%2 of 3 hidden tests passed
NavidromeGPT-6.1 Sol1yes2.75,39412%3 of 3 hidden tests passed
NavidromeGPT-6.1 Sol2yes2.75,28712%3 of 3 hidden tests passed
NavidromeGPT-6.1 Sol3yes1.73,30412%3 of 3 hidden tests passed
NavidromeClaude Opus 5.51yes1.63,77412%3 of 3 hidden tests passed
NavidromeClaude Opus 5.52yes1.63,81212%3 of 3 hidden tests passed
NavidromeClaude Opus 5.53yes1.63,28412%3 of 3 hidden tests passed
NavidromeClaude Haiku 5.51yes1.57,54312%3 of 3 hidden tests passed
NavidromeClaude Haiku 5.52yes2.09,81312%3 of 3 hidden tests passed
NavidromeClaude Haiku 5.53yes1.45,98812%3 of 3 hidden tests passed
NavidromeGPT-6 Luna1yes0.93,5181%3 of 3 hidden tests passed
NavidromeGPT-6 Luna2yes0.62,7952%3 of 3 hidden tests passed
NavidromeGPT-6 Luna3yes1.33,2011%3 of 3 hidden tests passed
pandasGPT-6.1 Sol1no2.54,68611%1.16x faster than before; 0.435 of the expert's speed-up
pandasGPT-6.1 Sol2no3.55,7054%1.17x faster than before; 0.446 of the expert's speed-up
pandasGPT-6.1 Sol3no3.35,76411%1.19x faster than before; 0.441 of the expert's speed-up
pandasClaude Opus 5.51yes2.09,19721%2.56x faster than before; 1.032 of the expert's speed-up
pandasClaude Opus 5.52no1.97,84814%1.86x faster than before; 0.746 of the expert's speed-up
pandasClaude Opus 5.53no1.96,91911%1.88x faster than before; 0.751 of the expert's speed-up
pandasClaude Haiku 5.51no1.68,9757%1.14x faster than before; 0.429 of the expert's speed-up
pandasClaude Haiku 5.52no3.711,00911%1.25x faster than before; 0.452 of the expert's speed-up
pandasClaude Haiku 5.53no1.212,2067%1.15x faster than before; 0.429 of the expert's speed-up
pandasGPT-6 Luna1no1.23,7077%1.15x faster than before; 0.431 of the expert's speed-up
pandasGPT-6 Luna2no1.54,9717%1.23x faster than before; 0.455 of the expert's speed-up
pandasGPT-6 Luna3no1.23,0637%1.12x faster than before; 0.427 of the expert's speed-up
NumPyGPT-6.1 Sol1yes4.77,8294%7.50x faster than before; 1.039 of the expert's speed-up
NumPyGPT-6.1 Sol2no2.64,2880%6.89x faster than before; 0.934 of the expert's speed-up
NumPyGPT-6.1 Sol3yes2.54,2730%6.68x faster than before; 0.950 of the expert's speed-up
NumPyClaude Opus 5.51yes2.510,3200%9.67x faster than before; 1.234 of the expert's speed-up
NumPyClaude Opus 5.52yes1.46,9854%9.54x faster than before; 1.185 of the expert's speed-up
NumPyClaude Opus 5.53yes1.910,1090%11.84x faster than before; 1.457 of the expert's speed-up
NumPyClaude Haiku 5.51no1.514,2360%1.72x faster than before; 0.181 of the expert's speed-up
NumPyClaude Haiku 5.52yes3.417,1700%7.69x faster than before; 1.050 of the expert's speed-up
NumPyClaude Haiku 5.53yes1.615,2190%8.94x faster than before; 1.093 of the expert's speed-up
NumPyGPT-6 Luna1yes1.22,6280%11.18x faster than before; 1.292 of the expert's speed-up
NumPyGPT-6 Luna2no0.82,5280%6.46x faster than before; 0.779 of the expert's speed-up
NumPyGPT-6 Luna3yes1.02,8430%11.90x faster than before; 1.522 of the expert's speed-up
wolfSSLGPT-6.1 Sol1yes5.44,3370%crash input fixed: yes; replayed inputs: yes; unit tests: yes; output match: yes
wolfSSLGPT-6.1 Sol2yes4.83,0090%crash input fixed: yes; replayed inputs: yes; unit tests: yes; output match: yes
wolfSSLGPT-6.1 Sol3yes6.83,0390%crash input fixed: yes; replayed inputs: yes; unit tests: yes; output match: yes
wolfSSLClaude Opus 5.51yes30.1 (cap)–100% *crash input fixed: yes; replayed inputs: yes; unit tests: yes; output match: yes
wolfSSLClaude Opus 5.52yes9.22,262100% *crash input fixed: yes; replayed inputs: yes; unit tests: yes; output match: yes
wolfSSLClaude Opus 5.53yes9.22,424100% *crash input fixed: yes; replayed inputs: yes; unit tests: yes; output match: yes
wolfSSLClaude Haiku 5.51yes4.110,9320%crash input fixed: yes; replayed inputs: yes; unit tests: yes; output match: yes
wolfSSLClaude Haiku 5.52yes16.624,6470%crash input fixed: yes; replayed inputs: yes; unit tests: yes; output match: yes
wolfSSLClaude Haiku 5.53yes14.325,3260%crash input fixed: yes; replayed inputs: yes; unit tests: yes; output match: yes
wolfSSLGPT-6 Luna1yes7.05,6990%crash input fixed: yes; replayed inputs: yes; unit tests: yes; output match: yes
wolfSSLGPT-6 Luna2no4.03,6150%crash input fixed: no; replayed inputs: no; unit tests: yes; output match: yes
wolfSSLGPT-6 Luna3yes3.34,2480%crash input fixed: yes; replayed inputs: yes; unit tests: yes; output match: yes
LibreDWGGPT-6.1 Sol1no7.13,1460%crash input fixed: yes; replayed inputs: yes; unit tests: no; output match: no
LibreDWGGPT-6.1 Sol2no9.63,6490%crash input fixed: yes; replayed inputs: yes; unit tests: no; output match: no
LibreDWGGPT-6.1 Sol3no10.73,8180%crash input fixed: yes; replayed inputs: yes; unit tests: no; output match: no
LibreDWGClaude Opus 5.51no15.05,9380%crash input fixed: yes; replayed inputs: yes; unit tests: no; output match: no
LibreDWGClaude Opus 5.52no17.79,4920%crash input fixed: yes; replayed inputs: yes; unit tests: no; output match: no
LibreDWGClaude Opus 5.53no15.68,0260%crash input fixed: yes; replayed inputs: yes; unit tests: no; output match: no
LibreDWGClaude Haiku 5.51no13.49,3660%crash input fixed: yes; replayed inputs: yes; unit tests: no; output match: no
LibreDWGClaude Haiku 5.52no17.938,1080%crash input fixed: yes; replayed inputs: yes; unit tests: no; output match: no
LibreDWGClaude Haiku 5.53no21.115,3740%crash input fixed: yes; replayed inputs: yes; unit tests: no; output match: no
LibreDWGGPT-6 Luna1no13.28,4600%crash input fixed: no; replayed inputs: no; unit tests: no; output match: no
LibreDWGGPT-6 Luna2no6.82,8380%crash input fixed: no; replayed inputs: no; unit tests: no; output match: no
LibreDWGGPT-6 Luna3no16.66,2790%crash input fixed: yes; replayed inputs: yes; unit tests: no; output match: no

The table scrolls sideways on a small screen.

Upstream lines is the share of the lines the project's own fix added (outside tests, spacing ignored, lines under 12 characters left out) that also appear among the lines the run added. These are public tasks, so a model may have seen that fix in training; at 60% or more a run is marked *, a warning rather than proof: a project's own conventions can produce the same lines, and a fix of a line or two can match by nature. I set that mark after seeing the first runs. Marked: Claude Haiku 5.5 on Ansible, run 1 (74%, not solved), Claude Haiku 5.5 on Ansible, run 2 (72%, solved), Claude Haiku 5.5 on Ansible, run 3 (73%, not solved), Claude Opus 5.5 on Ansible, run 1 (91%, solved), Claude Opus 5.5 on Ansible, run 2 (91%, solved), Claude Opus 5.5 on Ansible, run 3 (92%, solved), Claude Opus 5.5 on Flipt, run 1 (71%, solved), Claude Opus 5.5 on Flipt, run 2 (85%, solved), Claude Opus 5.5 on Flipt, run 3 (76%, solved), Claude Haiku 5.5 on Proton Mail web client, run 1 (61%, solved), Claude Haiku 5.5 on Proton Mail web client, run 3 (64%, solved), Claude Opus 5.5 on Proton Mail web client, run 1 (70%, solved), Claude Opus 5.5 on Proton Mail web client, run 2 (68%, solved), Claude Opus 5.5 on Proton Mail web client, run 3 (70%, not solved), Claude Opus 5.5 on wolfSSL, run 1 (100%, solved), Claude Opus 5.5 on wolfSSL, run 2 (100%, solved) and Claude Opus 5.5 on wolfSSL, run 3 (100%, solved).

Speed-ups#

How much faster each run made the code, against the expert's own change.

TaskModelRunSpeed-upOf the expert'sSolved
pandasGPT-6.1 Sol11.16x0.435no
pandasGPT-6.1 Sol21.17x0.446no
pandasGPT-6.1 Sol31.19x0.441no
pandasClaude Opus 5.512.56x1.032yes
pandasClaude Opus 5.521.86x0.746no
pandasClaude Opus 5.531.88x0.751no
pandasClaude Haiku 5.511.14x0.429no
pandasClaude Haiku 5.521.25x0.452no
pandasClaude Haiku 5.531.15x0.429no
pandasGPT-6 Luna11.15x0.431no
pandasGPT-6 Luna21.23x0.455no
pandasGPT-6 Luna31.12x0.427no
NumPyGPT-6.1 Sol17.50x1.039yes
NumPyGPT-6.1 Sol26.89x0.934no
NumPyGPT-6.1 Sol36.68x0.950yes
NumPyClaude Opus 5.519.67x1.234yes
NumPyClaude Opus 5.529.54x1.185yes
NumPyClaude Opus 5.5311.84x1.457yes
NumPyClaude Haiku 5.511.72x0.181no
NumPyClaude Haiku 5.527.69x1.050yes
NumPyClaude Haiku 5.538.94x1.093yes
NumPyGPT-6 Luna111.18x1.292yes
NumPyGPT-6 Luna26.46x0.779no
NumPyGPT-6 Luna311.90x1.522yes

The table scrolls sideways on a small screen.

Speed-up is the run's build against the code before it, over the task's own performance tests. A run counts as solved when its outputs match, it is at least 1.1 times as fast as the code before it, and it reaches at least 0.95 of the expert commit's speed-up. In the task checks before any run, the expert's own change measured 1.006 and 1.009 of itself, so timing noise is about 1%. GPT-6.1 Sol's run 3 on NumPy (0.950) is within that noise of the bar; the grader's score stands.

Security fixes#

Which of the four security checks each run passed. No run solved LibreDWG. Ten of its 12 runs stopped the original crash; GPT-6 Luna's run 1 and GPT-6 Luna's run 2 did not. Every run failed the unit-test and output checks. The task's reference fix corrects an off-by-one in the library's bit reader (src/bits.c); the code before that fix fails one unit test that the fix passes. No run changed the bit reader.

TaskModelRunCrash inputReplayed inputsUnit testsOutput matchSolved
wolfSSLGPT-6.1 Sol1yesyesyesyesyes
wolfSSLGPT-6.1 Sol2yesyesyesyesyes
wolfSSLGPT-6.1 Sol3yesyesyesyesyes
wolfSSLClaude Opus 5.51yesyesyesyesyes
wolfSSLClaude Opus 5.52yesyesyesyesyes
wolfSSLClaude Opus 5.53yesyesyesyesyes
wolfSSLClaude Haiku 5.51yesyesyesyesyes
wolfSSLClaude Haiku 5.52yesyesyesyesyes
wolfSSLClaude Haiku 5.53yesyesyesyesyes
wolfSSLGPT-6 Luna1yesyesyesyesyes
wolfSSLGPT-6 Luna2nonoyesyesno
wolfSSLGPT-6 Luna3yesyesyesyesyes
LibreDWGGPT-6.1 Sol1yesyesnonono
LibreDWGGPT-6.1 Sol2yesyesnonono
LibreDWGGPT-6.1 Sol3yesyesnonono
LibreDWGClaude Opus 5.51yesyesnonono
LibreDWGClaude Opus 5.52yesyesnonono
LibreDWGClaude Opus 5.53yesyesnonono
LibreDWGClaude Haiku 5.51yesyesnonono
LibreDWGClaude Haiku 5.52yesyesnonono
LibreDWGClaude Haiku 5.53yesyesnonono
LibreDWGGPT-6 Luna1nonononono
LibreDWGGPT-6 Luna2nonononono
LibreDWGGPT-6 Luna3yesyesnonono

The table scrolls sideways on a small screen.

The four checks, each run on a fresh build with the change applied: the input that crashed it no longer crashes; no input in the task's collection of crashing variants or of benign inputs sets off the memory checker; every unit test that passes with the reference fix still passes; and output on benign inputs matches the reference fix byte for byte. A run is solved only when all four pass.

How I ran it#

Tasks, setup and grading

Why a deep suite: my launch suite, on the other pages, has every model near full marks, so it can show a model getting worse but not better. The tasks: building features and fixing bugs, speeding up Python code, and fixing memory-safety bugs in C, taken from three public task sets (credited below). Within each set the tasks were drawn in a fixed random order before any model ran, then checked: the task's own reference fix must score as solved and an unchanged repository must not. Two drawn tasks were replaced by the next in the same order: one whose reference fix failed that check here, and one that the pilot's reviewers found could only be passed by rewriting unrelated code. One drawn Go task was swapped before that because its fix needs a library the task's image does not have, and runs have no internet.

Deep suite v1, frozen 13 October 2026: these eight tasks, three runs each, with the same settings and the same container images, checked before every run. A new model runs the same set and is compared with the runs here. Changing a task, a setting or a container image makes a new version, and its scores are not compared with these.

Claude Opus 5.5 and Claude Haiku 5.5 ran in Claude Code 2.1.284, and GPT-6.1 Sol and GPT-6 Luna in Codex CLI 0.159.0, all at medium effort, each run capped at 30 minutes (1 run reached it). The original tasks allow longer. Each run worked inside the task's own container, whose only way out reached the two vendors' model servers: no web search, no package downloads and no way to look up the original fix. The run never saw the hidden tests or the reference fix; the speed-up tasks' text includes their timing script, as intended. Its change was then applied to a fresh copy of the container and graded by the task's own grader, which resets any test file the run edited. Claude Opus 5.5 and Claude Haiku 5.5 shared one login, so their runs went one at a time.

Limits: this suite cannot confirm that a model is improving week to week. It has a handful of tasks and three runs each, so a single run moves a model's count by a lot, and it measures each model inside one tool at one effort. These are public tasks, so a model may have seen the original fix in training; the run table marks runs that reproduced most of it. The speed-up tasks were picked from the ones whose expert fix changes Python only, so a rebuild fits in a run.

A pilot ran first, one run per task, and is not counted. It found bugs in my setup, each logged, with the affected runs set aside and rerun, and Fable 5.1, Grok 4.7 and GPT-6 Astra reviewed its results before these runs were made. Its runs are in the data.

The run records are in results.json, under deep_runs, deep_checks, deep_pilot_runs and deep_suite. The plan and every change to it, as logged, are in deep-suite-plan.txt.

Credit: the tasks and their graders come from SWE-bench Pro's public hard set (Scale AI), GSO and PatchBench.