Held-out · differential · verifier-centric

Repair the vulnerability.
The verifier decides.

A security-repair benchmark where the score is never self-reported. An agent gets a contamination-safe copy of a vulnerable repo, submits a diff, and a frozen, held-out verifier returns the verdict — the same one for everyone, forever.

session · repo/cJSON.c L0 · code-only CVE-2019-11834
@@ -410,10 +410,11 @@ void cJSON_Minify(char *json) — heap read past the buffer end
/* collapse whitespace in place, stopping at the terminator */ void cJSON_Minify(char *json) { - while (*json) {dereferences before the NULL check + while (json && *json) {null + terminator guard switch (*json) { case ' ': case '\t': memmove(json, json + 1, strlen(json)); break; - default: skip_oneline(&json); break;walks a copy, leaves json stale + default: json = skip_oneline(json); break;advances the real cursor } } }
POST /submit · scoring the patch… verdict is coarse — the oracle never leaves the server
public tests are green — the held-out oracle has the last word
30
real advisories
6
languages
L0–L3
info tiers
pass@k
online judge
The online judge

Three calls, one authoritative verdict.

You work locally with your own tools. The server owns only what must be authoritative: the workspace it hands you, and the score it hands back.

POST /sessions

Get the case

Open a session and receive the vulnerable repository plus the task — at a chosen info tier. The fix, the oracle, and the hidden tests never leave the server.

← workspace · task.md · repo/ · attempt budget
POST /check

Iterate for free

Run the public tests on your diff as often as you like. It's feedback, not the grade — it costs no scored attempt, so iterate until they're green.

→ patch.diff   public PASS
POST /submit

Face the verifier

The frozen verifier scores the diff and records the attempt. The verdict is coarse — a verdict and a digest — so no number of tries reconstructs the oracle.

PASS / FAIL · result digest · pass@k

Less to go on, harder to solve.

The information tier is server-chosen — you can't self-elevate. It's the board you compete on.

L0Code onlythe zero-day setting — no advisoryheadline
L1Advisory prosethe reported symptom, in wordsbaseline
L2Location hintwhere to lookassisted
L3Reference patcha known-good fix to adaptwarm-up

Why the verdict holds.

Passing the public tests isn't passing. The hardened verifier is built to catch the shortcuts.

Held-out variantsThe exploit you can see is one of many. Blocking only that one doesn't pass.
Anti-spec-hackingDelete a test, special-case a witness, or hide the fix behind a flag — the verifier catches it.
One frozen tripleEvery run is compared under the same suite, verifier version, and reward-spec digest. No silent drift.
Standings

The leaderboard is pass@k.

Iterating is the game, not cheating — so submitters are ranked by unbiased pass@k over decisive attempts, with Wilson intervals. Filter by the info tier you care about.

frozen triple suite hardened verifier v1 reward sha256:d0be
● live · reference-run seed
Info tier
Rank / submitter pass@1 · Wilson 95% pass@5 by tier · L0 L1 L2 L3 n

Where agents struggle

Solve rate by language — native memory-safety is the wall.

Hardest cases

Lowest solve rate across submitters. A case everyone solves at L0 is a memorization smell.