Které modely AI existují pro svět tohoto nástroje, co každý umí a který z nich vybírá uvedená potřeba — jako deklarovaná data. ADR 0049 je rozhodnutí; share/models.yaml je celá deklarace; apps/majordomus-cli/src/models/ je implementace. Nic zde nevolá model, nedrží SDK ani nečte hodnotu přihlašovacího údaje: hranice bez sítě z ADR 0032 platí a co nelze ověřit, chybí, místo aby se hádalo.
Slovník
Dodavatel je strana, která obsluhuje modely — vzdálená (API) nebo lokální (runtime na stroji). Slovo „provider“ se záměrně nepoužívá: ADR 0024/0032 jej vyčerpaly na klientské nástroje AI (share/providers.yaml) a jedno slovo pro dva registry je způsob, jak se pravdy rozvětvují. Model je kanonická reference: id, které jmenují záznamy a konfigurace tohoto repozitáře, vlastní native_id dodavatele za ním, aliasy, které se k němu vyřeší, typovaná slova schopností, kontextové okno a stav životního cyklu.
Deklarace
share/models.yaml, v přesném zrnu providers.yaml: jeden soubor, pořadí deklarací má význam (je to pořadí preferencí směrování), fakta s proveniencí uvedenou v hlavičce souboru. Tři záměrné absence:
- Žádné ceny. Cenu, kterou nástroj nemůže ověřit naživo, nesmí uvádět jako fakt.
- Žádní neověření dodavatelé. Záznam vstoupí, když ho mohla ověřit pojmenovaná reference.
- Žádná tajemství.
credential_envvendora jmenuje proměnnou prostředí; hlásí se vždy jen její přítomnost a test drží, že schéma katalogu nemá žádnou vlastnost, v níž by se mohla skrýt hodnota přihlašovacího údaje.
Povrchy
Dvě schopnosti, každá s jednou deklarací, každý povrch je projekce:
majordomus models list [--vendor V] [--capability C] [--id NAME]
majordomus models route [--require a,b] [--min-context N] [--vendor V] [--local-only] [--model NAME]
GET /api/v1/models GET /api/v1/models/route
majordomus_models majordomus_models_route (MCP tools)
majordomus://models (MCP resource)
/cockpit/models (the Cockpit's Models page)
models.list odpovídá katalogem — zúžitelným, s přítomností přihlašovacích údajů každého dodavatele a vlastními nálezy katalogu (duplicitní alias, nedeklarovaný dodavatel). models.route odpovídá na potřebu.
Směrování
Směrování je čistá funkce nad deklarovanými daty. Požadavky: slova schopností (všechna povinná), minimální kontextové okno, dodavatel, local_only nebo přímo pojmenovaný model — který se přesto kontroluje proti ostatním, takže přepsání, které práci nezvládne, je vyloučení s důvodem, nikoli tichý výběr. Rozhodnutí:
- selected — první model v pořadí deklarace splňující všechny požadavky, s důvodem;
- fallbacks — kvalifikovaný zbytek, v pořadí: řetěz, kterým volající prochází, když vybraný model selže na straně volajícího (tento nástroj nemá živou vrstvu, která by mohla selhat);
- excluded — každý nekvalifikující se model s první kontrolou, kterou nesplnil, v pevném pořadí kontrol (named-outright, lifecycle, vendor, locality, capabilities, context).
status modelu je volitelné. Záznam, který žádné nedeklaruje, má nedeklarovaný stav, což není totéž co available: pole pak ve všech výstupech chybí (ModelEntry.status nenese výchozí hodnotu), směrování model stále zvažuje a žádný povrch ho nesmí vykreslit jako dostupný za katalog. Čtenář, který se spoléhal na to, že status je vždy přítomno, bere jeho absenci jako nedeklarovanou.
Zastaralé a vyřazené modely jsou vyloučeny, pokud nejsou výslovně jmenovány. Neexistuje žádný člen o zdraví, zátěži ani ceně — nic, co by tento nástroj nedokázal obhájit. Zeptáte-li se dvakrát na totéž, dostanete dvakrát stejnou odpověď; --format json je totéž rozhodnutí, které obsluhuje HTTP trasa a nástroj MCP.
Čím toto zatím není
Zaznamenání toho, který model skutečně provedl práci relace, patří adaptérům zachytávání a životního cyklu — jejich schéma (capture.v1) už deklaruje volitelná pole model, effort a tokens a dnes je nic nevyplňuje (docs/ECONOMICS.md to označuje za chybějící polovinu). Živé zjišťování modelů přes API dodavatelů, sledování stavu a spotřeby by každé vyžadovalo síťovou vrstvu, kterou tento crate záměrně nemá; ADR 0049 pojmenovává dvě přípustné podoby, jaké by takové řešení mohlo mít (vnější vrstva zapisující soubory, které crate čte, nebo nové ADR, které přehodnotí postoj ADR 0032). Do té doby je katalog poctivá, verzovaná a přezkoumatelná data.