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.

Základ pravidel je vendorován do repozitáře s manifestem jmenujícím každý soubor a jeho hash a ruční úprava se odhalí a odmítne

Pravidla, která Majordomus dodává, se za běhu nečtou ze spustitelného souboru. init zkopíruje balíček z share/standard/majordomus/ do .ai/repo/rules/vendor/majordomus/, včetně manifestu, a od té chvíle platí kopie repozitáře. Manifest jmenuje každý soubor pravidla s jeho identitou a hashem obsahu, takže úprava pod vendor/, chybějící vyjmenovaný soubor nebo zbloudilý soubor vedle manifestu se zjistí jménem. Novější spustitelný soubor ohlásí, že dodává jiný balíček, a nikdy jej neaplikuje; baseline se mění jen na požádání příkazem majordomus rules vendor update.

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

rules vendor status ohlásí upravený, chybějící nebo cizí soubor; rules vendor update nad ním odmítne pokračovat, dokud se nepoužije --force, a nikdy se nedotkne rules/project/. Novější spustitelný soubor ohlásí novější balíček a neaplikuje jej.

Co to znamená

Pravidla, která Majordomus dodává, se za běhu nečtou ze spustitelného souboru. init zkopíruje balíček z share/standard/majordomus/ do .ai/repo/rules/vendor/majordomus/, včetně manifestu, a od té chvíle platí kopie repozitáře. Manifest jmenuje každý soubor pravidla s jeho identitou a hashem obsahu, takže úprava pod vendor/, chybějící uvedený soubor nebo zbloudilý soubor vedle manifestu se odhalí jménem. Novější spustitelný soubor ohlásí, že dodává jiný balíček, a nikdy jej neuplatní; baseline se změní, jen když se o to požádá majordomus rules vendor update.

Princip

mj_rules_manifest_check v lib/rules.sh porovnává hash a identitu každého uvedeného souboru s manifestem a vypisuje, co je přítomno, ale neuvedeno. rules vendor status vypíše vendorované a dodávané revize, integritu vendorované kopie (exit 10 při jakémkoli problému) a zda jsou oba balíky stejné (exit 11, když spustitelný soubor dodává jiný). rules vendor update odmítne (15) vendorovanou kopii, která selže proti manifestu, ledaže --force, připraví nový balík vedle cíle a atomicky jej vymění, zapíše událost knihy rules.vendored a nikdy se nedotkne rules/project/. update, doctor a check nezapisují pod vendor/ vůbec.

Jak to vidět

echo "a sentence added by hand" >> .ai/repo/rules/vendor/majordomus/rules/scope-integrity.v1.md
majordomus rules vendor status   # integrity: rules/scope-integrity.v1.md differs from its manifest hash (hand-edited?)   exit 10
majordomus rules vendor update   # refused: the vendored package was hand-edited …; review with: majordomus rules vendor diff, then --force   exit 15
majordomus rules vendor update --force
majordomus rules vendor status   # state: current

Co nepokrývá

Manifest dokazuje, že vendorované soubory jsou ty, které balíček dodal; neříká nic o tom, zda je balíček pro repozitář správná verze, což je rozhodnutí, které rules vendor diff informuje a které činí člověk. Projektové pravidlo pod rules/project/ je vlastní repozitáři a nepatří pod žádný manifest.

Proč existuje

Baseline, který žije ve spustitelném souboru, se mění vždy, když se mění on, potichu, na každém stroji v jiný čas. Vendorování dělá ze sady pravidel fakt repozitáře, prověřitelný v diffu a měněný záměrně. test/cases/67_rule_dag.sh upravuje, odstraňuje a přidává soubory pod vendor/, předává repozitář novější distribuci a dokazuje, že se nic nezmění, dokud se nepožádá o update, a že rules/project/ to přežije bajt po bajtu.

Detail vykreslený z docs/claims/vendored-rule-package.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Základ pravidel je vendorován do repozitáře s manifestem jmenujícím každý soubor a jeho hash a ruční úprava se odhalí a odmítne

    Vytvořeno na Doktrína, Doctor.

  2. 2 · kanonické tvrzení

    vendored-rule-packagedeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si to na tomto webu · docs/DOCTRINE.md

  3. 3 · implementace

    lib/rules.sh · majordomus rules

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

    Test: test/cases/67_rule_dag.sh

    Provedeno v Zjistit, která pravidla se zde uplatňují a co je vynucuje.

  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 67_rule_dag

Kde se toto tvrzení používá

Související tvrzení stejná implementace

Okamžiky, na které to odpovídá

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