Co to znamená
Pravidlo s klíčem, který povolený seznam nezná, front matter, který se nikdy neuzavře, politika deklarující verzi, kterou spustitelný soubor nečte, symlink, soubor, který není UTF-8: každé z toho je vyloučeno z toho, co se servíruje, a každé vytvoří jednu diagnostiku se stabilním kódem a cestou relativní k repozitáři, na stderr při startu a v majordomus://repository pro klienta. Index hlásí degraded, initialize to uvádí ve svých instrukcích, mcp --inspect skončí kódem 10 a mcp --strict odmítne servírovat vůbec. Dva soubory jednoho druhu nárokující jednu identitu jsou oba vyloučeny a oba pojmenovány.
Princip
src/index.rs rozhoduje politiku na jednom místě: manifest a sources.yaml jsou chyby, protože bez nich nelze nic objevit; každý jiný soubor, který se nemůže stát objektem, se stane Diagnostic s kódem z uzavřeného seznamu (malformed_front_matter, unknown_key, duplicate_identity, unsupported_version, missing_field, kind_mismatch, unknown_kind, invalid_utf8, oversized, symlink, required_source_empty a zbytek v README aplikace). Nic se neopravuje, nedoplňuje výchozími hodnotami ani nenormalizuje.
Jak to vidět
printf -- '---\nid: project.broken\nversion: 1\n' > .ai/repo/rules/project/broken.v1.md
git add -A
apps/majordomus-cli/target/debug/majordomus mcp --inspect | grep -E '^(state|FAIL)'
vypíše state degraded a FAIL malformed_front_matter .ai/repo/rules/project/broken.v1.md — front matter opened on line 1 and never closed.
Co nepokrývá
Degradovaná vrstva se ve výchozím nastavení stále obsluhuje; klient, který nesmí vidět částečnou vrstvu, předá --strict. Diagnostika říká, co je se souborem špatně, ne jak by jej posoudilo doctor shellového nástroje: doctor zůstává kontrolou, toto je čtenářův popis toho, co dokázal přečíst.
Proč existuje
Server, který by přeskočil to, co nedokázal přečíst, by vypadal zdravě, a přitom by obsluhoval méně, než repozitář deklaruje; právě proti tomu se no-claim-without-test a derived-not-declared všude jinde brání. apps/majordomus-cli/tests/metadata_contract.rs vyrobí každý výše uvedený kód z fixture; test/cases/72_rust_mcp.sh poruší jedno pravidlo v repozitáři, který napsal init, a ověří stav i cestu.