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.