Skip to content

Record what the published score counts, and what checks are for - #71

Merged
leggetter merged 1 commit into
mainfrom
record-scoring-definition
Aug 29, 2026
Merged

Record what the published score counts, and what checks are for#71
leggetter merged 1 commit into
mainfrom
record-scoring-definition

Conversation

@leggetter

Copy link
Copy Markdown
Collaborator

A decision record, no behaviour change. This repository owns the definition of the number; the website is a consumer of it, and until now the rule was written down only there.

What is recorded

The published score is scenarios completed. One row is one scenario, and its passed is the AND of every check in it — what the harness records, what results/latest.json publishes, what a release quotes, and what supabase/evals does (passed / results.length, never an aggregate over checks).

Checks are evidence behind a verdict, not a score.

Why, because the alternative was tried

The website briefly shipped check-level percentages, to give partial credit for partial work. Reasonable idea; it collides with how our scorers are written.

A scorer stops as soon as there is nothing left to check. A run that fails at the first hurdle returns 0/1; a near-miss returns 4/5:

benchmark-verification-002-elevenlabs-callbacks
  codex-gpt-5.4-mini-no-skills   failed   checks 0/1
  codex-gpt-5.6                  failed   checks 4/5

Failing worse is cheaper than failing partially, and each agent's denominator ends up set by its own failures — 59, 62 and 65 checks across six arms of the same nineteen scenarios. On the 25 August snapshot:

experiment scenarios checks
claude-code-sonnet-5-no-skills 17/19 = 89% 59/62 = 95%
codex-gpt-5.4-mini-no-skills 17/19 = 89% 57/59 = 97%

They tie by scenarios. By checks the deliberately weaker model reads higher, and the published page ranked it above a frontier agent on its default view.

The part that matters for scorer authors

A check list is not comparable between runs of the same scenario, so nothing should compute a rate from it or compare its length across cells.

The early return itself is correct — a scorer that cannot find a tenant has nothing honest to say about delivery — so the fix belonged at the consumer, not here. That is hookdeck/website#780.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MQzUoMAwEBJWpEGVvVzSjK

Two decisions taken on 29 August that live nowhere in this repository, which is
the repository that owns the definition. The website is a consumer of these
numbers; it should not be the only place the rule is written down.

The published score is scenarios completed. One row is one scenario and its
`passed` is the AND of every check in it — what the harness records, what
results/latest.json publishes, what a release quotes, and what supabase/evals
does.

The alternative was tried and reverted on the website side. Counting checks
gives partial credit for partial work, which sounds fairer and collides with
how our scorers are written: a scorer stops as soon as there is nothing left to
check, so a total failure returns 0/1 while a near-miss returns 4/5. Failing
worse became cheaper than failing partially. Measured on the 25 August snapshot
that ranked the deliberately weaker model above a frontier agent, 97% to 95%,
where by scenarios they tie at 89%.

The consequence for anyone writing a scorer is the part worth keeping: a check
list is not comparable between runs of the same scenario, so nothing should
compute a rate from it or compare its length across cells. The early return
itself is correct — a scorer that cannot find a tenant has nothing to say about
delivery — so the fix belonged at the consumer.

Fixed in hookdeck/website#780.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MQzUoMAwEBJWpEGVvVzSjK
@leggetter
leggetter merged commit 42965bb into main Aug 29, 2026
2 checks passed
@leggetter
leggetter deleted the record-scoring-definition branch August 29, 2026 10:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant