Co to znamená
Jeden soubor Markdown pod .ai/repo/features/ s front matter platným podle schématu je celý akt přidání funkce do tohoto produktu. Od té chvíle ji ukazuje majordomus product list, vrací GET /api/v1/product/features, dokument OpenAPI popisuje její typ, majordomus://feature/<id> ji servíruje přes MCP, graf product nese její uzly a hrany, matice schopností získá její řádek, web jí dá /features/<id>/ a — pokud se soubor deklaruje jako featured — úvodní stránka nese její kapitolu.
Nic dalšího se nemění. Není třeba upravovat žádný registr, navigační soubor, seznam šablon, datový soubor webu, žádný Rust ani schéma.
Princip
Druh feature je deklarován v share/kinds.yaml se svým JSON Schématem vedle schémat všech ostatních druhů a třída zdroje feature v sources.yaml repozitáře objevuje každý soubor pod sekcí přes index správy verzí. Objevování, parsování front matter, validace schématu, identita, index a zdroj MCP jsou mechanismus, kterým už prochází každý druh vrstvy; produktový model nepřidává žádné vlastní objevování.
apps/majordomus-cli/src/product.rs vyřeší odkazy každého souboru proti indexu, registru schopností, registru příkazů, katalogu Why a topologii webu jednou, když se skládá kontext schopnosti, a každá projekce čte tuto jedinou hodnotu.
Jak to vidět
majordomus product list # every feature, from the files alone
majordomus product show worktrees # one feature, with every relation derived
curl -s localhost:8741/api/v1/product/features | jq '.features | length'
bash test/run.sh 97_product_features # add one file, find it everywhere; remove it, find it gone
test/cases/97_product_features.sh přidá přesně jeden soubor — s ověřením, že staged změna je právě tato jedna cesta a žádná jiná — a pak jej najde v indexu, příkazové řádce, odpovědi JSON, matici, MCP i projekci webu. Poté soubor odstraní a zjistí, že zmizel ze všech, což by skrytý registr kdekoli neprošel.
Co nepokrývá
Funkce, která neprojde validací, se nikde neservíruje: generátor webu odmítne vykreslit produktový model s chybou, místo aby publikoval rozbitou stránku. A nic zde nerozhoduje, zda stojí za to funkci napsat, ani které funkce tvoří pro návštěvníka jeden příběh; toto seskupení je redakční rozhodnutí, které model žádá po člověku.
Proč existuje
Domovská stránka byla posledním povrchem tohoto repozitáře, který ručně uváděl, co produkt dělá. Všechny ostatní povrchy se už staly projekcí jedné deklarace na schopnost a jednoho souboru na objekt vrstvy, takže schopnost přidaná do spustitelného souboru se objevila v referenci API a v Cockpitu v den, kdy vznikla, a na domovské stránce v den, kdy si někdo vzpomněl. Nic nemohlo říct, zda věta na veřejné stránce stále platí.
Cena starého tvaru se platila při každém přidání a hůř, při každé změně: modul, který získal nástroj MCP, neměnil kartu, která říkala „příkazový řádek a HTTP“. Případ je to, co nový tvar drží — jediný přidaný soubor musí dojít do každé projekce a jediný odebraný soubor musí odejít ze všech.