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é pravidlo, které nástroj vynucuje, je deklarováno jednou, jako objekt pravidla v efektivní množině repozitáře, a doctor dokazuje, že každé z nich je dosaženo příkazem, který tvrdí, že ho spouští

Objekty pravidel v sekci pravidel repozitáře — vendorovaný základ (.ai/repo/rules/vendor/majordomus/, kopie balíčku, který nástroj dodává v share/standard/majordomus/) plus vlastní pravidla repozitáře — jsou jediným místem, kde se pravidlo deklaruje. Každý příkaz, který pravidla vynucuje, z něj vychází, místo aby kontroly pojmenovával ručně, a majordomus doctor u každého z nich prochází řetěz od deklarace po job CI, přičemž čte zdroj, ne popis, který o sobě poskytuje registr.

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

Doktrína, jejíž validátor neexistuje, validátor, který žádná doktrína nedeklaruje, příkaz, který se nikdy nedispečuje, blokující pravidlo, jehož příkaz nemůže skončit nenulovým kódem, chybějící test a CI, které polyká sadu testů, jsou šest samostatných selhání se šesti samostatnými zprávami. Každé je mutačně testováno.

Co to znamená

Objekty pravidel pod sekcí pravidel repozitáře — vendorovaný základ (.ai/repo/rules/vendor/majordomus/, kopie balíčku, který nástroj dodává v share/standard/majordomus/) plus vlastní pravidla repozitáře — jsou jediné místo, kde se pravidlo deklaruje. Každý příkaz, který pravidla vynucuje, z nich vychází, místo aby kontroly jmenoval ručně, a majordomus doctor prochází řetěz od deklarace po úlohu CI pro každé z nich, přičemž čte zdroj, ne popis registru sama o sobě.

Princip

lib/doctrine.sh načte registr a pro běžící příkaz provede každou doktrínu, kterou jmenuje její enforced_by. Validátor se hledá podle jména — doktrína deklarující validator: scope spouští mj_validate_scope — takže doktrína, která jmenuje validátor, který nikdo nenapsal, je hlášené selhání, ne tiché přeskočení. mj_validate_doctrine_wiring v lib/doctor.sh pak kontroluje šest věcí na doktrínu a tři o pipeline:

  • validační funkce je definována někde v lib/;
  • každý příkaz v enforced_by existuje a volá mj_doctrine_dispatch;
  • příkazy blokující doktríny mohou z neúspěšného nálezu udělat nenulový exit kód;
  • test, který jmenuje, existuje;
  • každé tvrzení, které jmenuje, je v docs/CLAIMS.yaml;
  • v opačném směru je každá funkce mj_validate_* v lib/ deklarována nějakou doktrínou;
  • CI spouští test/run.sh, nepolyká jeho návratový kód a runner používá glob test/cases/, místo aby vypisoval případy jmenovitě.

Jak to vidět

majordomus doctrine status
majordomus doctrine show majordomus.scope-integrity
majordomus doctor        # OK doctrine  <n> doctrines — validator, dispatch, propagation, test and CI resolve for every one

Co nepokrývá

Kontrola dispatche je textová: dokazuje, že zdroj příkazu volá dispatcher, ne že ho konkrétní cesta kódu dosáhne za všech podmínek. Pokrytí logiky samotného pravidla je úkolem testu, který doktrína jmenuje, ne kontroly zapojení.

Proč existuje

Selhání, kterému to brání, není vidět z žádného jednotlivého souboru. Pravidlo je zapsáno, skript ho implementuje, test skript dokazuje a nic skript nevyvolává. Každý artefakt je přítomen a vynucování je fikce. test/cases/18_doctrine_wiring.sh přeruší každý článek v zahozené kopii a selže, pokud doctor nezčervená — ověřovač, který přežije rozbité zapojení, nic neprokazuje.

Detail vykreslený z docs/claims/doctrine-registry.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Každé pravidlo, které nástroj vynucuje, je deklarováno jednou, jako objekt pravidla v efektivní množině repozitáře, a doctor dokazuje, že každé z nich je dosaženo příkazem, který tvrdí, že ho spouští

    Vytvořeno na Doktrína, Doctor.

  2. 2 · kanonické tvrzení

    doctrine-registrydeklarovaný 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/doctrine.sh · majordomus doctrine

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

    Test: test/cases/18_doctrine_wiring.sh

    Provedeno v Prove a rule is actually enforced, not merely written down, See which rules apply here and what enforces them.

  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 18_doctrine_wiring

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.