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.

majordomus rules

Efektivní sada pravidel: vendorovaný základ plus pravidla projektu.

Efektivní sada pravidel: vendorovaný základ plus pravidla projektu.

  • generated-output-mutating
  • rules
  • --json

Každý podpříkaz je jen pro čtení kromě vendor update, který nahradí vendorovanou základní hodnotu dodávaným balíčkem nástroje a odmítne ručně upravenou kopii, pokud se nevynutí.

Syntaxe

majordomus rules <list|show <id>|vendor status|vendor diff|vendor update [--force]> [--json]

Životní cyklus

  1. Nastavit
  2. Začít
  3. Pracovat
  4. Ověřit
  5. Uzavřít
  6. Prozkoumat

Další příkazy v této fázi:doctor, watch, history, search, doctrine, version, knowledge, bench, archive.

Čte

  • .ai/repo/rules/
  • share/standard/majordomus/

Zapisuje

  • .ai/repo/rules/vendor/majordomus/
  • .ai/local/state/ledger.jsonl

Návratové kódy

Jen kódy, které tento příkaz může vrátit. Úplný kontrakt je na indexu příkazů.

  • 0 ok
  • 2 použití
  • 10 kontrakt nesplněn
  • 11 nalezen drift
  • 12 chybějící artefakt
  • 13 interní chyba
  • 15 odmítnuto

Efektivní sada pravidel, vyřešená

rules čte vendorovanou baseline a projektová pravidla jako jednu aditivní sadu, řeší jejich závislosti v deterministickém pořadí a zobrazí kterékoli z nich celé.

Rozřešené pořadí

nainstalováno
ano

Pro tento repozitář platí

# A repository with Majordomus installed and projections generated, and one commit of work.
"$MJ" init >/dev/null
"$MJ" update >/dev/null
mkdir -p lib docs
echo a > lib/a
echo d > docs/d
git add . && git commit -qm base

Spustit

$ majordomus rules list

Výstup obsahuje

  • ^majordomus.scope-integrity +v1 +blocking +vendor:majordomus

ukončení 0

Každé aktivní pravidlo, jeho verze, třída a původ. Chybějící závislost nebo cyklus odmítne celou množinu, místo aby se použila její část.

Jedno pravidlo, celé

nainstalováno
ano

Pro tento repozitář platí

# A repository with Majordomus installed and projections generated, and one commit of work.
"$MJ" init >/dev/null
"$MJ" update >/dev/null
mkdir -p lib docs
echo a > lib/a
echo d > docs/d
git add . && git commit -qm base

Spustit

$ majordomus rules show majordomus.scope-integrity

Výstup obsahuje

  • ^id: majordomus.scope-integrity$
  • ^class: blocking$

ukončení 0

Front matter a tělo ze souboru, který repozitář nese. Pravidlo je dokument; nástroj jej jen najde.

Pravidlo, které není v sadě

nainstalováno
ano

Pro tento repozitář platí

# A repository with Majordomus installed and projections generated, and one commit of work.
"$MJ" init >/dev/null
"$MJ" update >/dev/null
mkdir -p lib docs
echo a > lib/a
echo d > docs/d
git add . && git commit -qm base

Spustit

$ majordomus rules show nosuch.rule

Výstup obsahuje

  • no rule 'nosuch.rule'

ukončení 12

Exit 12, chybějící artefakt, s příkazem, který vypíše, co existuje.

Reference

Efektivní sada pravidel: každé aktivní pravidlo vendorované pod sekcí pravidel repozitáře plus každé aktivní pravidlo, které repozitář napsal, vyřešené jako graf závislostí. Jen pro čtení v každém podpříkazu kromě vendor update.

Pravidlo je soubor Markdown s YAML front matter. Jeho identitou je id a version z front matter, nikdy název souboru. docs/DOCTRINE.md popisuje formát, blok x-majordomus, který váže pravidlo na validátor, a co je dnes autoritativní.

