I2131 — Server používaný přes Cockpit nebo HTTP se nezastaví jako nečinný a checkout si drží jednu adresu
Započítat použití každého povrchu do časového limitu nečinnosti a navázat port odvozený z identity checkoutu, než se sáhne po náhodném.
HOTOVO vlna 0 · p1 · profil implementation · běží samostatně
Cíl
Započítat použití každého povrchu do časového limitu nečinnosti a navázat port odvozený z identity checkoutu, než se sáhne po náhodném.
Proč
„Připojeno“ znamená pouze relace MCP HTTP (apps/majordomus-cli/src/shared.rs:250-253) a smyčka serve --idle se po 900 s bez jedné zastaví (apps/majordomus-cli/src/commands/serve.rs:128-146). Člověk, který používá jen Cockpit, REST nebo WebSocket /events, se nepočítá, takže server orientovaný na UI se zastaví 15 minut po zahájení prohlížení. Výchozí port 8741 (apps/majordomus-cli/src/cli.rs:3301) dostane jeden checkout a každý další přejde na náhodný port (apps/majordomus-cli/src/http/server.rs:77-86): 2026-10-09 živý server žádal o 8741 a obsluhuje 61068, adresu, která se mění při každém restartu, takže konfigurace klienta Streamable HTTP ani záložka Cockpitu nemají nic stabilního, co by pojmenovaly. docs/MCP.md:29 ukazuje :8741, jako by to byla norma. Příkaz majordomus ui neexistuje; serve ensure a env enter jsou vstupy orientované na UI (apps/majordomus-cli/src/commands/serve.rs:481-576, apps/majordomus-cli/src/commands/env.rs:701-760) a fungují bez stdio (případ 190_entry_is_automatic.sh). Výchozí audit z 2026-10-09 na master 1fb8d6be44, mezera životního cyklu 9 a drift 10.
Aktuální stav
Server bez relace MCP se zastaví při svém timeoutu nečinnosti, ať jej používá cokoli jiného. Každý checkout kromě jednoho obsluhuje na náhodném portu.
Cílový stav
Časovač nečinnosti počítá jako použití připojenou relaci MCP, požadavek HTTP zodpovězený za poslední sekundu (http::server::used_within) a otevřený kanál /events, takže Cockpit, REST API a sledované provedení svůj server udrží. Odložená část, port odvozený z identity repozitáře a worktree, je I2702; zda je potřeba vstup nad rámec serve ensure, rozhoduje ADR 0135 a plánuje se jako I2484.
Rozsah
- apps/majordomus-cli/src/shared.rs
- apps/majordomus-cli/src/commands/serve.rs
- apps/majordomus-cli/src/http/server.rs
- apps/majordomus-cli/src/http/events.rs
- apps/majordomus-cli/src/cli.rs
- apps/majordomus-cli/tests/serve_lifecycle.rs
- docs/MCP.md
- docs/COCKPIT.md
Mimo rozsah
- Přidání příkazu majordomus ui dřív, než záznam tohoto úkolu rozhodne, že je potřeba.
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
Kritéria přijetí
- Server s otevřeným WebSocketem /events a bez relace MCP po vypršení nečinnosti stále běží a zastaví se do jednoho timeoutu po zavření socketu
Validace
- bin/majordomus plan validate
- cargo test --test serve_lifecycle
- MJ_TEST_JOBS=4 bash test/run.sh 190_entry_is_automatic
Požadované důkazy
- ui_use_keeps_server_alive_test
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| ui_use_keeps_server_alive_test | test | cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test serve_in_use a_server_watched_over_its_live_channel_outlives_its_idle_timeout_and_ends_once_it_closes | test result: ok. 2 passed; 0 failed (whole file) (run 2026-10-14 12:00-12:15Z on master 2ca25bb9cf plus this change) | 2ca25bb |
Časová osa
- zahájeno
- 2026-10-14T12:15:51Z
- ověřeno
- —
- dokončeno
- 2026-10-14T12:16:31Z
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Kanonický záznam: .ai/repo/project/issues/I2131.yaml. Přečtěte ho zpět pomocí majordomus plan show I2131.