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á.
Jen kódy, které tento příkaz může vrátit. Úplný kontrakt je na indexu příkazů.
0ok
2použití
10kontrakt nesplněn
12chybějící artefakt
15odmí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.