$ majordomus rules list
majordomus.scope-integrity                 v1  blocking  vendor:majordomus enforced by check,finish,watch
majordomus.sessions-are-workers            v1  advisory  vendor:majordomus no validator; see the rule
project.english-only                       v1  blocking  project          proven by scripts/ci/english-only-check
project.clean-room                         v1  blocking  project          review-enforced: the rule is about the provenance of what was written, which no program in this tree can read
  • list [--json] vypíše účinnou sadu v pořadí řešení: identita, třída, původ (vendor:<name> nebo project) a způsob vynucování. Tři režimy, které popisuje DOCTRINE.md: enforced by <commands> pro pravidlo, které spouští dispatcher, proven by <paths> pro pravidlo, které drží kontrola nebo případ, a review-enforced: <reason> pro pravidlo, které nese reviewed_because vysvětlující, proč ho žádný program nevyjádří. Pravidlo bez bloku x-majordomus říká no validator; see the rule, místo aby se skrylo: je normativní pro každého, kdo ho čte, a nic ho strojově nekontroluje.

    Tento příkaz odpovídá na to, co pravidla jsou. Co každé z nich prokazuje — zda případ, který jmenuje, ve stromu stále je, zda jej některý runner řídí, zda jej kdy někdo spustil a zda je ten běh starší než to, čeho se týká — je jiná otázka a odpovídá na ni spustitelný soubor: majordomus-cli rules report, rules show <id>, rules proves <test>.

  • show <id> vypíše jedno pravidlo, front matter a tělo, s cestou relativní k repozitáři, z níž bylo přečteno, jako prvním řádkem. Id mimo efektivní sadu skončí kódem 12.

  • vendor status porovná vendorovaný základ s balíčkem, který dodává běžící spustitelný soubor. Vypíše obě revize, pak integritu manifestu vendorované kopie a nakonec, zda jsou oba balíčky stejné.

  • vendor diff je prověřitelný rozdíl mezi oběma, jako unified diff obou adresářů. Skončí s kódem 0, ať se liší, nebo ne; vendor status nese výstupní kód.

  • vendor update [--force] nahradí vendorovaný základ balíčkem spustitelného souboru. Zápis je atomický: nový balíček se připraví vedle cíle a prohodí se. Nikdy se nedotkne rules/project/.

Řešení selhává uzavřeně. Chybějící závislost, závislost na zastaralém pravidlu, cyklus, jedno id@version nárokované dvěma soubory, projektové pravidlo ve jmenném prostoru dodavatele, poškozený nebo neúplný front matter, neznámý klíč front matteru nebo blok x-majordomus, který nejmenuje žádný validátor, žádný vynucující příkaz nebo žádný test — každé z toho zastaví list, show i každý příkaz, který čte danou sadu, s kódem 10 a důvodem. Nic se neaplikuje částečně. Pořadí je deterministické: dva běhy se shodnou a každá závislost je uvedena před pravidlem, které na ní závisí.

Vendorovaná kopie repozitáře je autoritativní. Novější spustitelný soubor hlásí novější základ přes vendor status a vendor diff; nikdy žádný neaplikuje. update, doctor a check nechávají vendorovaný adresář na pokoji. Základ se mění, jen když se o to požádá vendor update.

Ruční úprava pod vendor/ je zjištěna. Manifest balíku uvádí každý soubor pravidel s jeho hashem. Soubor, jehož hash už nesedí, uvedený soubor, který chybí, nebo soubor vedle manifestu, který v něm není uveden, hlásí vendor status a odmítá vendor update, dokud --force.

ukončenívýznam
0sada se vyřeší; vendorovaný základ je aktuální
2neznámý podpříkaz nebo volba; show bez id
10sada se nerozliší, nebo vendorovaná kopie neodpovídá svému manifestu
11vendor status: spustitelný soubor dodává jiný balíček než ten, který je vendorovaný
12žádné pravidlo s tímto id; zatím nic vendorováno; v tomto rozvržení není sekce pravidel
13spustitelný soubor nedodává žádný standardní balíček pravidel: rozbitá instalace, ne chyba repozitáře
15vendor update odmítnuto kvůli ručně upravenému vendor adresáři (--force přepíše)

test/cases/67_rule_dag.sh dokazuje každé odmítnutí mutací a dokazuje, že balíček novější distribuce se neuplatní, dokud o to nikdo nepožádá, že vendor update ponechá rules/project/ bajt po bajtu, jaké bylo, a že rozřešené pořadí je napříč běhy stejné.

Důkazy

Každý případ níže běží v CI na Linuxu i macOS. Web se odmítne sestavit, pokud veřejný příkaz nemá behaviorální případ, negativní případ nebo ukázku.

Záruky, které tento příkaz nese

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