Cycle: F (cycle 1 of 3 clean) Agent: fresh, hostile, did not build, did not run A-E Result: CLEAN
Hostile independent audit per Round 79 Phase 2 protocol. Re-verify eval-E's
config auto-discovery fix and probe README feature claims against actual
binary behavior using the built target/release/benchdiff.exe.
- Read every source file:
main.rs,cli.rs,config.rs,baseline.rs,compare.rs,error.rs,lib.rs,parsers/mod.rs,report/mod.rs,report/text.rs,report/markdown.rs,report/json.rs. - Re-verified eval-E's
Config::load_or_defaultwith unit test + live binary probe. - Verified
--configpath overrides auto-discovered./benchdiff.toml. - Verified a malformed auto-discovered config fails loudly (exit 3, full TOML parse diagnostic, not swallowed).
- Verified
benchdiff listreadsbaseline_dirfrom the auto-discovered config (not hardcoded). - Verified
benchdiff initprints a valid, round-trippable template. - Verified Cargo.toml version (1.0.0) matches README badge, CHANGELOG,
and
--versionoutput. - Ran each documented CLI example (save/compare/list/init/summary/inspect) against fresh CSV fixtures.
- Ran
cargo test— 180 passed, 0 failed (9 test binaries). - Cross-module consistency: Error variants ↔
classify_exit_codeexit codes; text/markdown/json renderers use sharedfmt_ns/fmt_pct/fmt_dwith saturation sentinels.
- Unit test
load_or_default_auto_discovers_cwdpasses. - Live: wrote
C:\...\benchdiff-rs\benchdiff.tomlwithbaseline_dir = "cwd_baselines"and ranbenchdiff list— output wasno baselines in cwd_baselines, proving auto-discovery took effect. - Live: with CWD config in place,
benchdiff --config /c/tmp/other.toml list(whereother.tomlhadbaseline_dir = "other_baselines") returnedno baselines in other_baselines—--configwins. - Live: wrote
benchdiff.tomlwithalpha = not_a_numberand ranbenchdiff list— exit 3, full TOML parse error surfaced. Not silenced.
benchdiff --version → benchdiff 1.0.0
benchdiff init → valid TOML template
benchdiff save bench1.csv --label v1 → bdb\v1.json (via cwd config)
benchdiff list → v1
benchdiff compare bench2.csv --against v1 --output markdown
→ 8-column GFM table, 1 regression (parse_small +50.00%,
p <1e-4, d=35.36), exit 1
benchdiff compare ... --output json
→ valid JSON, full p_value precision (3.278258399375255e-14),
no null numerics, snake_case field names
benchdiff summary bench2.csv --against v1 --top 2
→ UTF8 box table, expected rows
benchdiff inspect bench1.csv
→ "source: csv / benchmarks: 2 / ..."
Verdictserializes to JSON as PascalCase ("Regression") while the library's ownVerdict::as_str()returns snake_case ("regression"). Minor consistency nit, not README-promised. Not fixing in F (out of hostile-audit scope).- Markdown table's first header column is an empty cell (emoji slot has no label). Cosmetic; the table is still valid GFM.
--config /nonexistent.tomlsilently falls back to the default config (documented in source as deliberate for prior-behavior compatibility). Mildly surprising but intentional.
First probe showed duplicated TOML error in the binary output, which would
have invalidated eval-C's fix. Root cause: target/release/benchdiff.exe
was stale — eval-C's source fix was in place but the release binary had
not been rebuilt since. cargo build --release followed by re-running
the probe gave the expected single-copy error output. Not a current bug;
note added here so future cycles remember to force-rebuild before
binary-level probes.
cargo test — 180 passed, 0 failed, 0 ignored.
None. Clean audit.
CLEAN — cycle 1 of 3.