Co to znamená
Vše, co Majordomus o repozitáři ví, žije pod .ai/: .ai/manifest.yaml pojmenovává schéma a každou sekci vrstvy, .ai/repo/ drží trackovaný kanonický kontext (politika, profily, pravidla, prompty, workflow, znalosti, projektový model) a .ai/local/ drží vlastní stav tohoto checkoutu. Člověk nebo jiný nástroj může vrstvu číst jen se správcem souborů, protože manifest říká, co je který adresář, a .ai/README.md říká, jak číst.
Princip
lib/init.sh zkopíruje vrstvu z share/skeleton/ai/ a nasadí vendorovaný balíček pravidel; nevytvoří nic mimo .ai/ kromě jednoho ignorovacího řádku v .gitignore, a nenainstaluje žádný hook, žádný shellový soubor ani kopii nástroje. lib/common.sh převádí každou cestu, kterou příkazy čtou nebo zapisují, z manifestu (mj_resolve_layout), takže sekce, kterou manifest nejmenuje, není sekce. doctor selže na sekci, kterou manifest jmenuje a chybí, na klíči manifestu, který nic nečte, a na čemkoli pod .ai/local/, co je sledováno.
Jak to vidět
majordomus init
cat .ai/manifest.yaml # schema: ai-repository/v1, then one line per section
rm -r .ai/repo/workflows
majordomus doctor # FAIL layout .ai/repo/workflows — named by the manifest as section 'workflows' but absentCo nepokrývá
Manifest pojmenovává sekce, ne jejich obsah: soubor pravidla, který se nenačte, nebo profil s neznámým klíčem odhalí kontrola, která ten soubor čte, ne kontrola rozvržení. Nic z toho neříká, zda je kontext ve vrstvě dobrý, jen že je tam, kde manifest říká.
Proč existuje
Alternativou je nástroj, jehož data se dají najít jen jeho spuštěním. Pak je každý jiný nástroj a každý člověk bez spustitelného souboru zamčen venku z provozního kontextu vlastního repozitáře a vrstva nepřežije nástroj, který ji napsal. test/cases/01_init.sh dokazuje čerstvé rozložení soubor po souboru a test/cases/65_tool_root_independence.sh dokazuje, že vrstva je stejná, ať ji čte kterákoli kopie nástroje.