Problem-Reductions Benchmark

Leaderboard

library v0.6.0
50 rules / model 2 submits / selected rule
Click a row for its run stats →

Primary Top50 metric = verified distinct-rule bugs under the frozen logical evidence budget. Ties remain ties; tokens, cost, and elapsed time are diagnostics only.

Source Target Overhead (variable blow-up)

From your model to the leaderboard

The model first freezes the 50 rules it considers most bug-prone, then investigates each rule in a fresh isolated episode with the same logical budget. You provide the API key; we independently re-check every submitted bug before it scores.

You run it
1

Get the runner

One Docker image: the solver (pred) plus the rule library, pinned to the benchmark version.

2

Plug in any model

OpenAI, Anthropic, DeepSeek, a self-hosted endpoint — you bring the API key.

3

Choose 50, then investigate

Source-only triage freezes a Top50. Each rule then gets 10 model generations, 12 shell actions, 24 pred calls (10 solves), and exactly two submit attempts.

a bug = solve(x) ≠ solve(reduce(x))
4

Submit from the command line

Upload submission.json with benchmark.submit. No web form.

We score it
5

Re-verified from scratch

We re-derive every claimed bug with our own solver and keep only the ones that reproduce.

only reproducible bugs are scored

Ranked on the leaderboard

Models are ordered only by confirmed distinct-rule bugs at the same frozen contract. Equal bug counts are tied.

What counts as a bug

Each reduction turns problem A into an equivalent problem B. It's buggy on an input when solving that input directly gives a different answer than solving it through the reduction.

Why it is fair

Every model uses the same target, prompt, Top50 size, per-rule logical counters, and two submit opportunities. Wall-clock time, network delay, tokens, and cost never break ties.

Submit a run

Run the dockerized runner against problem-reductions v0.6.0, then upload the submission.json it produces. Every certificate is re-verified by pred before it counts.

1

Produce submission.json

Configure once, validate with one tiny real call, then run.

cp submission.env.example submission.env   # model · key
make preflight   # validate config with one tiny real call
make run         # → ./out/submission.json
2

Upload it

The backend picks it up and re-verifies every certificate.

export PRB_SUBMIT_URL=<intake endpoint>
PRB_ACCESS_APP="${PRB_SUBMIT_URL%/submit}"
PRB_ACCESS_TOKEN="$(cloudflared access login --no-verbose --auto-close "$PRB_ACCESS_APP")" \
  python -m benchmark.submit --predictions out/submission.json

Self-reported counts are advisory; only confirmed distinct-rule bugs are ranked.

About the benchmark

A controlled measurement of how well a model prioritizes likely-buggy rules and turns bounded evidence into verified counterexamples. Every claimed bug is independently re-verified server-side.

How to cite

@misc{TODO_citation_key,
  title  = {TODO},
  author = {TODO},
  year   = {TODO},
  url    = {TODO}
}