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 update

Deterministicky vygenerovat každý instrukční soubor providerů z jedné politiky.

Deterministicky vygenerovat každý instrukční soubor providerů z jedné politiky.

  • generated-output-mutating
  • systém

Dvojí spuštění zanechá bajt po bajtu stejný soubor. Každá projekce nese vlastní razítko a cíl, jehož obsah neodpovídá ani svému razítku, ani novému výstupu, je ruční úprava, odmítnutá, a ne přepsaná.

Syntaxe

majordomus update [--dry-run] [--diff <target>] [--force]

Ž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:init, migrate, recover.

Čte

  • .ai/repo/policy.yaml
  • .ai/repo/profiles/
  • share/providers/

Zapisuje

  • projections[].target
  • .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
  • 12 chybějící artefakt
  • 15 odmítnuto

Regenerace instrukcí providerů

Jedna politika, několik instrukčních souborů providerů, generovaných deterministicky. Dvojí spuštění zanechá bajtově shodné soubory, a právě to umožňuje razítku odhalit ruční úpravu.

Projekce nebyly nikdy vygenerovány

již vygenerováno
ne

Pro tento repozitář platí

# Installed, but the provider instruction files have not been generated yet.
"$MJ" init >/dev/null
mkdir -p lib && echo a > lib/a && git add . && git commit -qm base

Spustit

$ majordomus update

Výstup obsahuje

  • vytvořit CLAUDE.md
  • nese vlastní razítko

ukončení 0

Každý cíl, který politika jmenuje v projekcích, se zapíše a razítko každého se zaznamená spolu s hashem politiky, která ho vytvořila.

Opětovné spuštění bez jakékoli změny

již vygenerová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 update

Výstup obsahuje

  • nezměněný CLAUDE.md

ukončení 0

Deterministický výstup tu není zdvořilost. Pokud by regenerace pokaždé vyrobila jiný soubor, razítko by nikdy nerozlišilo ruční úpravu od vlastního šumu generátoru.

Reference

Znovu vygenerovat projekce poskytovatelů z politiky. Deterministicky: stejná politika, stejný výstup, bajt po bajtu.

Čte: politiku, profily, providers/*.tmpl. Zapisuje: každý projections[].target, jeden řádek ledgeru projections.updated. Nic jiného: každý cíl nese vlastní provenance.

Behaviour:

  • --dry-run vypíše, co by se změnilo; --diff <target> ukáže diff pro jednu. U projekce regionu je diff regionu, ne hostitelského dokumentu.
  • Odmítne (15) přepsat obsah, jehož aktuální hash neodpovídá ani razítku, které nese, ani novému výstupu, pokud není --force. Cíl bez razítka vůbec nezapsal update a odmítne se stejně. Ruční úprava se nikdy tiše neztratí; odmítnutí jmenuje soubor a příkaz --diff, který ji ukáže.
  • mode: region (viz SCHEMAS.md) generuje jen text mezi značkami majordomus:begin a majordomus:end. Zbytek cíle se zkopíruje bajt po bajtu, chybějící oblast se jednou připojí a poškozené značky se odmítnou (15). Tak repozitář, který už má ručně psaný CLAUDE.md, přijme Majordomus, aniž by o něj přišel.
  • Připojí projections.updated do ledgeru.
  • Každý cíl v režimu souboru začíná razítkem jmenujícím tento příkaz, hash politiky, z níž pochází, a hash obsahu pod ním; cíl v režimu oblasti nese tytéž dva hashe ve své počáteční značce. Toto razítko je provenience, s níž se doctor a watch porovnávají, na čerstvém klonu stejně jako zde.
  • Vždy načítaná projekce se po generování kontroluje proti rozpočtu; přes rozpočet je 10 a nic se nezapíše. U projekce regionu rozpočet měří generovaný region a doctor hlásí vlastní délku hostitelského dokumentu jako INFO.
  • Spustitelný soubor v Rustu vykresluje stejné cíle ze stejných vstupů, bajt po bajtu: majordomus generate providers je zapisuje a majordomus generate --check (které spouští CI) skončí s 10 a jmenuje každý cíl, který se liší od politiky nebo chybí. update je interaktivní zapisovač s jeho odmítnutími; generate --check je kontrola. Případ testu 93 dokazuje, že se oba shodují v obou směrech.

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.