Claude Opus 5.5, GPT-6.1 Sol and Claude Haiku 5.5 passed almost the same number of hard coding tasks.

Each model got 3 tries at each of 7 real coding tasks, 30 minutes per try. Claude Opus 5.5 passed 15 of its 21 tries, GPT-6.1 Sol and Claude Haiku 5.5 passed 14, and GPT-6 Luna passed 9.

Each version tests something different. Scores don't carry over.

Results#

Claude Opus 5.5 passed 15 of 21 tries, GPT-6.1 Sol 14, Claude Haiku 5.5 14 and GPT-6 Luna 9.

7 tasks, 3 tries each. A gap of 1 can be luck. Tap or hover over a bar to see each task.

Tries passedof 21021GPT-6.1 Sol14Claude Opus 5.515Claude Haiku 5.514GPT-6 Luna9

Source: skill-evals.brenhq.com, updated 14 October 2026. Deep suite v1. 84 tries, medium effort, 30 minutes per try.

Each task#

Every model passed Navidrome every time. No model passed LibreDWG even once.

Each square is one try. Filled means it passed.

TaskGPT-6.1 SolClaude Opus 5.5Claude Haiku 5.5GPT-6 Luna
Build a featureThe model gets a feature request. To pass, it must pass hidden tests it never saw, and the existing tests must 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. To pass, it must pass hidden tests it never saw, and the existing tests must 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 slow code. To pass, it must get 95% of the expert's speed-up without changing the results.
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 crash report. To pass, it must clear all 4 checks listed under Security fixes.
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
Not countedThis task is shown on its own and not counted in the 7. Its hidden tests check for a function the task never asks for.
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

Source: skill-evals.brenhq.com, updated 14 October 2026. Deep suite v1. 96 tries, medium effort, 30 minutes per try.

Every try
TaskModelTryPassedMinutesOutput tokensMatches original fixWhat 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.

Matches original fix is how much of the project's own fix the try repeated, counting the fix's added lines that also appear in the try (tests, spacing and lines under 12 characters left out). These are public tasks, so a model may have seen that fix in training. At 60% or more the try gets a *: a warning, not proof, because small fixes can match by nature. I picked 60% after seeing the first tries. Marked: Claude Haiku 5.5 on Ansible, try 1 (74%, failed), Claude Haiku 5.5 on Ansible, try 2 (72%, passed), Claude Haiku 5.5 on Ansible, try 3 (73%, failed), Claude Opus 5.5 on Ansible, try 1 (91%, passed), Claude Opus 5.5 on Ansible, try 2 (91%, passed), Claude Opus 5.5 on Ansible, try 3 (92%, passed), Claude Opus 5.5 on Flipt, try 1 (71%, passed), Claude Opus 5.5 on Flipt, try 2 (85%, passed), Claude Opus 5.5 on Flipt, try 3 (76%, passed), Claude Haiku 5.5 on Proton Mail web client, try 1 (61%, passed), Claude Haiku 5.5 on Proton Mail web client, try 3 (64%, passed), Claude Opus 5.5 on Proton Mail web client, try 1 (70%, passed), Claude Opus 5.5 on Proton Mail web client, try 2 (68%, passed), Claude Opus 5.5 on Proton Mail web client, try 3 (70%, failed), Claude Opus 5.5 on wolfSSL, try 1 (100%, passed), Claude Opus 5.5 on wolfSSL, try 2 (100%, passed) and Claude Opus 5.5 on wolfSSL, try 3 (100%, passed).

Cost#

Cost per passed try at standard API prices: GPT-6 Luna $0.03; Claude Haiku 5.5 $0.05 to $0.23; GPT-6.1 Sol $0.41 to $0.46; Claude Opus 5.5 $0.73, from 20 tries.

The cost of all tries, failed ones included, divided by the tries that passed. Typical means the middle try.

Some costs are a range because the tools don't log everything they're billed for. Details are under How I tested.

ModelGPT-6.1 SolClaude Opus 5.5Claude Haiku 5.5GPT-6 Luna
Tries passed14 of 2115 of 2114 of 219 of 21
Minutes per try, typical4.44.43.71.3
Tokens written per try, typical5,2878,61215,3743,707
Total cost$5.73 to $6.45$10.27 (20 tries logged)$0.64 to $3.19$0.28 to $0.31
Cost per pass$0.41 to $0.46$0.73 (from 20 tries)$0.05 to $0.23$0.03

Source: skill-evals.brenhq.com, updated 14 October 2026. Deep suite v1. 84 tries, medium effort, 30 minutes per try. Prices checked 29 September 2026, OpenAI's cache-write rates 14 October 2026.

Speed-ups#

