Your eval says 8 / 10 passed. That single number cannot tell you whether the prompt is broken or merely nondeterministic — and those need opposite fixes.
Get it on GitHub — MIT Have us do it — $150Run an eval once and a failure is ambiguous. It might be a prompt that fails every time — a logic bug. Or one that works 85% of the time and happened to fail the once you looked — temperature, prompt sensitivity, retrieval nondeterminism.
Most tools run each case once. flakelens runs it N times and splits the two apart.
| case | pass rate | 95% CI | verdict |
|---|---|---|---|
refund_json | 0/10 | [0%, 28%] | broken — fix the prompt |
cite_source | 7/10 | [40%, 89%] | flaky — lower temperature |
refuses_pii | 10/10 | [72%, 100%] | stable, but see below |
If a case passes 10/10, the tempting read is “100% reliable.” It isn’t. The usual normal-approximation interval agrees with that misreading — it collapses to zero width at 0/n and n/n, precisely where you’re asking the question.
flakelens uses the Wilson score interval, which doesn’t collapse. At 10/10 it reports a true pass rate of ≥ 72%. To honestly claim 95%+ you need 73 consecutive passes. The tool says so rather than letting you ship on ten green checkmarks.
pip install flakelens
flakelens cases.json --provider mymod:call --runs 10
Zero dependencies, Python 3.10+, 24 tests. Exits non-zero on broken cases so it drops straight into CI; --fail-on-flaky gates on flakiness too.
If you'd rather not write the cases: we take one LLM feature, build 25 cases from your real inputs, run the audit, and hand back the harness plus a findings note — each reproducible failure named, each flaky one with its interval.