Identical prompts, identical channel
Every contender gets the same task prompt concatenated with the same shared
OUTPUT_CONTRACT, through the same command. Only --model and
--thinking differ between contenders. Nothing is tuned per model —
no bespoke system prompt, no per-vendor formatting hint, no retry-until-parses loop.
Tools are off, and that is a fairness control
The runner passes --no-tools --no-skills --no-rules. Several roster
models are agentic coding models: handed a write tool, they satisfy the task by
writing the spec to a file and replying with a prose summary, which the validator
scores as malformed. That penalises a channel mismatch rather than 3D reasoning.
One qwen response went from 390 bytes of prose to 10 KB of real JSON once tools were
disabled — same model, same prompt, same rubric.
The first valid attempt, not the best one
Each model/task cell runs two attempts. The judged attempt is the first one that
validates, chosen by validity and then by start time — never by quality. Ranking
attempts by quality would require the judge we are economising on, and would leak
the outcome into the selection. Call this best-of-N by validity; it is not
the best run.
Two validity rates, always together
Per-attempt validity is valid generations over all generations.
Best-of-N validity is tasks with at least one valid attempt over
all tasks. Best-of-N is strictly more flattering and hides the reliability signal,
so the page never shows one without the other.
Blind, batched, absolute scoring
Judges see redacted submissions under anonymous labels, four per call, against an
absolute rubric rather than a ranking. Redaction is structure-aware and never
rewrites object ids, so a spec stays coherent while its author stays hidden.
Nothing here is decided by vote, which is why the panel does not need to be odd.
Frames are all-or-nothing per batch
Judges receive rendered frames alongside the JSON. If any contender in a judged
batch is missing a frame, the whole batch drops to JSON only. No model is ever
judged text-only while its peers in the same call are judged with images.
Self-preference is present and not solved
Every judge is also a contender, and the panel spans three families: two Anthropic
judges, one OpenAI judge, and one Google judge. Blinding hides identity and
family-diverse averaging dilutes any single model's bias, but neither removes
self-preference. The judge-family cross-tab above makes that risk inspectable.
Absent is not zero
A missing cell is drawn as a hatched slot and written as an em dash. A genuine zero
is drawn as a bar at the floor and written as 0.00.
They are different findings and the page never conflates them: a model that was
never run does not get credited with a failure it did not have, and a model that
scored nothing does not get hidden behind a gap.