Skip to content

docs: grading fixes — an eval whose answer key corral already wrote - #339

Merged
pdbethke merged 1 commit into
mainfrom
docs/fix-eval
Sep 12, 2026
Merged

pdbethke merged 1 commit into
mainfrom
docs/fix-eval

Conversation

@pdbethke

Copy link
Copy Markdown
Owner

Follows straight from the churn-vs-drain measurement in #332: 5 of round three's 13 findings were created by round two's own fix, and those five were more severe than the eight pre-existing ones. That raises a question with no execution-proven answer today — is a given model any good at fixing, as opposed to writing?

The argument is that corral already owns the answer key. A claim called REPRODUCED must ship a script that exits 0 only if the defect is demonstrated, and corral runs it rather than reading it. So a fix is graded by exit code, not opinion: before, the script exits 0; after a correct fix, it must not. The public branch holds 42 such claims of which 36 held — 36 findings with working scripts, comfortably past models rank's five-observation floor.

Three mechanical facts per fixer seat: closed (the finding's own script no longer exits 0), intact (the repo's suite still passes), clean (a cold reviewer, blinded to which model wrote the patch, finds nothing new in the touched files). Diff size is recorded but not graded, because a fix that deletes the feature satisfies the first two.

Prior art named up front: SWE-bench. Two differences carry the whole argument — its corpus is fixed and public, therefore contaminated, while these findings are generated fresh from your own repo by an adversary that has never seen it; and it never asks whether the patch introduced something, which is the fact we just measured at 3 highs from 10 fixes.

The doc also records why the retrospective shortcut does not work, because it is instructive and it is wrong. 1,259 of this repo's 1,477 commits carry a model trailer, so findings can be attributed with no new machinery — and the resulting table should be believed by nobody: blame attributes to the most recent toucher so the newest model always looks guiltiest; the models were not doing the same job; the findings are not a random sample; numerator and denominator do not span the same thing; co-authorship is not authorship. Those five failures are the eval's design constraints.

One thing is genuinely missing. Seats are read-only by design (--tools Read,Grep,Glob, --sandbox read-only), so a fixer is a new jailed seat kind that must not be able to edit the script, the test command, or the finding.

Stance, recorded as a founder call rather than assumed: this is not corral acquiring a builder. The fixer models are the audited party, as the operator's suite is in certify.

Every figure re-verified against the repo before committing.

🤖 Generated with Claude Code

https://claude.ai/code/session_011NgkB3eLPBhgfqU1XopR1V

Follows directly from the churn-vs-drain measurement: 5 of round three's 13
findings were created by round two's own fix, and those five were MORE SEVERE
than the eight pre-existing ones. That raises a question with no
execution-proven answer today — is a given model any good at FIXING, as
opposed to writing?

The design's whole argument is that corral already owns the answer key. A
claim called REPRODUCED must ship a script that exits 0 only if the defect is
demonstrated, and corral runs it. So a fix is graded by exit code, not by
opinion: before the fix the script exits 0; after a correct one it must not.
42 claims declared REPRODUCED on the public branch, 36 held — 36 findings with
working scripts, past models rank's five-observation floor.

Three mechanical facts per fixer seat: CLOSED (the finding's own script no
longer exits 0), INTACT (the repo's suite still passes), CLEAN (a cold
reviewer, blinded to which model wrote the patch, finds nothing new in the
touched files). Plus diff size recorded but not graded, since a fix that
deletes the feature satisfies the first two.

Prior art named up front: SWE-bench. Two differences carry the argument — its
corpus is fixed and public, so contaminated, while these findings are generated
fresh from the operator's own repo by an adversary that has never seen it; and
it never asks whether the patch INTRODUCED something, which is the fact we just
measured at 3 highs from 10 fixes.

Also recorded: why the retrospective shortcut does not work. 1,259 of this
repo's 1,477 commits carry a model trailer, so findings can be attributed
without running anything — and the resulting table should be believed by
nobody. Blame attributes to the most recent toucher, so the newest model always
looks guiltiest; the models were not doing the same job; the findings are not a
random sample because the round was aimed at one model's fixes; numerator and
denominator do not span the same thing; and co-authorship is not authorship.
Those five failures are the eval's design constraints.

What is missing is one thing: seats are read-only by design, so a fixer seat is
a new, jailed seat kind that must not be able to edit the script, the test
command, or the finding. The first slice is one finding, N seats, three facts
printed — because that is where the only real unknown lives.

Stance: this is not corral acquiring a builder. The fixer models are the
AUDITED party, as the operator's suite is in certify. Recorded as a founder
call rather than assumed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011NgkB3eLPBhgfqU1XopR1V
@pdbethke
pdbethke merged commit b32673f into main Sep 12, 2026
4 checks passed
@pdbethke
pdbethke deleted the docs/fix-eval branch September 12, 2026 18:55
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 12, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant