Skip to main content

honestboard

Honest uncertainty for agent leaderboards. Give it the per-task results of every system on a benchmark and it tells you:

  • Is this SOTA claim real? An exact paired test of a new record against the record it replaced.
  • What can this benchmark resolve? The smallest difference it detects with 80% power, and how many tasks a one-point gap would need.
  • How sure is the ranking? Rank intervals and the probability each system is the best.
  • Who could still be the best? A 95% confidence set of the best system.
  • What is the winner's score, corrected? The top score on a leaderboard is biased upward because it was picked for being highest. honestboard removes most of that selection bias.
  • How many record claims survive? An audit of every record step in a leaderboard's history, with a Holm correction.
  • Who is really on the cost-accuracy frontier? Given a cost per system (or per task), pareto_frontier gives the observed Pareto frontier, the systems that cannot be excluded from it at a stated level (a multiple-comparisons-with-the-best construction with each system's rivals restricted to the systems that cost no more and the margin taken jointly, so the set contains the whole true frontier with probability about 1 - alpha; per-system variants are returned beside it; tie_robust=True keeps the guarantee when true mean costs tie, at the price of a larger set), each system's bootstrap frontier stability (undominated_frequency, descriptive and uncalibrated), and the cheapest unresolved competitor of the best (cheapest_plausible_best: the cheapest system that cannot be excluded as the most accurate; not an equivalence claim). frontier_band gives a simultaneous confidence band for the frontier curve itself (the best accuracy available at each cost); frontier_curse gives the selection-adjusted accuracy of every system on the observed frontier; exact_frontier_set is a finite-sample (Bonferroni, exact paired tests) version of the set, and entrant_pvalues / entrant_pvalues_exact certify a new frontier entrant against its whole cheaper pool (intersection-union of selective p-values conditional on the frontier event: polyhedral under the normal approximation, or exact by randomization over outcome swaps that keep the entrant on the frontier).
  • Certify records as they arrive. certify_chain runs a sequential rule along the submission history: the exact sign-test p-value conditional on the record event (with a per-date factor for submissions that share a date), at levels set by alpha-spending or by the online fallback rule (family-wise error over the whole chain, any number of records, no independence assumption), by tenure-indexed spending on the certified baseline, or by LORD++ (online FDR; certified records earn back budget), against the leaderboard holder or against the last certified record.

It needs per-task outcomes (which tasks each system solved), not just the headline score. A checkout of the SWE-bench experiments repository loads with one call (from_swebench_experiments); any other leaderboard works once you write a board file (format below).

Quick start

from honestboard import Board

b = Board.from_json("swebench_verified.json")   # board files may carry a "clusters" map (task -> repository)

b.compare("20250928_trae_doubao_seed_code", "20251205_sonar-foundation-agent_claude-opus-4-5")
b.rank_summary(top=10)              # 95% rank intervals and top-rank frequency
b.confidence_set_best()             # systems that cannot be ruled out as best
b.record_audit()                    # every record step: selective exact test (with the per-date factor), Holm-adjusted
b.record_lags()                     # how far back a record is distinguishable
from honestboard import certify_chain
certify_chain(b, rule="lord", baseline="certified")   # sequential certification in date order
b.resolution()                      # minimum detectable difference, tasks needed for 1 and 2 points
b.winner_adjusted()                 # selection-corrected score for the leader (iterated bootstrap)
b.check_claim("some-system-name")   # the main facts about one system in one call
from honestboard import pareto_frontier, frontier_curse
pareto_frontier(b, costs)           # costs: {system: cost per task} or {system: array of per-task costs}
frontier_curse(b, costs)            # selection-adjusted accuracy for the systems on the observed frontier

Command line:

python -m honestboard report swebench_verified.json
python -m honestboard check swebench_verified.json 20251205_sonar-foundation-agent_claude-opus-4-5
python -m honestboard pr-check experiments/evaluation/verified experiments/evaluation/verified/NEW_SUBMISSION --tasks verified_ids.json
python -m honestboard frontier board.json costs.json --curse   # costs.json: {system: run total} or {system: {task: cost}}

pr-check reads a checkout of a leaderboard repository and prints a Markdown report on one submission (rank interval, margin over the current record, a paired test of the claim, what the board can resolve). examples/leaderboard-pr-check.yml shows how a leaderboard repository can post that report on every pull request.

Board file (JSON): {"tasks": [...ids...], "systems": [{"name": "...", "date": "20251205", "resolved": [...ids...]}], "clusters": {task: group}}. For repeated trials use "rates": {task: share_passed} instead of "resolved". A CSV with header name,date,<task ids> and 0/1 or rate cells also works. clusters is optional; cluster=True needs it and raises an error without it.

Methods

Question Method
Is B better than A? Exact McNemar test (0/1 outcomes) or paired sign-flip permutation test (rates): one-sided, two-sided and the selective p-value p_selective (the one-sided tail conditional on B having scored higher, the record test)
Rank uncertainty Task bootstrap; tied systems share a rank; top-rank frequency counts ties fractionally. cluster=True resamples repositories instead of tasks
Confidence set of the best Paired-bootstrap multiple comparisons with the best over all systems (max studentised difference); coverage is approximate
Record audit Selective exact paired test of each new record against the previous record (sided="selective", default; "two" and "one" as sensitivities), Holm-adjusted over the steps. tie_order handles same-date submissions best-first (default, fewest steps) or worst-first; under best-first the challenger is the best of its date, so its p-value is multiplied by the size of that date group (date_correction=True, default), which the guarantees need
Resolution Normal approximation from the paired standard deviation between neighbouring top systems; checked by simulation
Winner's score Iterated plug-in bootstrap bias correction (default). The exact conditional (polyhedral) method is winner_conditional; two published baselines are winner_hybrid (the hybrid of Andrews, Kitagawa and McCloskey, 2024: conditional, with the truncation set bounded by a simultaneous projection interval, so never unbounded) and winner_zoom (the zoom interval of Zrnic and Fithian, 2025: simultaneous over the plausible winners only; corrects the interval, not the estimate)
Cost-accuracy frontier pareto_frontier: keep a system unless a cheaper-or-equal system beats it by more than a simultaneous bootstrap margin (MCB with the rival set restricted to cheaper systems and a joint margin); per-task costs are resampled with the outcomes so the rival set varies. The set contains the whole true frontier with probability about 1 - alpha (proved for fixed costs); clusters= resamples task groups instead of tasks. frontier_curse: conditional and iterated-bootstrap corrections with the pool of cheaper-or-equal systems in place of the whole board
Record chains over time certify_chain: a selective p-value given the record event, at levels from an alpha-spending series, the online fallback rule (rule="fallback": a certified record passes its level to the next one) or, for baseline="certified" (the leader moves only on certification), the tenure-indexed rule (rule="tenure"); all three with family-wise error control over the chain proved under the task-wise null, any dependence. LORD++ (online FDR) is calibrated by simulation. See the paper

Limits you should know about

  • It measures task-sampling luck only. Developers tuning on a public benchmark and run-to-run randomness of agents are outside the model, so the real overstatement of a winner is larger than the correction removes.
  • Tasks are treated as independent draws. Tasks from the same repository are correlated; cluster=True is a rough sensitivity check (with few clusters it is not reliable and the paired tests still ignore clusters).
  • The record test conditions on the record event (the selective p-value); it is exact for a fixed holder under the task-wise null and conservative when the previous record is a running maximum (under a global null it rejects well under 5% of record steps). A record that does not pass is not necessarily worse. It cannot be told apart from the previous record with these tasks. The task-level test treats tasks as independent; where tasks share a repository, cluster=True is the cautious count.
  • The winner correction removes most of the bias in simulations but not all of it, much less under a shift to other repositories, and its interval is approximate (below nominal at small sample sizes).
  • The conditional method is exact under normality but gives an unbounded answer when the winner ties or nearly ties the runner-up.
  • The record chain depends on how submissions with the same date are ordered.

Install and test

pip install honestboard   # from PyPI (numpy and scipy only); or, from a checkout of this folder:
pip install -e .
python -m pytest tests

MIT licensed. If you use honestboard, please cite the paper (see CITATION.cff).

Metadata

Release files for honestboard 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for honestboard 0.5.1
File Size Uploaded
honestboard-0.5.1.tar.gz 55.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for honestboard 0.5.1
File Interpreter ABI Platform
honestboard-0.5.1-py3-none-any.whl Python 3 none any Details

Total release size: 96.3 kB

Release files / honestboard-0.5.1.tar.gz

Download URL honestboard-0.5.1.tar.gz
Size 55.2 kB
Tags Source
SHA-256 checksum
How to use checksums
68653a7d4ee38f392c7816b9ae72065f95221ab51f5573843554fd9e11543e84
BLAKE2b-256 checksum
How to use checksums
64cdfe52675bd5121709c84459e7beddb814acf42fc67462c180e131369e73e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / honestboard-0.5.1-py3-none-any.whl

Download URL honestboard-0.5.1-py3-none-any.whl
Size 41.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6f5897a834aaa9e68b54a8c91d18f72d4721aeb413e861c7bbe211629046d77a
BLAKE2b-256 checksum
How to use checksums
f936ce8d02947f656df8f8a21f204a0d24bc505c575f5d82060cdea721cbaa56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.1

2 release files

0.6.0

2 release files

This release

0.5.1 This release

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page