topbot

Data · Tooling

The runner, the models, and the faults that mattered.

The runner

A purpose-built runner drives Claude Code headless (claude -p with stream-json output) against frozen task banks. For each run it builds an isolated configuration directory from the arm's definition, provisions a workspace from the task's fixture, records the full transcript, hook events and session log, scores the final workspace on a fresh copy, and checkpoints so that an interrupted campaign resumes where it stopped. It pins the CLI binary, refuses to resume a campaign whose configuration changed, and stops itself at a share of the usage window. It has 356 automated tests.

Models outside the agent

Labels, grades and drafted tasks came from models of other families than the agent under test; harvested tasks come from real commits. Claude appears only as the agent, in the recall probe that checks it has not memorised a task, inside one review metric, and as the difficulty classifier in one probe. The table shows the final assignment: each model called through its own maker's API, every non-GPT model at its highest reasoning setting. Earlier, GPT-6.1-sol and Gemini 3.1 Pro labelled review findings, and GPT-6.1-sol wrote the first build slices and the activation prompts.

RoleModels
writegpt-6.1-sol
gradeopenai/gpt-6-astra
agreez-ai/glm-5.3, mistralai/mistral-large-4-0, meta/muse-spark-1.3
bulkz-ai/glm-5.3-flash, deepseek/deepseek-v4.1-flash, gemini-flash

Measurement faults found during the study

The faults in our own instrument that mattered most, found while the study ran, with how each surfaced. About half would have changed a reported number had they gone unnoticed. Anyone running a similar comparison is likely to meet the same kinds of fault.

DateFaultHow it was caught
5 OctEvery run of a trial executed on an empty configuration: a relative config path was resolved in the wrong directory.The trial's hook never fired; the trial was voided.
8 OctAn oracle test that looped forever outlived its time limit.Process-group kill on timeout.
10 OctIn a trial, a scoring crash on one bank's file manifest recorded every agent as failing.The trial stopped the run; re-scoring the stored workspaces showed all 15 had passed.
10 OctA provider's mid-response server error was scored as the agent's failure.Read in the error text; such runs are now excluded, not scored.
11 OctA task prompt that began with a hyphen was read by the CLI as an option.Every run of one task failed identically.
11 OctModel calls through the CLI could never return a structured answer: a flag blocked the structured-output tool.A classifier run in which 57 of 57 calls returned nothing.
12 OctSessions re-woken by a background task were recorded as one turn and a few cents.A run with 26 turns of real work recorded as 1.
12 OctA verifier that timed out under parallel load scored a whole suite 0.Re-scoring all 148 stored workspaces; serial scoring gave 0.83 three times. Corrected by a registered rule.
12 OctA run stopped by a session limit was marked complete; an interrupted run left its agents running.Resume attempts; worked around by hand.