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.

Ručně upravený instrukční soubor se nikdy tiše nepřepíše

Pokud cíl projekce na disku neodpovídá ani razítku, které nese, ani čerstvě vygenerovanému výstupu, update ho odmítne změnit (kód 15), pojmenuje soubor a odkáže na update --diff <target>. Přepsání vyžaduje --force, zadané vědomě. Nic, co jste ručně napsali do vygenerovaného souboru, nezmizí bez rozhodnutí.

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

update odmítne, nabídne diff a přepíše jen s výslovným příznakem.

Co to znamená

Pokud cíl projekce na disku neodpovídá ani razítku, které nese, ani čerstvě vygenerovanému výstupu, update se jej odmítne dotknout (exit kód 15), pojmenuje soubor a odkáže na update --diff <target>. Přepsání vyžaduje --force, zadané vědomě. Nic, co jste zapsali do generovaného souboru, nezmizí bez rozhodnutí.

Princip

Než cokoli zapíše, lib/update.sh vykreslí každý cíl do dočasného adresáře a zařadí ho jako beze změny, aktualizovatelný (obsah na disku odpovídá hashi, který jmenuje jeho vlastní razítko), vytvořitelný (chybí), nebo ručně upravený (obsah se od razítka liší, nebo razítko vůbec není). Jediný ručně upravený cíl přeruší celý běh před jakýmkoli zápisem, takže částečná aktualizace nemůže nastat. --dry-run vypíše plán bez zápisu.

Jak to vidět

echo "my own rule" >> CLAUDE.md
majordomus update
# REFUSE projection CLAUDE.md — current content matches neither its own stamp nor the new output (hand-edited?); use --diff CLAUDE.md, then --force
majordomus update --diff CLAUDE.md
majordomus update --force

Co nepokrývá

--force je záměrné přepsání; Majordomus o zahozené úpravě nezaznamenává nic kromě diffu, který vám byl ukázán.

Proč existuje

Obecné pravidlo pro každý příkaz: žádné tiché destruktivní chování. Stejná ochrana platí pro init (odmítne existující instalaci) a start (odmítne, dokud je úloha aktivní).

Detail vykreslený z docs/claims/no-silent-overwrite.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Ručně upravený instrukční soubor se nikdy tiše nepřepíše

    Vytvořeno na Policy, Projection.

  2. 2 · kanonické tvrzení

    no-silent-overwritedeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si to na tomto webu · docs/CLI.md

  3. 3 · implementace

    lib/update.sh · majordomus update

  4. 4 · test a scénáře

    Test: test/cases/03_update.sh

    Provádí se v Převzít repozitář, který už má vlastní pravidla, Udržet bootstrap každého providera tenký, vygenerovaný a v rozpočtu.

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 03_update

Kde se toto tvrzení používá

Související tvrzení stejná implementace

Okamžiky, na které to odpovídá

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