Research

We Ran 154 Controlled Trials of Claude vs GPT. Both Scored Perfect.

Report
Download the full reportPDF · Technical report · July 2026

Most model comparisons you read are one person running one prompt through two tools and reporting which output they liked better. That is not a measurement. It is an anecdote wearing a lab coat.

So we did the opposite. This is the controlled follow-up to our earlier hands-on comparison of Claude Fable 5 and GPT-5.6. We ran 154 coding trials as a blocked full-factorial designed experiment, treated each run as a coin flip because model inference is non-deterministic, and put a confidence interval on every pass rate. The result was not a winner. It was a ceiling, and the honest thing is to tell you that instead of crowning one.

Short answer

We ran 154 controlled coding trials pitting Claude Fable 5 against GPT-5.6 as a blocked, blind dual-judged experiment. Both models passed everything solvable, so there was no detectable difference to report. The honest finding is that the exam was too easy, and the next one raises the difficulty until failures appear.

Why Do Most Claude Versus GPT Comparisons Tell You Nothing?

Single-run comparisons cannot survive non-determinism. Ask the same model the same question twice and you can get two different answers, so one run tells you what happened once, not what happens on average. A fair comparison needs repetition, identical conditions, and honest statistics.

The problem is non-determinism. Ask the same model the same coding question twice and you can get two different answers, two different token counts, two different outcomes. A single run tells you what happened once. It tells you nothing about what happens on average, which is the only thing you actually care about when you are deciding which tool your team ships with. Run the comparison again tomorrow and the winner can flip.

There is a second, quieter problem. The public benchmarks that do use repeated, structured evaluation are running out of headroom. Frontier models now cluster near the top of the standard suites, which makes those suites worse at telling models apart. Contamination compounds it: when benchmark problems, or text closely derived from them, land in a model's training data, the model can recall an answer instead of reasoning to it. The team behind LiveCodeBench (Jain et al., 2024) documented exactly this for coding, showing that older suites are no longer sufficient on their own and building a time-segmented benchmark of fresh contest problems specifically to dodge the leakage. We said the same thing in our own terms in our report on AI agent evaluation: public benchmarks measure the model, not your system.

How Do You Design a Fair Test of Two AI Coding Models?

We ran a full-factorial designed experiment blocked by task: model by reasoning effort by harness, every configuration facing every one of nine tasks, each task proven solvable before any model touched it. Runs were seed-interleaved and every outcome scored by a deterministic pass or fail gate.

The two contestants were Claude Fable 5, driven through Anthropic's claude CLI, and GPT-5.6, driven through OpenAI's codex CLI. The design is a full-factorial designed experiment, blocked by task. The factors are model (Claude, GPT), reasoning effort (two to three levels), and harness (a bare CLI versus a shared agent-instruction harness). Blocking means every configuration sees every task, so task difficulty cancels out of any paired comparison. Replication is n=3 repetitions per cell on the smaller tasks and n=2 on the greenfield build, because a single run is an anecdote and repeated runs let us treat each outcome as a Bernoulli trial and estimate a real pass rate. Run order is seed-interleaved (seed 1337) so that time-of-day and API-load drift cannot systematically favor one model.

The tasks matter as much as the design. There are nine, and every one was proven solvable before any model touched it. Four are seeded-bug tasks with deliberately subtle defects: an off-by-one in pagination, a naive-versus-timezone-aware datetime bug, a cache key that silently drops a dimension, and an async dedup race. Four are feature tickets written in a strict six-section format. One is a greenfield CLI build, a roughly 200-line cost-splitting tool with a reference implementation. Each task ships a self-test that fails on the broken starting code and passes after the reference patch. All nine were green before the experiment began, so a failure would mean the model failed, not that the task was impossible.

Conditions were held byte-identical: the same harness instruction files, the same prompts, and the same deterministic verify gate deciding pass or fail. Every transcript and diff was then stripped of any identifying markers and scored blind by two separate judges, a Claude judge and a GPT judge, on a four-dimension rubric. We ran two judges precisely because a single-model judge is a known failure mode, which we come back to below. Statistics are exact, not large-sample approximations, because the per-cell sample sizes are small and pretending otherwise would be dishonest: Wilson score intervals for every pass rate, McNemar's exact test for paired head-to-heads, an exact sign-flip permutation test on tokens, and an explicit power statement for what the sample can detect.

ConfigurationPassOutput tokInput tokWallTurns
Claude Fable 5 (medium effort)24/241,73619,41268.2s7
Claude Fable 5 (high effort)24/242,00819,39858.8s6
GPT-5.6 Sol (low effort)24/241,09595,24831.9s1
GPT-5.6 Sol (medium effort)24/241,534138,25249.0s1
GPT-5.6 Sol (high effort)24/241,966174,66263.7s1
Source: Actual Intelligence Labs, model-gauntlet sweep 1, medians, n=24 per row. Our own experiment, not externally published.

