Repository navigation
v0.1.0 — first release
First release of the Rust port. A frozen measurement harness: you point a coding agent at your Rust repository, and this decides whether what it did was actually faster — freezing the tests, measuring the candidate against a pinned baseline with interleaved rounds, and returning KEEP or DISCARD.
cargo install --locked autor3search-rust
What it does
init finds your criterion benchmarks and writes a config plus a program.md for the agent. baseline --tag <tag> freezes every in-scope tests/** and benches/** file, hashes the inline tests and doctests it cannot restore, and pins a detached worktree. eval then runs fourteen ordered gates against each candidate commit — scope, build, the frozen tests, then interleaved A/B benchmark rounds with the sides swapped each round to cancel first-slot bias — and scores the result with a Mann-Whitney U test and a Bonferroni-corrected alpha. report gives you the cumulative picture, profile shows where the time actually goes, doctor tells you whether the machine is fit to measure at all.
Measured, not illustrated
Every number in the README is from a real run. Against the bundled demo crate: count_words 44,702 ns → 38,636 ns, −13.57 %, p ≈ 1.1 × 10⁻⁵, KEEP — written up in the case study.
Against a third-party crate, unicode-segmentation v1.13.3, driven end to end by an agent following program.md: four experiments, two KEEPs and two honest DISCARDs, the best of them −90.53 % on one benchmark, 2.33× cumulative. The frozen-test guarantee was attacked on purpose in that run — a frozen test's assertions weakened and the code it guards broken in the same commit — and it held. The full report, failed hypotheses included, is in the third-party validation report.
That run found three real defects in this tool, all fixed before this release: init could not see criterion 0.3.x/0.4.x benchmarks, profile crashed against current samply, and the doc-comment gate fired on plain prose.
What it does not do
Stated in the README rather than left to be discovered: no allocation metrics, because criterion measures time only. Inline #[cfg(test)] tests and doctests are refused rather than restored, because restoring the file would erase the agent's work with them. unsafe is ungated, so get_unchecked will pass every test and buy its speed with undefined behaviour — review kept diffs yourself. Freeze/restore covers only the workspace root's tests/** and benches/**. And one third-party crate is one, not three.
Platforms
Linux, macOS and Windows, with CI running the full suite on all three.
Requires Rust 1.85 or later.