Live demo

11 test steps in. 3 out.

Twenty runs of an unchanged suite. Three steps are genuinely nondeterministic and eight are stable — but at twenty runs, "has not flaked yet" and "will not flake" are not the same claim.

Pass rate today
61%
Replayed pinned
100%

Expected 1.6 CI attempts per green build, which is why the team added retries and stopped reading failures.

Per step, with the honest upper bound at this sample size
StepDistinct outputsFlake rate95% upper
load fixtures10.0%16.1%
plan: choose tool310.0%30.1%
call search10.0%16.1%
rank results325.0%46.9%
call order lookup10.0%16.1%
compose reply310.0%30.1%
guardrail check10.0%16.1%
persist transcript10.0%16.1%
emit metrics10.0%16.1%
close ticket10.0%16.1%
assert final state10.0%16.1%

Note the upper bounds on the eight “stable” steps. None of them is zero, because twenty clean runs cannot prove a step never flakes. That gap is the difference between a measurement and a hope, and it is why the suite gets worse the more steps you add.