On pandas, only Claude Opus 5.5 matched the expert's speed-up, once. On NumPy, every model matched the expert's speed-up at least twice.

Each square is one try. Filled means it got 95% of the expert's speed-up without changing the results. The number is the best try's speed-up as a share of the expert's.

TaskGPT-6.1 SolClaude Opus 5.5Claude Haiku 5.5GPT-6 Luna
Speed up code
pandasMake setting values one at a time in nullable integer arrays faster.best 45%best 103%best 45%best 46%
NumPyMake np.isin faster on integer arrays.best 104%best 146%best 109%best 152%

Source: skill-evals.brenhq.com, updated 14 October 2026. Deep suite v1. 24 tries, medium effort, timed alone on dedicated cores. Timing noise is about 1%: the expert's own fix measured 101% and 101% of itself.

Security fixes#

11 of 12 tries fixed the wolfSSL bug; only GPT-6 Luna missed once. None fixed the LibreDWG bug, though 10 of 12 stopped the crash.

Each square is one try. Filled means it passed that check. On LibreDWG the models patched the line that crashed, but the real bug was in another file.

CheckGPT-6.1 SolClaude Opus 5.5Claude Haiku 5.5GPT-6 Luna
wolfSSLFix a heap buffer overflow when a big number is written out in hex.
Crash input no longer crashes3 of 33 of 33 of 32 of 3
No memory errors on other inputs3 of 33 of 33 of 32 of 3
Library's own tests pass3 of 33 of 33 of 33 of 3
Output unchanged3 of 33 of 33 of 33 of 3
Passed all 4 checks3 of 33 of 33 of 32 of 3
LibreDWGFix a buffer over-read while reading a drawing file.
Crash input no longer crashes3 of 33 of 33 of 31 of 3
No memory errors on other inputs3 of 33 of 33 of 31 of 3
Library's own tests pass0 of 30 of 30 of 30 of 3
Output unchanged0 of 30 of 30 of 30 of 3
Passed all 4 checks0 of 30 of 30 of 30 of 3

Source: skill-evals.brenhq.com, updated 14 October 2026. Deep suite v1. 24 tries, medium effort, each check on a fresh build. What each check means is under How I tested.

How I tested#

How the tasks were picked, run and checked

Why this test: on the other pages, my launch tests give every model near full marks, so they can't show a model getting better. The 8 tasks come from three public task sets, credited below: features and bug fixes, speeding up Python code, and memory-safety fixes in C. 7 of them count in the scores above; the other is shown on its own. I picked the tasks at random before any model ran, then checked each one: the original fix must pass and untouched code must fail. I replaced 2 picked tasks: in one the original fix failed here, and the other could only be passed by rewriting unrelated code. One more was replaced before that, because its fix needs a library that isn't installed and tries have no internet.

This is version 1, frozen 13 October 2026: these 8 tasks, 3 tries each, the same settings and the same containers. A new model gets the same set. If I change a task or a setting, that's a new version, and it isn't compared with this one.

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, 30 minutes per try (1 try hit the limit). Each try ran in the task's own container with no internet except the model's API: no web search, no downloads, no way to look up the original fix. The model never saw the hidden tests or the original fix; the speed-up tasks include their timing script, as intended. Its change was then copied into a fresh container and graded by the task's own grader, which undoes any edit to existing tests. Claude Opus 5.5 and Claude Haiku 5.5 shared one login, so their tries went one at a time.

Costs use each vendor's standard API prices. Claude Haiku 5.5 is a range because Anthropic charges more for prompts over 100k tokens, and prompt sizes weren't logged. GPT costs are a range because Codex doesn't log cache writes, which OpenAI bills at 1.25 times the input price. Claude Opus 5.5's try 1 on wolfSSL hit the time limit before logging its tokens, so 20 of its tries have a cost. Minutes are start to finish, tests included.

The security tasks have 4 checks, each on a fresh build: the crash input no longer crashes; none of the task's other crash inputs or normal inputs trips the memory checker; every library test that passes with the original fix still passes; and output on normal inputs matches the original fix exactly.

Limits: this test can't confirm that a model improves week to week. It has 7 counted tasks and 3 tries each, so one try moves a model's count a lot, and each model ran in one tool at one effort. These are public tasks, so a model may have seen the original fix in training; the try table marks tries that repeated most of it. The speed-up tasks were picked from those whose expert fix changes Python only, so a rebuild fits in one try.

A trial round ran first, 1 try per task, and isn't counted. It found bugs in my setup, each logged; the affected tries were set aside and rerun. Fable 5.1, Grok 4.7 and GPT-6 Astra reviewed it before these tries.

Every try's record is in results.json, under deep_runs, deep_checks, deep_pilot_runs and deep_suite. The plan and every change to it 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.