Okamžik
Někdo v březnu přidal pravidlo do CLAUDE.md. Někdo jiný v květnu přidal jiné pravidlo do AGENTS.md. Dnes má repozitář dva provozní kontrakty a který platí, závisí na tom, který nástroj je zrovna otevřený.
Proč k tomu dochází
Každý nástroj AI čte svůj vlastní soubor, každý soubor se upravuje ručně a nic je nespojuje. V pracovním prostoru s asi dvaceti repozitáři sdílely dva soubory téhož repozitáře od žádného do desetiny obsahu — ne duplikáty, ale disjunktní sady pravidel. Jeden vždy načítaný kontrakt kolísal mezi prázdným a zhruba jedenácti sty řádky během dvou set ručních úprav. Pravidla také chátrají druhým způsobem: hook je zdokumentován jako vynucující, existuje na disku a nic ho nevolá. Sedmnáct takových případů bylo nalezeno, než byl tento nástroj navržen.
Proč to lepší model nevyřeší
Pracovník přečetl svůj instrukční soubor správně. Přečetl špatný, přesněji jeden ze dvou, které byly oba prezentovány jako směrodatné. Žádná schopnost nedokáže pracovníkovi umožnit zjistit, že soubor, který mu nebyl nikdy ukázán, odporuje tomu, který viděl.
Co to stojí
Dva protichůdné kontrakty nevyrobí dvě chování; vyrobí libovolné chování, protože to, který se načte, závisí na tom, který klient byl otevřen. Náprava pak probíhá v review, jedno porušení po druhém, a recenzentova oprava bývá úprava souboru, který má právě před sebou — což mezeru zvětšuje.
Co Majordomus dělá
Existuje jedna kanonická politika, .ai/repo/policy.yaml. majordomus update generuje každý instrukční soubor, který politika jmenuje — CLAUDE.md, AGENTS.md, GEMINI.md nebo jakýkoli cíl, který přidáte — ze stejného těla, deterministicky, a opatří každý hashem politiky a hashem vlastního obsahu. Ruční úpravu zjistí doctor a watch; update ji odmítne přepsat, dokud neuvidíte diff. Vždy načítaný soubor má rozpočet řádků s kontrolou, která selže.
majordomus doctor také sjednocuje seznam vynucování v politice s tím, co skutečně běží: cesta existuje, je spustitelná a volá ji hook, který ji jmenuje, aniž by byl spolknut její exit kód. Deklarováno, ale nezapojeno bylo nejčastější selhání ve zdrojovém materiálu; zde je to selhávající kontrola, uplatněná nejdřív na vlastní hooky tohoto repozitáře.
Před a po
before CLAUDE.md (hand-edited, March)
AGENTS.md (hand-edited, May) disjoint rule sets
after .ai/repo/policy.yaml -> majordomus update -> CLAUDE.md, AGENTS.md, ...
echo "my own rule" >> CLAUDE.md && majordomus doctor
FAIL projection CLAUDE.md — content does not match its stampJak to ověřit
Připojte řádek ke generovanému instrukčnímu souboru a spusťte doctor. Razítko už neodpovídá obsahu a kontrola selže a jmenuje soubor; update odmítne soubor tiše přepsat.
Co nedělá
Promítá záměrně úzkou podmnožinu politiky a vypisuje, co nepromítá. Neslučuje existující ručně psané instrukční soubory; při prvním update rozhodnete, co se přesune do těla politiky. Poskytovatelé, pro které nemá šablonu, dostanou generický Markdown.