Co to znamená
Nástroj, který říká, co umí produkt někoho jiného, činí tvrzení o třetí straně. Tento repozitář jich činil dvě chybně najednou.
majordomus capture status hlásil jednoho ze šesti providerů, které share/providers.yaml deklaruje. Smyčka běžela přes providery s řádkem ve vnitřní shellové tabulce, ta tabulka měla jeden řádek a ostatních pět nebylo hlášeno jako nepodporované — nebylo hlášeno vůbec. Vlastní slovo slovníku pro ně, unsupported, tak bylo nedosažitelné pro jakéhokoli providera, kterého člověk mohl jmenovat, a čtenář, který se ptal, zda tu Codex může zachytávat prompty, dostal ticho, které se čte jako ne.
Mlčení také zastaralo. Do 2026-09-11 vydaly Codex CLI i Gemini CLI úplné systémy hooků — SessionStart, SessionEnd, událost před kompakcí a hook promptu, který se spustí před modelem — a tento nástroj dál tím, že je vynechával, naznačoval, že žádné nemají.
Nyní každý poskytovatel nese blok offers:: co umí v otázce hranice epizody (hooks, connection, none), co umí v otázce zachycení promptů (hook, none) a citaci, ze které byla každá z těchto dvou odpovědí ověřena — URL dokumentace dodavatele, nebo prohlášení, že žádná taková dokumentace neexistuje, spolu s tím, co se hledalo a kdy. Každý povrch, který hlásí schopnosti poskytovatele, je projekcí této jediné deklarace, a každý povrch, který poskytovatele vyjmenovává, vyjmenovává všechny.
Princip
share/providers.yaml je deklarace. share::ProviderDeclaration ji parsuje, přičemž dvě slova schopností se deserializují přímo do enumů, takže slovo mimo slovník shodí čtení celého souboru s uvedenou cestou, místo aby degradovalo na none. product::ProductProvider ji nese a odtud z ní bez vlastního řádku vyplývají příkazová řádka (majordomus product providers), GET /api/v1/product/providers, nástroj majordomus_providers, zdroj majordomus://product/providers, docs/generated/providers.{json,yaml} i produktový dataset webu.
majordomus capture status čte tutéž deklaraci a spojuje ji se stromem, přes sjednocení deklarovaných providerů a tabulek adaptérů. Hlásí dva fakty na aspekt a nikdy je nesloučí do jednoho: schopnost, která je výrobcova, s citací jako důvodem; a stav, který je stavem tohoto checkoutu. Slovník stavů pro to spojení získal šesté slovo. unsupported je nyní vyhrazeno pro providera, který danou věc neumí vůbec; unadapted je poctivé jméno pro providera, který událost dokumentuje, zatímco tato distribuce pro ni adaptér nedodává — mezeru v nástroji, pojmenovanou jako mezera.
Jak to vidět
majordomus capture status
# claude-code hook verified .claude/hooks/majordomus-capture is wired, and …
# codex hook unadapted the provider documents a prompt event and this
# distribution ships no adapter for it —
# https://learn.chatgpt.com/docs/hooks — UserPromptSubmit …
# generic:session connection verified bin/majordomus-mcp is in place and a synthetic attach …
majordomus product providers # the EPISODE and PROMPTS columns, from the same declaration
majordomus --json capture status | jq '.providers[] | {provider, aspect, capability, state, evidence}'
scripts/provider-evidence-check # the gateCo nepokrývá
Zda je citace pravdivá. Žádná kontrola nemůže sledovat URL a číst stránku dodavatele, a ta, která by to zkusila, by selhala na každém offline stroji a každém CI runneru bez sítě — špatná výměna pro blokující kontrolu (project.blocking-checks-cheap). Vynucuje se, že někdo musel něco zapsat, což je celý rozdíl mezi ověřenou odpovědí a odhadem. Opětovné ověření je práce člověka a datum v každé citaci říká, kdy bylo naposledy provedeno.
Adaptéry pro Codex a Gemini. Schopnost je deklarována a citována; adaptér není napsán. Každý potřebuje zapisovatele formátu konfigurace, který tento nástroj dnes nezapisuje — tabulku TOML [hooks], blok JSON hooks — a každý nese výhrady, které musí adaptér zakódovat: Gemini nečeká na SessionEnd, jeho PreCompress nemůže blokovat, SessionEnd.reason Codexu je konstantní other. unadapted je trvalý, viditelný záznam této mezery a záměrně není mlčením.
Proč existuje
Obě původní selhání měla jednu příčinu: deklarace neměla kam zapsat, odkud odpověď pochází. Schopnost tvrzená bez citace nelze proti světu zkontrolovat, takže ji nic nekontroluje a tiše hnije tím směrem, kterým se svět pohnul — a zde hnila oběma směry najednou, podhodnocovala pět providerů vynecháním a nadhodnocovala vlastní znalost nástroje implikací. scripts/provider-evidence-check odmítne deklaraci s chybějící schopností, slovem mimo slovník, prázdnou citací nebo providerem, kterého capture status nehlásí; test/cases/200_generic_mcp_episode.sh drží kontrolu u jejího vlastního negativu, protože kontrola, kterou nikdo nikdy neviděl selhat, je kontrola, jejímuž smyslu nikdo nerozumí. Rozhodnutí je ADR 0103 a pravidlo je project.a-provider-capability-cites-its-evidence.