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.

Stav důkazu pravidla se odvozuje ze stromu a knihy společně a mechanismus, který odmítá porušení, se nikdy nehlásí jako běh, který prošel

O pravidle existují dvě otázky a nejsou to tytéž otázky.

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

`majordomus doctrine` se ptá, zda repozitář pravidlo nyní splňuje; graf důkazů se ptá, zda je pravidlo vůbec ve stavu, v němž by splněno být mohlo. Deset stavů a ty, které se nesmí slít, jsou `proven` (úspěšný běh a od té doby se nic nezměnilo), `gated` (spustitelná kontrola, kterou spouští kontrola CI, bez zde zaznamenaného verdiktu) a `reviewed` (deklarovaná výjimka). Stav pravidla je nejslabší z jeho částí, takže jediný visící případ způsobí, že pravidlo visí, kolik dalších jich prochází.

Co to znamená

O pravidle existují dvě otázky a nejsou to tytéž otázky.

Splňuje repozitář toto pravidlo právě teď? se týká stromu a majordomus doctrine na to odpovídá spuštěním validátoru.

Je toto pravidlo ve stavu, v němž by mohlo být vůbec splněno? se týká pravidla samotného: zda je to, co jmenuje, ve stromu, zda ho řídí runner, zda ho někdy něco spustilo a zda to, co běželo, není starší než to, čeho se týká. Do grafu důkazů se na to nikdo neptal a pravidlo, jehož případ byl smazán, odpovídalo na první otázku mlčením a na druhou vůbec.

Princip

crate::rules je jedno typované čtení korpusu pravidel a spojuje deklaraci se stromem a s hlavní knihou zaznamenaných provedení, kterou popisuje EVIDENCE.md. Nereimplementuje důkazy: testová úroveň důkazu pravidla je ten slovník a druhý by byl druhou odpovědí na tutéž otázku.

Deset stavů, seřazených od nejsilnějšího po nejslabší, a tři, které se nikdy nesmí slít jeden do druhého, jsou:

  • proven — úspěšný běh a od té doby se v repozitáři nic nezměnilo.
  • gated — spustitelná kontrola porušení odmítá a CI kontrola ji spouští. To je mechanismus. Tento repozitář pro kontrolu nezaznamenává žádný verdikt, takže lze ukázat jen to, že porušení jsou odmítána, ne že poslední běh prošel.
  • reviewed — pravidlo s odůvodněním deklaruje, že je nelze vyjádřit ničím spustitelným.

Stav pravidla je nejslabší z jeho částí. Jeden viselý případ udělá pravidlo viselým, kolik jeho dalších případů projde, protože polovina, která se nepřeloží, je ta, které by čtenář důvěřoval.

Nález je pravidlo, jehož deklarovanou třídu stav nepodporuje. dangling je nález v každé třídě; u blokujícího pravidla jsou jím i unproven, failing a unrunnable. gated, reviewed a not run nálezy nejsou — jsou to slabší stavy, řečené nahlas a započítané, což je něco jiného než vada.

Jak to vidět

majordomus-cli rules report              every rule, with the tallies counted from the tree
majordomus-cli rules show <id>           one rule, its proof, and what would fix it
majordomus-cli rules proves <test>       what a test proves, and what would lose its only proof

Tatáž odpověď je HTTP operace GET /api/v1/rules, nástroj MCP majordomus_rules a zdroj majordomus://rules, odvozené z jedné deklarace, místo aby se čtyřikrát implementovaly.

Co nepokrývá

Verdikt pro kontrolu. Ledger tohoto repozitáře zaznamenává behaviorální případy a integrační testy crate; kontrola zapojená jako vlastní kontrola CI nemá proti sobě zaznamenané žádné provedení, takže její pravidlo hlásí gated — porušení se odmítají a co rozhodl poslední běh, se tu neuvádí. To je omezení, které stav pojmenovává, a nikoli skrývá, a proto gated není proven.

Neříká také nic o tom, zda repozitář aktuálně pravidlo splňuje. To je otázka dispatcheru a odpovídá na ni majordomus doctrine. Sloučení obojího by vyrobilo jediný exit kód pro „pravidlo je v pořádku“ i „repozitář je v pořádku“, což jsou různé věty.

Proč existuje

Protože předtím se na to nedalo vůbec zeptat. x-majordomus četl přesně jeden test — existuje blok — a každá plocha vytiskla odznak z odpovědi. Pravidlo pojmenovávající případ smazaný před třemi měsíci nešlo odlišit od pravidla, jehož případ běží při každém pushi.

Co to dokazuje

test/cases/133_rule_graph.sh, který řídí graf přes program ve vlastním fixture repozitáři — protože stavy, na kterých záleží, jsou stavy o commitech, o souborech, které přestanou existovat, a o bězích, které proběhly a pak zastaraly. Zaznamená běh a ověří proven, upraví případ a ověří stale, smaže jej a ověří dangling a ověří, že kontrola zapojená jako vlastní kontrola je gated, zatímco stejný tvar bez kontroly za sebou je unrunnable.

Detail vykreslený z docs/claims/rule-state-is-derived-from-what-ran.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Stav důkazu pravidla se odvozuje ze stromu a knihy společně a mechanismus, který odmítá porušení, se nikdy nehlásí jako běh, který prošel

    Vytvořeno na Doktrína.

  2. 2 · kanonické tvrzení

    rule-state-is-derived-from-what-randeklarovaný 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

    apps/majordomus-cli/src/rules/mod.rs

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

    Test: test/cases/133_rule_graph.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 133_rule_graph

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