Score a solver with every counterexample replayed

A claim without a trace that replays earns nothing. That is the only way to tell a solver which found a bug from one which guessed the label — and it is what this leaderboard measures.

Tasks are generated, not fixed, so nothing here can be memorised: change the seed and the answer key changes. Every label was computed by an exhaustive model checker, and a candidate the checker could not settle produces no task rather than a guessed one. Everything runs in this page; nothing is uploaded.

Starting the checker…

The fabricated-trace oracle, already scored

Perfect labels on every task. Every trace invented. Here is what it earns:

An oracle that knows every answer and fabricates every trace

Perfect labels. No evidence. Watch what it scores.

Balanced accuracy: 0.500

metricvalue
tasks20
balanced accuracy0.500
accuracy0.500
trivial always-safe accuracy0.500
recall on violated0.000
recall on safe1.000
detections claimed10
counterexamples that replayed0
claims that did not replay10
TP / FP / FN / TN0 / 0 / 10 / 10
⚠️ Accuracy ignoring replay is 1.000, against 0.500 credited. This submission asserts more than it demonstrates — 10 claim(s) had no trace that replays.

By shape

shapetaskscorrect
bounded_retry54
handshake51
mutual_exclusion31
resource_pool31
sequence_window43

Claims that were not credited, and why

taskreason
sequence_window_medium_44a step does not name the fields ('seq', 'acked', 'aux0')
mutual_exclusion_medium_46a step does not name the fields ('p0', 'p1', 'p2', 'lock', 'aux0')
handshake_medium_48a step does not name the fields ('req', 'resp', 'installed', 'aux0')
resource_pool_medium_50a step does not name the fields ('held', 'c0', 'c1', 'c2', 'aux0')
handshake_medium_53a step does not name the fields ('req', 'resp', 'installed', 'aux0')
resource_pool_medium_55a step does not name the fields ('held', 'c0', 'c1', 'c2', 'aux0')
mutual_exclusion_medium_56a step does not name the fields ('p0', 'p1', 'p2', 'lock', 'aux0')
handshake_medium_58a step does not name the fields ('req', 'resp', 'installed', 'aux0')
handshake_medium_68a step does not name the fields ('req', 'resp', 'installed', 'aux0')
bounded_retry_medium_72a step does not name the fields ('tries', 'done', 'aux0')

Run it yourself below, at any seed and size. The gap between accuracy_ignoring_replay and the credited accuracy is the whole measurement.

Task set

Baselines

Three reference points. The third is the one worth looking at: perfect labels, fabricated traces. It scores what guessing scores, because it demonstrated nothing.

Score a submission

A submission maps task id to a prediction. violated is required; trace is what earns the detection — it must start at the initial state, move only along real transitions, and end in a state that genuinely violates the property.

{
  "mutual_exclusion_medium_3": {"violated": true,
                                "trace": [{"state": {"p0": 0, "p1": 0, "lock": 0}}, ...]},
  "handshake_medium_7":        {"violated": false}
}

Run the same scoring on your machine

pip install "pcar-specforge @ git+https://github.com/nickharris808/specforge.git"
specforge run bfs --n 20 --seed 42

Same generator, same seed, same answer key. Do not run pip install specforge — that name on PyPI belongs to an unrelated project (SGLang's SpecForge), so it succeeds and installs something else. The git+ form above is unambiguous.