Co se změnilo ve verzi 2 a proč
Version 1 declared two capabilities. On 2026-10-21 the owner asked for the Claude, browser extension and browser integration to work by itself, be described and be enforced, and a session found that the one path that drives a page and the live mesh in one session — Claude Code with the Claude in Chrome bridge — was declared nowhere and noticed by nothing: the bridge was unconnected and the only way to learn it was to call a browser tool and read the error. Whether a provider's client drives a browser beside this server is a claim about the vendor's product of exactly the kind this rule governs, so it is a third axis with its own citation, not a paragraph in a document. A bridge also names its native messaging host, which is how preflight sees that a machine has it, and the step a person takes to install it, which is what preflight says when it does not: a project cannot turn the bridge on, so naming the step is the whole of what the repository can do (I3829).
Zdůvodnění
Nástroj, který říká, co umí produkt někoho jiného, činí tvrzení o třetí straně, a tento repozitář jich udělal dvě špatně najednou.
majordomus capture status procházelo poskytovatele po řádcích interní shellové tabulky. Ta tabulka měla jeden řádek. share/providers.yaml deklaruje šest poskytovatelů, takže pět z nich nebylo hlášeno jako nepodporovaných — nebylo hlášeno vůbec — a vlastní slovo slovníku pro ně, unsupported, bylo nedosažitelné pro každého poskytovatele, kterého šlo pojmenovat. Čtenář, který se ptal, zda Codex zde umí zachytávat prompty, dostal ticho a ticho se čte jako ne.
Mlčení bylo navíc zastaralé. Komentář nad tou tabulkou uváděl, že provider, který v ní chybí, „nemá zdokumentovanou událost, která předá prompt osoby příkazu před spuštěním modelu“. Do 2026-09-11 vydaly Codex CLI i Gemini CLI kompletní systémy hooků — SessionStart, SessionEnd, událost před zhuštěním kontextu a hook promptu, který se spustí před modelem — a tento nástroj dál vynecháním naznačoval, že žádné nemají.
Obě selhání mají 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. Schopnost, která nese svou citaci, může kdokoli znovu ověřit za minutu a buňku, kterou nikdo nemůže citovat, by nikdo neměl psát.
Druhá polovina pravidla je obyčejný argument projekce, který toto repozitář uplatňuje všude jinde. Jedna deklarace, každý povrch čtenářem: příkazová řádka, trasa HTTP, nástroj a zdroj MCP, vygenerované dokumenty a web. Provider přidaný úpravou šesti povrchů je provider, o kterém se šest povrchů nakonec rozejde.
Požadované chování
share/providers.yaml is the one declaration. Each provider entry carries an offers:
block with six keys, and a bridge two more:
episode—hooks(poskytovatel spouští vlastní události relace),connection(žádné nespouští a hranicí je spojení MCP), nebonone(nic žádnou nemůže vytvořit);prompts—hook(předá surový prompt příkazu dřív, než model běží) nebonone;browser—bridge(its client drives a browser through a vendor extension whose tools arrive in the same session as this repository's MCP server) ornone; a vendor's own browser agent that reaches only the vendor's cloud is not a bridge;episode_evidence,prompts_evidenceandbrowser_evidence— where each was verified: a vendor documentation URL, or the statement that no such documentation exists together with what was searched for it and when.
All three evidence strings are required and non-empty, for every value including none. An
absence verified is a finding; an absence assumed is a guess wearing a finding's clothes,
and the two must not look alike.
A provider that declares browser: bridge also declares browser_host, the native messaging
host the bridge registers with a Chromium browser, and browser_setup, what a person does
once to install it. Preflight reports, for a provider whose client configuration is in the
checkout, whether this machine has that host, and names the step when it does not; it is a
finding, never a failure, because the step is the person's and not the repository's.
Slovo mimo oba slovníky selže při čtení celého souboru a pojmenuje se. Nikdy se nepovažuje za none.
Každý povrch, který hlásí, co provider umí, je projekcí této deklarace a nedrží o tom žádný druhý výklad. Každý povrch, který providery vyjmenovává, vyjmenovává všechny: provider, který deklarace jmenuje, je hlášen se svým stavem, nikdy vynechán proto, že je ve stavu, který hlásič shledá nezajímavým.
Schopnost není zapojení a nikdy se tak nehlásí. Co provider umí, pochází z této deklarace; co s tím tento repozitář udělal, se počítá ze stromu; a provider, který dokumentuje událost, pro kterou tato distribuce nedodává adaptér, je unadapted — mezera v nástroji, jmenovaná jako taková — nikdy unsupported, což je tvrzení o providerovi.
Chování při selhání
scripts/provider-evidence-check exits non-zero naming each provider, each aspect and each
reason: a missing offers block, an empty citation, a value outside the vocabulary, a bridge
without its host or its setup step, or a
provider the declaration names that majordomus capture status does not report. The
repository's CI runs it as a gate; it is not advisory.
Ověření
scripts/provider-evidence-check over the committed tree, run by CI.
test/cases/200_generic_mcp_episode.sh proves that capture status reports every declared
provider with its capability and its evidence, that a provider with no adapter is
unadapted rather than unsupported, and that the whole connection lifecycle the
connection capability claims actually runs over the real transport.
apps/majordomus-cli/src/share.rs's own suite proves that a word outside the vocabulary
fails the read rather than degrading. apps/majordomus-cli/tests/provider_browser.rs proves the
browser axis end to end in-process: the declaration, the refusal of an unknown word, the
preflight finding with and without the host on a laid-out home, and the providers document's
column; test/cases/3829_a_provider_declares_its_browser_bridge.sh holds the gate to its own
negative.