Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Klient, který spustí server MCP z checkoutu bez spustitelného programu nebo bez takového, který lze sestavit, je obsloužen nainstalovaným release a je mu to řečeno, místo aby byl odmítnut

Klient, který spouští MCP server, čeká na handshake, a ten, kdo ho nedostane včas, ohlásí server jako selhaný a pokračuje bez něj, takže relace je tiše jediným workerem repozitáře, který jich má mnoho. Když tento checkout nemá spustitelný soubor, který by šel spustit, nebo ho nedokáže vytvořit, mcp obslouží nainstalovaný release a stderr uvede release i důvod. Nic jiného se nemění: každý další příkaz stále končí kódem 12 a zastaralý spustitelný soubor, který lze přebudovat, se přebuduje.

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

Jen `mcp` má fallback; každý jiný příkaz stále končí kódem 12. Fallback běží po buildu, který mohl uspět, nebo bez něj, když chybí cargo nebo je volného místa méně než práh, a na stderr uvádí release i důvod. Soubor uvnitř repozitáře a soubor, který neodpovídá na --version, se nikdy nepovažuje za nainstalovaný release. MAJORDOMUS_MCP_BUILD=1 vrací build přispěvateli. Relace z 2026-10-16, která začala jako jediný worker repozitáře (ADR 0156), začala právě zde, s kódem 12 při 4,5 GB volných proti prahu 5120 MB.

Co to znamená

Klient, který spouští server MCP, čeká na handshake, a ten, který jej nedostane včas, ohlásí server jako selhavší a pokračuje bez něj, takže relace je tiše jediným pracovníkem repozitáře, který jich má mnoho. Když tento checkout nemá spustitelný soubor, který by spustil, nebo ho nedokáže sestavit, mcp místo toho obslouží nainstalovaný release a stderr jmenuje release a důvod. Nic jiného se nemění: každý jiný příkaz stále skončí s kódem 12 a zastaralý spustitelný soubor, který lze přestavět, se přestaví.

Princip

bin/majordomus-cli mcp rozhoduje dřív, než sestaví. Pokud spustitelný soubor crate chybí, spustí nainstalovaný release (MAJORDOMUS_INSTALLED_BIN, ve výchozím stavu majordomus v ~/.local/bin, kam jej umístí install.sh). Pokud je spustitelný soubor zastaralý, zkusí build jako dřív a vrátí se k release, když není cargo, je méně volného místa než MAJORDOMUS_MIN_FREE_MB (výchozí 5120) nebo build selže. Soubor uvnitř repozitáře se nikdy nepovažuje za nainstalovaný release, stejně jako soubor, který neodpovídá na --version. MAJORDOMUS_MCP_BUILD=1 způsobí, že mcp se staví jako každý jiný příkaz, pro přispěvatele pracujícího na samotném serveru.

Jak to vidět

MAJORDOMUS_NO_BUILD=1 bin/majordomus-mcp --inspect      # with no built executable: serves from the installed release, stderr says why
bash test/run.sh 3177_a_client_always_gets_a_server      # the cases, over stubs of cargo, the free-space floor and the installed release

Co nepokrývá

Neinstaluje release: pokud žádný není nainstalován, launcher selže jako vždy, s exit 12 a příkazem ke spuštění. Nečiní nainstalovaný release buildem checkoutu, takže pracovníka může obsluhovat starší release než zdroje; řádek na stderr říká který. Nespouští tah: relace, která je jen otevřená, stále čeká na první zprávu (session-start-prompt).

Proč existuje

2026-10-16 se otevřela relace v checkoutu, jehož spustitelný soubor nebyl nikdy sestaven, na svazku s 4,5 GB volného místa proti podlaze 5120MB. Launcher sestavení odmítl, skončil 12 a klient hlásil CONNECTION_CLOSED, zatímco release mluvící stejným protokolem servíroval týž checkout na jeho portu. Relace pracovala bez majordomus_peers a majordomus_announce, což je selhání, které popisuje ADR 0156. ADR 0172 rozhodlo o záložní cestě; nese ji project.shared-server-resilience.

Podrobnosti vykresleny z docs/claims/mcp-client-always-served.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Klient, který spustí server MCP z checkoutu bez spustitelného programu nebo bez takového, který lze sestavit, je obsloužen nainstalovaným release a je mu to řečeno, místo aby byl odmítnut

    Žádná funkce ani odpovědnost v README ji nepojmenovává; tato stránka je místo, kde je uvedena.

  2. 2 · kanonické tvrzení

    mcp-client-always-serveddeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si to na tomto webu · docs/MCP.md

  3. 3 · implementace

    bin/majordomus-cli

  4. 4 · test a scénáře

    Test: test/cases/3177_a_client_always_gets_a_server.sh

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 3177_a_client_always_gets_a_server

Prohledává názvy a popisy všech stránek, které tento web publikuje.