What Did 154 Trials Actually Show?

Both models passed everything solvable. Sweep 1 was 120 of 120; every solo configuration across both sweeps was 152 of 152. The paired McNemar test found zero discordant pairs, so there was no detectable difference between the models on this suite.

Sweep 1 was 120 passes out of 120 attempts, across both models and every effort level. Fold in the solo runs from the second sweep, the harnessed tasks and the bare-plus-harnessed greenfield build, and the total is 152 of 152 clean passes on every configuration where a model worked alone. The honest way to report a perfect score is with its confidence interval, not as a bare 100 percent. Twenty-four passes out of twenty-four gives a 95 percent Wilson interval of 86.2 percent to 100 percent. That is the correct reading: we did not prove the model never fails on tasks like these. We proved that if it has a failure rate, the data are consistent with it being anywhere from zero up to about 14 percent. The chart at the top of this report draws every perfect bar with exactly that uncertainty. A perfect sample is evidence, not a guarantee, and the interval is where the honesty lives.

For the head-to-head we used McNemar's exact test, which only extracts information from discordant pairs, the cases where one model passed and the other failed on the same task and repetition. There were zero discordant pairs. Every matched pair was pass and pass. With nothing discordant, there is nothing to test, and the correct conclusion is no detectable difference between the models on this suite. Not that they are equal. No detectable difference. Those are different claims, and we are careful to only make the one the data supports.

One configuration did wobble, and it deserves the careful version rather than a headline. We also tested a hybrid: Claude orchestrating GPT as the implementer. Across four attempts, two produced planning notes and zero code, and two shipped working solutions of roughly 160 to 176 lines. So, 2 of 4. The rig was identical across all four, which means the most defensible reading is genuine run-to-run variance in a multi-agent handoff, not a fixed defect. With n=4, that is where we stop. It is a flag for the next experiment, not a conclusion.

Does Higher Reasoning Effort Improve Code Quality?

No, not on this suite. Pass rate stayed at 100 percent at every effort level for both models. The only thing that moved was cost: GPT-5.6 at high effort burned about 80 percent more output tokens than at low, for the identical result.

Every model here exposes a reasoning-effort setting, and the pitch is that higher effort makes the model think harder and do better. On this suite, it did not. Pass rate was 100 percent at every effort level for both models. What moved was cost. Claude at high effort spent about 16 percent more output tokens than at medium (2,008 versus 1,736 median) for the identical result. GPT-5.6 at high effort spent about 80 percent more output tokens than at low (1,966 versus 1,095) and pulled roughly 1.8 times the input tokens (174.7k versus 95.2k). The pairwise McNemar tests between adjacent effort rungs again found zero discordant pairs. More effort, same outcome, higher bill. That is the same routing discipline we cover in our report on token efficiency: spend the expensive setting only where it changes an outcome.

This is not a quirk of our nine tasks. It matches a growing body of work on what researchers call the overthinking phenomenon. The survey Stop Overthinking: A Survey on Efficient Reasoning for Large Language Models (Sui et al., 2025) catalogs how reasoning models generate verbose, redundant chains that add computational cost without adding correctness. The empirical study Between Underthinking and Overthinking (Su et al., 2025) is sharper still: models overthink easy problems, producing unnecessarily long outputs, precisely because they are poor at gauging problem difficulty. Our tasks were, in hindsight, easy for these models. Cranking the effort dial on an easy task is spending money to watch a model deliberate over a conclusion it already had.

Do Claude and GPT Solve Problems the Same Way?

No. Claude iterates over six to seven turns, reading, editing, and checking until it converges. GPT one-shots in a single turn. Same destination, different route, and neither style won on outcomes because both cleared this tier.

The two models do not solve problems the same way, and the trace makes it obvious. Claude iterates. Median 6 to 7 turns per task, roughly 59 to 68 seconds of wall-clock time. It reads, edits, checks, and edits again, converging on a fix. GPT one-shots. Median of a single turn, roughly 26 to 64 seconds. It reasons internally and emits a solution in one pass. Neither style won on outcomes at this tier, because both styles cleared the tier. If you have watched one of these tools and formed an opinion about which works harder, this is a useful reminder that turn count is a workflow signature, not a quality signal.

One caveat you cannot skip: input tokens do not compare across vendors. Look back at the config table and you will see Claude reporting around 19.4k median input tokens while GPT reports 95k to 175k. That is not GPT reading five to nine times more of your code. The two CLIs count context resends and cache reads differently, so their input-token numbers are measuring different things under the same label. The practical rule: within-model comparisons are safe, because each CLI is consistent with itself, while cross-model input-token or dollar comparisons are indicative only, and we refuse to publish them as hard claims. The axes that are honestly comparable across models are output tokens, turns, and wall-clock time. Those are what we lean on.

