Co to znamená
Práce, která roste s repozitářem, se měří, nepředpokládá se: podmnožina YAML a parsování front matter jednoho objektu, jedna shoda glob, index sestavený průchodem souborového systému, registr složený nad ním, dokument OpenAPI, jeden resources/list MCP a jedno volání schopnosti (benches/projections.rs); router, bridge a sdílený server přes skutečný socket (benches/shared.rs). Každé měření je cíl criterion deklarovaný v Cargo.toml bez výchozího harnessu a CI je sestavuje při každém pushi, takže horká cesta nemůže tiše ztratit své měření. Odděleně každá spustitelná schopnost nese politiku měření: required s případy, které poskytuje její vstupní typ, nebo waived s typovaným důvodem; zdroj je prominut jako not_executable.
Princip
Záznamy [[bench]] v apps/majordomus-cli/Cargo.toml jmenují každý soubor pod benches/ s harness = false; cargo bench --no-run v scripts/rust-check a v úloze rust je zkompiluje. Makro capability! bere případy měření výkonu z implementace BenchmarkCases vstupního typu, takže spustitelný soubor bez případů se nezkompiluje; registr počítá benchmark_required a benchmark_waived a capabilities list --format json nese politiku každé schopnosti. test/cases/77_rust_evidence.sh kontroluje záznamy [[bench]] proti souborům, že každá cesta, kterou pravidlo jmenuje, má měření výkonu, sestaví měření výkonu, když je k dispozici toolchain, a přečte politiku každého spustitelného souboru zpět přes sestavený spustitelný soubor.
Jak to vidět
just bench # every criterion target; `just bench shared` runs one
just bench projections
apps/majordomus-cli/target/debug/majordomus capabilities list --format json | jq '.capabilities[] | select(.kind != "resource") | {id, benchmark}'
apps/majordomus-cli/target/debug/majordomus capabilities list --format json | jq '.summary'Co nepokrývá
Čísla se hlásí, netvrdí se: CI měření výkonu buildí a nespouští je a žádný limit latence není slíben, dokud není změřen na hardwaru samotné CI. Deklarované případy spustitelných souborů dnes běží jako testy; načasovat každou schopnost přímo a přes každý transport se základní hodnotou a kontrolou je projekce měření výkonu, což bude samostatné tvrzení, až přistane. Měření příkazů shellového nástroje je bench v shellovém nástroji, ne v tomto crate.
Proč existuje
Operátor požadoval, aby měření výkonu existovala a bylo vynucováno. Měření, které nikdo nesestavuje, shnije spolu s API, které měřilo; to, které CI kompiluje při každém pushi, je aspoň vždy věrné kódu, a to, které sada umí jmenovat, nelze při refaktoru zahodit. Pravidlo project.rust-cli-evidence jmenuje cesty, které se musí měřit; seznam drží toto tvrzení a případ.