Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Každá kontrola, kterou musí Rust executable projít, je jeden skript, scripts/rust-check, a CI tento skript spouští při každé změně, která může zasáhnout crate

Cokoli musí spustitelný soubor v Rustu splnit před mergem, je zapsáno jednou jako spustitelný skript a CI spouští stejný seznam ve stejném pořadí. Člověk spustí just rust-check a uvidí 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í, a tedy zde chyba), cargo test --no-fail-fast se sadami unit, integračních a testů příkladů v dokumentaci, 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 selhávající pod commitovanou hranicí. CI spouští o jednu kontrolu více, majordomus bench --profile ci --check --no-write, kontrolu měření výkonu proti základní hodnotě commitované pro její vlastní profil; základní hodnota je pro platformu a profil, takže skript lokálně nemá co kontrolovat. Nic z toho seznamu není doporučení a nic se na branchi nepřeskakuje.

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

Formát, lint s varováními jako chybami (veřejná položka bez dokumentace je jedním z nich), sady testů s příklady v dokumentaci, rustdoc s odmítnutými varováními, sestavení měření výkonu, vlastní validace registru, potvrzené projekce v synchronizaci, úplné pokrytí měření výkonu a pokrytí řádků nad potvrzeným minimem; --ci přidá kontrolu měření výkonu proti základní hodnotě platformy a pokrytí ponechá vlastní úloze, --integration spustí samotné kontroly registru pro změnu mimo crate. Úloha rust ve workflow spouští samotný skript v režimu, který zvolil plán, takže neexistuje druhý seznam, který by se rozešel v pořadí; případ čte skript, workflow a justfile a selže, když se neshodují; je-li přítomen toolchain, spouští i příklady v dokumentaci a sestavuje měření výkonu.

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 rust

Co 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.

Detail vykreslený z docs/claims/rust-evidence-gates.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Každá kontrola, kterou musí Rust executable projít, je jeden skript, scripts/rust-check, a CI tento skript spouští při každé změně, která může zasáhnout crate

    Vytvořeno na Benchmarks, CI.

  2. 2 · kanonické tvrzení

    rust-evidence-gatesdeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v .ai/repo/rules/project/rust-cli-evidence.v1.md

  3. 3 · implementace

    scripts/rust-check

  4. 4 · test a scénáře

    Test: test/cases/77_rust_evidence.sh

    Provedeno v Prove the tool is fast, not assume it, and refuse a regression.

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 77_rust_evidence

Související tvrzení stejná implementace

Prohledává názvy a popisy všech stránek, které tento web publikuje.