Co to znamená
Vyžadovat je třeba jediný stav, ci, a nemůže být zelený náhodou. Zda ho něco skutečně vyžaduje, je samostatná otázka a odpověď je dnes ne: viz ci-verdict-is-required. Toto tvrzení se týká toho, co stav znamená, ne toho, co zastavuje. Počítá se ze dvou faktů: z plánu (které kontroly musela tato změna spustit) a z toho, co hlásily úlohy. Kontrola vybraná plánem musela proběhnout v úloze, která uspěla; úloha, která selhala nebo byla zrušena, je červená, ať byla její kontrola plánována, či ne; plán, který nevybral nic, je rozbitý plán a červený; selhavší plánovací úloha je červená. Kontrola, kterou plán vynechal, smí být přeskočena a tabulka říká proč.
Princip
scripts/ci/verdict přebírá plán (plan.json, artefakt ci-plan) a kontext needs workflow (výsledek každého jobu) a rozhoduje; do souhrnu kroku zapíše tabulku každé kontroly, jejího jobu, zda byla plánována a proč, a výsledku jobu. Job ci v .github/workflows/validate.yml potřebuje každý job a běží s if: always(), takže přeskočený job nemůže nechat stav viset. test/cases/94_ci_plan.sh řídí verdikt pomocí fixture plánů a kontextů needs přes každou červenou podmínku i tu zelenou; test/cases/26_ci_wiring.sh dokládá, že job ci potřebuje každý job modelu a běží vždy.
Jak to vidět
scripts/ci-plan --full x > plan.json
printf '{"plan":{"result":"success"},"structure":{"result":"success"},"suite":{"result":"failure"}}' > needs.json
scripts/ci/verdict --plan plan.json --needs needs.json; echo "exit $?"
just test-shell 94_ci_planCo nepokrývá
Verdikt důvěřuje výsledkům jobů tak, jak je hlásí GitHub; kontrolu znovu nespouští. Kontrola, kterou model nedeklaruje, není v žádném plánu ani v žádném verdiktu. Ochrana větví je nastavení repozitáře, ne soubor v tomto stromě: stav existuje proto, aby mohl být vyžadován, a zda je vyžadován, se rozhoduje na GitHubu. K 2026-09-11 jej nevyžaduje nic — branches/master/protection odpovídá 404 a rulesets odpovídá [] — takže červený verdikt nezastaví žádný merge. Toto tvrzení znělo do té doby „jediný stav, který pravidlo větve vyžaduje“, čímž tvrdilo, že tomu tak je.
Proč existuje
Workflow přeskočený filtrem cest nikdy nehlásí a povinná kontrola, která nikdy nehlásí, nechá pull request čekat navždy; workflow, které vždy hlásí zeleně, když nic nebylo spuštěno, je horší. Filozofie Majordomus je důkazy místo tvrzení: stav jmenuje, co běželo a proč, a odmítá shrnout nic jako úspěch.