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 --forceCo 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í).