RetryBench
Evaluate whether an LLM's first recovery decision after a tool timeout is permitted, and whether replaying that decision achieves the intended state.
Install and run
Python 3.11+ for model inference:
pip install "retrybench[inspect]"
retrybench run --model mockllm/retrybench-defer
The local mock runs all 240 cases without credentials or inference charges. It always defers: unsupported retries 0/240, permitted progress 0/80, and unresolved outcomes 480/480. These are synthetic fixture results.
For a real model, set its provider's API credentials and pass a provider/model identifier supported by Inspect AI:
retrybench run --model "$MODEL_ID"
The inspect extra includes the OpenAI and Anthropic clients. Other providers
may require their own SDK; follow Inspect's provider setup instructions.
This makes up to 240 billable inference calls with a 256-token output limit per
call and no runner retries. --dry-run shows the call count without inference;
--limit 4 runs a diagnostic subset and reports the remaining cases as missing.
Temperature and reasoning effort use provider defaults unless supplied.
Each run prints its result directory and writes predictions, per-case scores,
and a report. Existing runs are never overwritten. Partial runs exit with code 2.
Use any inference framework
The core scorer supports Python 3.9+ with no third-party runtime dependencies:
pip install retrybench
retrybench export --output cases.jsonl
# Generate one prediction per visible case using your model or framework.
retrybench score --predictions predictions.jsonl --model my-model
Predictions are JSONL records such as:
{"case_id":"<exact exported case_id>","action":"unresolved","arguments":{"idempotency_key":null}}
Use retrybench run without --model for the deterministic policy baselines.
The earlier retrybench eval --model ... command remains supported.
Data and interpretation
retry-permission-v1 freezes 240 visible decisions and 480 correlated replayed
outcomes across four reused software tasks. Reports separate unsupported retry
permission, permitted progress, protocol validity, duplicates, omissions, and
unresolved recovery, with exact denominators and missing/invalid accounting.
The labeled suite is public and is not a held-out generalization test. Each model
receives only visible prompts and output schemas; keep scoring labels outside
inference. No real side-effecting tool is executed.
The wheel includes the complete, hash-checked suite. A clone, dataset download, and the paper's internal validation history are unnecessary for evaluation. The separate research archive supports reanalysis of historical paper studies.
Source · Evaluation guide · Benchmark card · Citation
Code and suite are distributed under PolyForm Noncommercial 1.0.0.
Version archive DOI: 10.5281/zenodo.24044371.
Metadata
Release files for retrybench 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| retrybench-0.3.0.tar.gz | 99.4 kB | Without provenance | Details for retrybench-0.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| retrybench-0.3.0-py3-none-any.whl | Python 3 | none | any | Details for retrybench-0.3.0-py3-none-any.whl |
Total release size: 211.6 kB
Release files / retrybench-0.3.0.tar.gz
| Download URL | retrybench-0.3.0.tar.gz |
|---|---|
| Size | 99.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d60bd8ba860643db461fc4b6663eacbda69426743d3adc9444bca8396f392acc
|
|
BLAKE2b-256 checksum How to use checksums |
5c778729b1fe0deb4fa6665f31a2d8f13bf7300de73b8edc02fbdef4383cb1df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.9
|
Release files / retrybench-0.3.0-py3-none-any.whl
| Download URL | retrybench-0.3.0-py3-none-any.whl |
|---|---|
| Size | 112.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
407825b0e1f39f5f5a3fd3a5c3b86751f8b2fe144385c00c963bd221a9381912
|
|
BLAKE2b-256 checksum How to use checksums |
6340f49393e41d631700ef79b66d3c6aa02d17c864528c82a18aa8f46915de3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.9
|
Security for retrybench 0.3.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.