Problem
scripts/clean-benchmarks.js treats total and partial failure differently:
- If every run fails, it emits the DNF sentinel.
- If only some runs fail, it drops the failed runs and recomputes mean, median, stddev, min, and max from the survivors.
That makes a 1-of-3 success look like a normal result. Because the 300-second timeout preferentially removes slow runs, the published value is biased downward, and a single survivor is reported with stddev: 0. The raw exit codes disappear after processing and are not retained in gh-pages history.
Issue #11 introduced failure filtering, but did not preserve partial-failure confidence. PR #145 alerts on raw failures for the vlt registry path only; it does not correct the processed data shown by the site or cover every variation and command.
Impact
This is a data-integrity issue affecting every chart, variation, and package manager. Flaky or timing-out commands can be published as deceptively fast, stable results.
Acceptance criteria
Source
Performance investigation: item 12 — partial-failure survivorship bias
Problem
scripts/clean-benchmarks.jstreats total and partial failure differently:That makes a 1-of-3 success look like a normal result. Because the 300-second timeout preferentially removes slow runs, the published value is biased downward, and a single survivor is reported with
stddev: 0. The raw exit codes disappear after processing and are not retained in gh-pages history.Issue #11 introduced failure filtering, but did not preserve partial-failure confidence. PR #145 alerts on raw failures for the vlt registry path only; it does not correct the processed data shown by the site or cover every variation and command.
Impact
This is a data-integrity issue affecting every chart, variation, and package manager. Flaky or timing-out commands can be published as deceptively fast, stable results.
Acceptance criteria
dropped_runsfield)../bench process.Source
Performance investigation: item 12 — partial-failure survivorship bias