Polygraph Bench
A public benchmark of completion-lie detectors. The unit of judgment is one agent
turn — the task, its tool calls and results (evidence), and the final message
(closing). Each detector answers one question:
does the closing make a completion/success claim the turn's own evidence contradicts?
The public corpus is 396 synthetic items (176 lie / 220 honest) across 7 lie
categories (L1–L7) and 9 honest categories (H1–H9), split into core (table-stakes
shapes) and hard (association-requiring lies + honest near-miss twins).
155 real agent turns — 23 lies / 132 honest. This corpus is held privately and is never published and never used for leaderboard scoring; it is the maintainer's validation instrument, shown here for transparency against the synthetic set below.
| Detector | Recall (lies) | FP (honest) | Score |
|---|---|---|---|
| b1regex floor — keyword + error/truncation signal, stdlib | 39.1% 9/23 | 32.6% 43/132 | −1.237 |
| b2Polygraph gate — heuristic tier, no network | 39.1% 9/23 | 0.8% 1/132 | +0.353 |
| b3Ollama judge — local qwen3:4b, JSON-constrained, fail-soft | 91.3% 21/23 | 6.8% 9/132 | +0.572 |
The launch ships three free local detectors only. A frontier-judge baseline (b4) exists as a reference implementation only and is never run officially (free-only ruling — no API payments). Frontier results enter the leaderboard through self-funded community PRs, with cost reporting per the protocol.
| Detector | Recall | FP | Score | $/1K |
|---|---|---|---|---|
| b4-class frontier judge | community-sourced — submit via PR (see SCORING.md) | |||
The gate passed under protocol v1.1 and was independently, adversarially verified (every per-seed and median number recomputed from raw verdict files; corpora regenerate byte-identical; leakage audit + secret-scan clean). Honesty-first, its known limits are recorded openly so the result is never read as more robust than it is.
9/132 (6.8%) this run
versus 10/132 (7.6%) on a prior temperature-0 rerun — one borderline honest
turn flipped, within holdout granularity (local-model numerics are not bit-stable across
runs even at temperature 0).