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.

Dokončení je podmíněno kontrolou

Dokončení je podmíněno kontrolou

majordomus://rule/majordomus.completion-gates@1aktivní úlohyevidencecompletionci

odkazuje na

odkazuje na něj

Zdůvodnění

majordomus.obligation-closure způsobilo, že úloha dluží to, co deklaruje její requires, a způsobilo, že tyto důkazy vyprší. Nedotklo se ničeho z toho, co zná validační pipeline. Kontroly repozitáře — sady, lintery, kontroly projekcí, sondy — byly vlastností pull requestu, ne úlohy, takže úlohu šlo dokončit s červenou vlastní kontrolou crate nebo bez jediného spuštění behaviorální sady a záznam by stejně hlásil dokončeno.

Dvě měření rozhodují o tvaru tohoto pravidla, ne tvar, který by měl první návrh.

Verdikt, který nikdy nedorazil, vypadá přesně jako ten, který prošel. Dne 2026-09-10 měly v repozitáři Majordomus, kde bylo toto pravidlo napsáno, čtyři běhy na jeho trunku dokončené všechny linuxové joby — pět z nich červených — zatímco tři joby macOS čekaly ve frontě mezi třemi a sedmi hodinami, takže verdikt, ke kterému měla tato selhání dojít, neběžel. Trunk nesl vady přes noc a nikde nic nesvítilo červeně. majordomus.never-reported-is-not-green uvádí princip; toto pravidlo je místem, kde se z něj stává stav, který drží stroj, odlišný od pass i unknown.

Výstup kontroly lze přikrášlit. Kontrola pokrytí, která počítá svůj testovací kód do vlastního jmenovatele, hlásí vyšší procento při každém přidání testů, ať je cokoli lépe pokryté, nebo ne. Proto zde nic nečte, co kontrola vytiskla: čte exit status kontroly a hash souborů, nad nimiž běžela. To je tvrzení, které pracovník nemůže vylepšit psaním dalšího kódu.

Požadované chování

Použitelnost se odvozuje. Které kontroly musí úloha projít, se počítá z modelu CI repozitáře — kontrol, které deklaruje, a tříd cest, které je vybírají — aplikovaného na vlastní sadu změn úlohy, tedy každou cestu mezi commitem, na kterém úloha začala, a pracovním stromem včetně necommitnutých souborů. Nikde není napsán seznam „zdroj implikuje testy“: třídy už říkají, které cesty vybírají které kontroly, a třída upravená dnes změní odpověď dnes. Kontrola, kterou změna nemůže ovlivnit, je exempt, což je jiný nález než ten, který nelze posoudit.

Běh kontroly je důkaz a vyprší. Běh se k úloze zaznamená jako řádek knihy, který uvádí kontrolu, její návratový kód a hash souborů, které ji vybírají — sjednocení cest tříd, jež kontrolu jmenují, a všeho u kontroly, kterou vybírá každý plán. Běh kontrolu splní, jen dokud se tento hash rovná znovu spočítanému. Důkaz, který nemůže vypršet, je tvrzení o minulosti vydávané za tvrzení o přítomnosti, což je argument, který majordomus.obligation-closure uplatňuje u povinností a který tu ze stejného důvodu platí pro kontroly.

Podložit completed může jen verdikt, který byl přečten. S výsledkem completed odmítne povinná kontrola, která hlásila nenulový návratový kód, ta, jejíž běh už strom nepopisuje, i ta, která nemůže běžet, protože to, na čem závisí, je v kterémkoli z těch stavů. Odmítne i checkout, který verdikt nedokáže přečíst vůbec — CI model, který je deklarován a nelze ho naparsovat, čtečka, která není sestavena, která selže nebo nic neodpoví, žádné jq: to je unknown a neznámo, které by nechalo projít completed, by byla kontrola, která projde vždy, když se nemůže podívat. Repozitář, který CI model nedeklaruje, nemá kontrolu, o které by mohlo být neznámo, a neodmítne nic. Kontrola, která nikdy nehlásila, také neodmítá — spustitelný soubor k tomuto verdiktu došel, queued — hlásí se jako neověřená, jménem, s pravidlem, které říká, proč ticho není zelená. Výsledek jiný než completed neodmítne vůbec nic — úloha, která o sobě hlásí, že je blokovaná, je poctivá, a odmítnutí tohoto stavu učí workera tvrdit completed.

Jeden úsudek. Stav každé kontroly počítá jednou spustitelný soubor a čtou jej všechny povrchy: příkazový řádek přes check a finish, HTTP API, MCP i jakýkoli dashboard. Povrch, který jej přepočítává, je způsob, jak se dva povrchy dostanou do sporu o tom, zda je tatáž práce hotová.

Chování při selhání

Porušení je nález FAIL v kategorii gate, jmenující kontrolu, její stav, důvod ve slovníku výše — exit status, který hlásila, nebo oba hashe, když důkaz zastaral — a příkaz, který by to vyřešil. finish skončí s exit 10 a nezapíše nic. Checkout, který se k posouzení vůbec nedostane (nečitelný model, žádný sestavený čtenář, čtenář, který selže), hlásí unknown jménem a completed s tímto nálezem odmítne; check a každý jiný výsledek jej hlásí bez odmítnutí.

Ověření

mj_validate_completion_gates o tom rozhoduje, je spouštěn z check, finish a čte schopnost gates.completion, místo aby soudil sám. Behaviorální případ test/cases/131_completion_gates.sh dokazuje verdikty a test/cases/578_an_unknown_gate_refuses_completed.sh dokazuje, že nečitelný verdikt odmítne completed a nic jiného; CI spouští obojí.

Odkud to pochází

kanonický soubor
.ai/repo/rules/vendor/majordomus/rules/completion-gates.v1.md
identity
majordomus.completion-gates@1
dostupné také jako
Zdroj MCP majordomus://rule/majordomus.completion-gates@1 · majordomus entity show rule/majordomus-completion-gates-1 · GET /api/v1/entity?uri=majordomus://rule/majordomus.completion-gates@1
v Cockpitu
/cockpit/objects/rule/majordomus-completion-gates-1

Tato stránka je generována z výše uvedeného souboru pomocí scripts/generate-site-data; úprava stránky nic nemění, úprava souboru změní všechna rozhraní. Výše uvedené vztahy jsou hrany docs/generated/graph.json, které spustitelný program zapisuje ze stejného indexu.

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