Co to znamená
Rust executable má jedno místo, kde schopnost existuje: registr složený v apps/majordomus-cli/src/app.rs z executables uvedených v capability/builtin.rs a z každého objektu vrstvy repozitáře. Dvě definice nárokující jedno kanonické id, dvě schopnosti nárokující jedno jméno nástroje MCP nebo URI zdroje, jednu metodu a cestu HTTP nebo jednu cestu CLI, trasa mimo /api/v1/, jméno nástroje mimo [a-z0-9_]+ nebo spustitelná expozice u plánované schopnosti: registr se nesestaví, každé porušení je vypsáno s proveniencí obou stran a žádné rozhraní se neservíruje.
Princip
capability/registry.rs seřadí čekající deskriptory podle id a provenience, každý validuje proti tomu, co už drží, shromáždí všechny chyby a vrátí buď registr, nebo seznam. majordomus capabilities validate spustí stejný build a vytiskne jeden řádek OK na invariant, nebo skončí 10 se seznamem; mcp, serve a generate odmítnou nastartovat při týchž chybách.
Jak to vidět
majordomus init && git add -A && git commit -qm install
apps/majordomus-cli/target/debug/majordomus capabilities validate
vypíše řádky registru, MCP, HTTP a OpenAPI, každý OK. Duplicitu ukazuje vlastní sada testů crate (cargo test --test registry), která sestaví registry se stejným id ze dvou zdrojů v Rustu a z Rustu a vrstvy a obě provenience přečte z chyby.
Co nepokrývá
Jedinečnost platí pro registr, tedy pro repozitář a proces: dva repozitáře mohou každý deklarovat rule.project.alpha@1. Registr kontroluje názvy a tvary, ne pravdivost popisu.
Proč existuje
Čtyři rozhraní nad jedním chováním, každé s vlastní tabulkou, driftují při první úpravě; registr, který odmítne sestavení při kolizi, činí drift nemožným, ne jen zjistitelným. test/cases/76_capabilities_projections.sh validuje registr nad repozitářem, který zapsal init shellového nástroje; apps/majordomus-cli/tests/registry.rs pokrývá každou kolizi a odmítnutí.