Can You Trust an AI to Judge Another AI's Code?

Only with guardrails. We stripped identity from every transcript and had two separate models grade everything, because a single-model judge carries a documented self-preference bias. Our two judges agreed within one point on 96 percent of runs.

Running two judges was not decoration. Automated judges carry a documented self-preference bias: the paper Self-Preference Bias in LLM-as-a-Judge (Wataoka et al., 2024) shows a model systematically favoring certain outputs when it grades, apparently because it rewards text that is more familiar, lower-perplexity, to itself. A single-model judge grading its own model's work is a conflict of interest baked into the evaluator.

So we stripped identity from every transcript and had both models grade everything. Across 139 dual-judged runs, the two judges landed within one point of each other on 96 percent of runs, with a mean absolute gap of 0.53 points on a ten-point scale and a Pearson correlation of 0.76. On the pilot, the GPT judge ran about half a point more generous than the Claude judge on the same diffs, and both judges leaned slightly toward GPT's code. That last detail is exactly why the judging is blind and dual, and exactly why we report the disagreement instead of averaging it away.

What Can This Experiment Not Tell You?

It cannot rank the models, because both passed everything. It is a ceiling result on a suite whose difficulty was mis-calibrated low, judged by models rather than humans, on small per-arm samples. That mis-calibration is the headline finding, not a footnote.

This section is the credibility, so we are going to be blunt about what this experiment cannot tell you.

What Happens in the Next Experiment?

The next round raises the difficulty until failures appear. A model gap only becomes measurable once at least one model starts missing, and the effort dial only earns its cost once thinking harder changes an outcome instead of just a token count.

The most useful result of a ceiling is that it tells you exactly where to point the next experiment. Both models beat this tier, so the tier was too easy, so the tier goes up. Experiment 2 is the hard tier: the same rig, the same blocking, the same blind dual-judge, the same exact statistics, and harder tasks pushed up in difficulty until failures start appearing. Failures are what you need. A gap only becomes measurable once at least one model starts missing, and the effort dial only earns its cost once think harder changes an outcome instead of just a token count. Same exam room, harder exam. That is where Claude versus GPT gets a real answer, and we will report that one the same way we reported this one: with the intervals drawn in, the disagreements shown, and no winner invented that the data did not earn.

Common Questions

Is Claude better than GPT for coding?
On this suite, no detectable difference. Both models passed every solvable task, and the paired McNemar test had zero discordant pairs, so there was nothing to test. That is a narrower claim than the models are equal. We proved only that both clear this tier, with a confidence interval on every pass rate rather than a bare 100 percent.
Does higher reasoning effort improve code quality?
Not on tasks at this difficulty. Pass rate stayed at 100 percent across every effort level for both models. The only thing that changed was cost: GPT-5.6 at high effort used about 80 percent more output tokens than at low for the identical result. That matches published work on the overthinking phenomenon, where reasoning models pad easy problems with redundant chains that add cost, not correctness.
How many runs do you need to compare AI models?
More than one, and enough per arm to separate the model from the noise. Model inference is non-deterministic, so a single run is an anecdote. We used 24 trials per arm, which still only has 80 percent power to detect gaps of about 36.7 percentage points or more. Smaller real differences get a confidence interval, not a verdict. The exact number depends on the effect size you need to detect.
Can you trust AI judges to grade AI code?
Only with guardrails. Automated judges carry a documented self-preference bias, so a model grading its own output is a conflict of interest. We stripped identity from every transcript and ran two separate model judges. They agreed within one point on 96 percent of runs, and we report the disagreement rather than averaging it away.
Is this a benchmark or a ranking?
Neither. It is one controlled experiment on one suite of nine proven-solvable coding tasks. Because both models passed everything, the suite can only establish that both clear this tier, not rank which is smarter. The difficulty was mis-calibrated low, and that mis-calibration is the headline finding, not a footnote.

Sources

SourcePublisherLink
LiveCodeBench: Holistic and Contamination Free Evaluation of Large Language Models for CodeJain et al., arXiv 2024arxiv.org
Stop Overthinking: A Survey on Efficient Reasoning for Large Language ModelsSui et al., arXiv 2025arxiv.org
Between Underthinking and Overthinking: An Empirical Study of Reasoning LengthSu et al., arXiv 2025arxiv.org
Self-Preference Bias in LLM-as-a-JudgeWataoka et al., arXiv 2024arxiv.org
Lost in the Middle: How Language Models Use Long ContextsLiu et al., arXiv 2024arxiv.org

Questions to explore next

Keep Exploring

Chalk stick figure in a hard hat presenting a little machine of blue gears it just built

Bring us the bottleneck.
We’ll build the system.

No Dreaming. Just Building.