Co to znamená
Cokoli musí spustitelný soubor v Rustu splnit před sloučením, je zapsáno jednou, jako spustitelný skript, a CI spouští tentýž seznam ve stejném pořadí. Člověk spustí just rust-check a vidí přesně to, co uvidí pull request: cargo fmt --check, cargo clippy --all-targets --all-features -- -D warnings (veřejná položka bez dokumentace je varování, takže zde je chybou), cargo test --no-fail-fast se sadami unit, integračních a doc-example testů, cargo doc --no-deps s odmítnutými varováními, cargo bench --no-run, majordomus capabilities validate, majordomus generate --check, majordomus bench coverage --check a cargo llvm-cov, které selhává pod commitnutou mezí. CI spouští ještě jednu kontrolu, majordomus bench --profile ci --check --no-write, kontrolu měření výkonu proti baseline commitnutému pro vlastní profil; baseline je na platformu a profil, takže skript lokálně nemá co kontrolovat. Nic z toho seznamu není poradní a nic se na větvi nepřeskakuje.
Princip
scripts/rust-check je seznam, jedno step na kontrolu, v pořadí CI. Job rust v .github/workflows/validate.yml spouští samotný skript, --ci když plán říká, že crate může být dotčen (každá kontrola kromě pokrytí, plus kontrola měření výkonu), nebo --integration když se změnila jen data, která registr čte (sestavený spustitelný soubor, capabilities validate, generate --check, bench coverage --check), a žádá od něj spustitelný soubor jako artefakt; job coverage spouští kontrolu pokrytí se stejným souborem prahů; job bench spouští kontrolu měření výkonu na macOS, kde je commitnutá baseline; job macos tam spouští sady crate. Recept test v justfile závisí na rust-check, takže celá sada repozitáře (just test) zahrnuje kontroly crate. test/cases/77_rust_evidence.sh čte všechny tři, skript, workflow i justfile, a selže, když se neshodnou na kontrole nebo jejím pořadí, když kořeny crate ztratí #![warn(missing_docs)], nebo když pravidlo project.rust-cli-evidence přestane být aktivní a blokující; je-li přítomen toolchain, také spouští příklady v dokumentaci, sestavuje měření výkonu a ptá se sestaveného spustitelného souboru na politiku měření výkonu každé spustitelné schopnosti.
Jak to vidět
just rust-check # every gate, in CI's order; stops at the first failure
just test-shell 77_rust_evidence # the wiring agrees, the doc examples pass, the benchmarks build
grep -oE 'step "[^"]+"' scripts/rust-check
awk '/^ rust:/,/^ coverage:/' .github/workflows/validate.yml | grep -- 'rust-check'
scripts/ci-plan --full x --format text | grep rustCo nepokrývá
Případ dokazuje, že kontroly jsou zapojené, ne že na stroji, kde běží, projdou: lintery, celá sada a měření pokrytí jsou to, co spouští CI a co spouští just rust-check, a případ spouští jen dvě kontroly dost levné na opakování, příklady v dokumentaci a build měření výkonu. Nespouští měření ani netvrdí latenci; to je rust-hot-path-benchmarks. Nic zde lokálně nebrání commitu: pre-commit hook spouští majordomus doctor, ne cargo.
Proč existuje
Operátor požádal, aby testy, doctesty, měření výkonu a pokrytí byly kontrolami do budoucna, vynucovanými v CI a v kořenovém tooling, a ne aspiracemi v README. Kontrola napsaná jen v souboru workflow je jednu úpravu od zmizení bez povšimnutí; seznam, který sada zpětně čte, je seznam, jehož změnu revizor vidí. Pravidlo project.rust-cli-evidence požadavek vyslovuje; toto tvrzení a test/cases/77_rust_evidence.sh z něj činí fakt stromu.