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.

Nic, co klient zanechá, nezamkne jiného klienta ze sdíleného serveru; poškozený, prázdný, zastaralý nebo opuštěný zámek se převezme a pojmenuje, klient, který nemůže sdílet, je obsloužen samostatně s důvodem v logu a signál odstraní zámek dřív, než server zanikne

Lease pod .ai/local/state/mcp/ je jediné, co sdílený server zapisuje, a jediné, co se mezi klienty může pokazit. Ať obsahuje cokoli, když se spustí další majordomus mcp, ten proces dostane server: k živému se připojí, zastaralý (server byl zabit), poškozený (není dokument leasu), prázdný (vlastník zemřel mezi vytvořením a zápisem) nebo opuštěný (žádné URL po lhůtě pro bind) převezme a log říká, o který šlo. Když soubor nelze zapsat ani nahradit vůbec, nebo se sdílený server nedá spustit, je klient obsloužen samostatně přesně tak, jak by ho obsloužilo --standalone, s cannot use the shared server a důvodem v logu; klienta odmítnou jen vlastní chyby vrstvy. Ctrl-C, klient zabíjející svůj server nebo zavírající se terminál odstraní lease dřív, než proces zemře.

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

Volba klasifikuje lease při každém pokusu a je časově omezená; commands/mcp.rs degraduje na samostatnou relaci, když nelze použít lease nebo server; SIGTERM, SIGINT a SIGHUP odpojí lease v handleru. Testy crate v tests/mcp_shared.rs dokazují každou cestu nad skutečnými procesy a případ 90 podstrčí poškozený lease za launcher. Doktrína je project.shared-server-resilience.

Co to znamená

Lease pod .ai/local/state/mcp/ je jediné, co sdílený server zapisuje, a jediné, co se může mezi klienty pokazit. Ať obsahuje při dalším startu majordomus mcp cokoli, ten proces dostane server: živý se připojí, zastaralý (server byl zabit), poškozený (není dokument leasu), prázdný (vlastník zemřel mezi vytvořením a zápisem) nebo opuštěný (po lhůtě pro bind bez URL) se převezme a log uvede, který to byl. Když soubor nelze vůbec zapsat ani nahradit nebo sdílený server nelze spustit, klient je obsloužen sám, přesně jak by ho obsloužil --standalone, s cannot use the shared server a důvodem v logu; klienta odmítnou jen chyby samotné vrstvy. Ctrl-C, klient zabíjející svůj server nebo zavírající se terminál odstraní lease dříve, než proces zemře.

Princip

src/lease.rs při každém pokusu klasifikuje existující lease (živý, zastaralý, poškozený, prázdný, opuštěný, stále platný), převezme každý nepoužitelný a pokus omezuje časem, ne počtem kol; handler SIGTERM, SIGINT nebo SIGHUP odlinkuje zaznamenanou cestu leasu a znovu vyvolá signál. src/commands/mcp.rs promění selhání volby nebo startu v samostatnou relaci (Backend::Alone), a to pro nového klienta i pro most, který nemůže ani převzít, ani se znovu připojit. src/http/server.rs varuje, když vázaná adresa není loopback.

Jak to vidět

just build
# in a checkout where no shared server is running (cat .ai/local/state/mcp/server.json says so)
mkdir -p .ai/local/state/mcp && printf '{not a lease' > .ai/local/state/mcp/server.json
apps/majordomus-cli/target/debug/majordomus mcp < /dev/null
# stderr: corrupt lease: not JSON (...); taking it over ... then: shared server listening on http://127.0.0.1:8741 ...
chmod 555 .ai/local/state/mcp
apps/majordomus-cli/target/debug/majordomus mcp < /dev/null
# stderr: cannot use the shared server: .../server.json: Permission denied ...; serving this client alone ...
chmod 755 .ai/local/state/mcp

Co nepokrývá

kill -9 nelze zachytit, takže lease zůstane k převzetí dalším procesem, což je zastaralý případ výše. Most, který převezme po smrti svého serveru, začíná s prázdnou nástěnkou peerů: oznámení jsou paměť jednoho procesu. Klient HTTP, který odejde bez DELETE /mcp, nechá server, jehož vlastník už odešel, naživu až do idle timeoutu. Klient obsluhovaný sám nemá žádné peery, žádné Swagger UI a žádné URL ve svém initialize, protože není nic sdíleného, na co by ukázal.

Proč existuje

Adversariální sondy sdíleného serveru 2026-09-05 zjistily, že poškozený lease vyřadil všechny klienty s exit 13 a že nezapisovatelný adresář leasů udělal totéž, obojí tiše z pohledu klienta. Pravidlo project.shared-server-resilience a dodatek k .ai/repo/adrs/0003-shared-mcp-server-peers-and-client-autostart.md činí záruku doktrínou; apps/majordomus-cli/tests/mcp_shared.rs dokazuje každou cestu nad skutečnými procesy, rourami a sockety a test/cases/90_mcp_shared_server.sh zasadí poškozený lease za bin/majordomus-mcp a sleduje, že relace uspěje a lease potom zmizí.

Detail vykreslený z docs/claims/mcp-lease-resilience.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Nic, co klient zanechá, nezamkne jiného klienta ze sdíleného serveru; poškozený, prázdný, zastaralý nebo opuštěný zámek se převezme a pojmenuje, klient, který nemůže sdílet, je obsloužen samostatně s důvodem v logu a signál odstraní zámek dřív, než server zanikne

    Vzniklo na Interfaces.

  2. 2 · kanonické tvrzení

    mcp-lease-resiliencedeklarovaný 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

    apps/majordomus-cli/src/lease.rs

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

    Test: apps/majordomus-cli/tests/mcp_shared.rs

    Provedeno v Servírovat vrstvu AI repozitáře každému klientovi AI přes jeden sdílený server.

  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 apps/majordomus-cli/tests/mcp_shared.rs

Související tvrzení stejná implementace

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