Co to znamená
Když update zapisuje projekci, označí ji: první řádek cíle v režimu souboru nebo počáteční značka cíle v režimu oblasti jmenuje hash politiky, z níž se vykreslila, a hash obsahu, který razítko pokrývá. doctor a watch zahashují obsah na disku a porovnají jej s razítkem; rozdíl znamená, že někdo ručně upravil generovaný soubor, a hlásí se jménem. Nic jiného se nikam nezaznamenává, takže čerstvý klon se kontroluje přesně tak jako checkout, který soubor vygeneroval.
Princip
lib/update.sh vykreslí každý cíl, spočítá hash obsahu a zapíše řádek razítka (mj_stamp_line v lib/common.sh) nebo payload značky nad obsahem. lib/doctor.sh přečte razítko zpět (mj_stamp_read), zahashuje vlastněný obsah (mj_owned_content) a selže při neshodě (content differs from its own stamp (hand-edited?)), u cíle bez razítka a u chybějícího cíle; lib/watch.sh navíc hlásí drift politiky, když hash politiky, který razítko jmenuje, není politikou na disku, což znamená, že projekce je zastaralá.
Jak to vidět
echo "my own rule" >> CLAUDE.md
majordomus doctor
# FAIL projection CLAUDE.md — content differs from its own stamp (hand-edited?) [reproduce: majordomus update --diff CLAUDE.md]Co nepokrývá
Razítko říká, že se soubor změnil, ne co změna znamenala. update --diff <target> ukáže rozdíl, aby člověk mohl rozhodnout, zda úprava patří do těla politiky. Razítko je důkaz o obsahu pod ním; není to podpis a nedokazuje nic o tom, kdo soubor vygeneroval.
Proč existuje
Ruční úpravy generovaných souborů jsou způsob, jak vzniknou dvě sady pravidel. Razítko uvnitř souboru zviditelní okamžik rozchodu jedním příkazem místo za měsíce a zviditelní ho na každém klonu, ne jen tam, kde byl zrovna commitnut soubor s proveniencí.