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.

Pravidlo, které žádný program nedokáže vyjádřit, to říká ve své vlastní hlavičce s důvodem a počítá se zvlášť od každého pravidla, které má kontrolu

Některá pravidla opravdu nemají strojový výraz. *Původ toho, co bylo napsáno* je

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: zastaralé 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

Některá pravidla opravdu nemají strojový výraz: původ toho, co bylo napsáno, nebo zda si mechanismus zaslouží své náklady. Před `reviewed_because` ležela v seznamu dluhů vedle pravidel, na která se jen nedostalo, a obojí bylo nerozlišitelné. Důvod je celá deklarace — vedle něj není žádný příznak, protože příznak lze nastavit, ale důvod nelze nastavit, aniž by se napsal. Spustitelný důkaz ho vždy přebije, takže pravidlo, které získá případ, přestane být vynucováno revizí, aniž si kdokoli musí pamatovat něco smazat.

Co to znamená

Některá pravidla strojový výraz skutečně nemají. Původ toho, co bylo napsáno, je jedním z nich: žádný program v tomto stromě nepozná, odkud odstavec zdroje pochází. Zda si mechanismus zaslouží svou cenu, je další: to je úsudek a kontrola, která by jej předstírala, by byla horší než žádná.

Před touto zárukou seděla tato pravidla v rule-proof-baseline.txt, seznamu blokujících pravidel, která nepojmenovávala žádný důkaz — vedle pravidel, na která se jen nedostalo. Obě skupiny byly nerozlišitelné, což je horší selhání z dvojice: seznam šlo číst jen jako práci, která zbývá, a polovina z ní by nikdy nebyla hotova.

Pravidlo nyní může ve vlastním front matter říct, že je nic spustitelného nevyjádří, tím, že nese reviewed_because: s důvodem. To je deklarace, kterou může recenzent auditovat, což řádek v souboru dluhu není.

Princip

Důvod je celá deklarace. Vedle něj záměrně není žádný příznak — příznak lze nastavit, ale důvod nelze nastavit, aniž by se napsal — takže výjimka je vždy věta, kterou musel někdo obhájit. Blok s jedním slovem a bez důvodu není deklarace; propadne na unproven, což je přesně to zjištění, které měl nahradit.

Dvě vlastnosti brání tomu, aby se z toho stala cesta ven:

Spustitelný důkaz vždy vyhrává. Režim určuje to, co blok jmenuje, v tomto pořadí: validátor z něj dělá dispatched, test gated a teprve potom se čte důvod. Pravidlo, které získá případ, přestane být review-enforced, ať je důvod stále přítomen, nebo ne, takže deklarace nemůže přežít vlastní potřebu.

Počítá se odděleně, všude. rule-proof-check vypíše každé jako NOTE při každém běhu, nikdy jako prošlé a nikdy jako selhání, a uvede jejich počet vedle změřeného součtu. Typovaná zpráva je počítá v review_only, nikdy v passing a nikdy v named_proof. Když toto číslo roste, správa slábne, a žádný souhrn v tomto repozitáři je nesčítá do celku, který by to skryl.

Jak to vidět

scripts/ci/rule-proof-check     every declared exemption, with the rule that declares it
majordomus rules list           review-enforced: <the reason>, in the last column

Co nepokrývá

Zda je důvod dobrý důvod. To nemůže rozhodnout nic a předstírat opak by byla falešná zelená, které tento mechanismus brání. Tvar zajišťuje, že důvod existuje, je připojen k pravidlu, které omlouvá, a čte jej každý, kdo změnu posuzuje — výjimka je viditelná a připsatelná, ne řádek v seznamu.

Také nebrání růstu čísla. Repozitář by mohl deklarovat každé pravidlo jako vynucované revizí a tato kontrola by prošla. Zaručuje, že je to hlasité: počet se vypíše při každém běhu a počítá se zvlášť od každého pravidla, které má kontrolu, takže růst je číslo, na které se někdo musí podívat, ne ticho.

Proč existuje

Protože předchozí mechanismus nedokázal rozlišit dvě různé věci. rule-proof-baseline.txt se označoval za „blokující pravidla, která nejmenují žádný spustitelný důkaz: dnes vynucována revizí“, a u čtyř z deseti položek neexistoval den, kdy by to přestalo platit. Seznam, který míchá tohle nikdo nedokáže zautomatizovat s nikdo se k tomu nedostal, činí druhé neviditelným a první vypadá jako nedbalost.

Co to dokazuje

test/cases/125_rule_proof.sh: pravidlo ve fixture deklaruje důvod a hlásí se jako reviewed, ne jako selhání; totéž pravidlo bez důvodu loader odmítne; pravidlo deklarující validátor i důvod se odmítne jako rozpor; a pravidlo, které získá případ, se hlásí jako hlídané, s důvodem stále na místě.

Detail vykreslen z docs/claims/rule-exemption-carries-its-reason.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Pravidlo, které žádný program nedokáže vyjádřit, to říká ve své vlastní hlavičce s důvodem a počítá se zvlášť od každého pravidla, které má kontrolu

    Vytvořeno na Doktrína.

  2. 2 · kanonické tvrzení

    rule-exemption-carries-its-reasondeklarovaný 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

    scripts/ci/rule-proof-check

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

    Test: test/cases/125_rule_proof.sh

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: zastaralé 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 125_rule_proof

Související tvrzení stejná implementace

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