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.

I2702 — Checkout si drží jednu adresu napříč restarty, protože jeho server se váže na port odvozený z checkoutu

Navázat port odvozený z identity repozitáře a worktree dříve, než se přejde na volný port, aby konfigurace klienta Streamable HTTP nebo záložka v UI uváděla adresu, která přežije restart.

HOTOVO vlna 1 · p1 · profil implementation · běží samostatně

Součást runtime-lifecycle — Jeden použitelný server na checkout se spouští, připojuje, zastavuje a hlásí svůj stav bez souběhů a skrytých zabití.

Cíl

Navázat port odvozený z identity repozitáře a worktree dříve, než se přejde na volný port, aby konfigurace klienta Streamable HTTP nebo záložka v UI uváděla adresu, která přežije restart.

Proč

Odděleno od I2131 dne 2026-10-14. I2131 způsobil, že se k časovému limitu nečinnosti počítá použití každé plochy, a jeho desired_state říkal „Zde neprovedeno“ o portu odvozeném z identity repozitáře a worktree, zatímco jeho kritéria přijetí jej stále vyžadovala, takže se nikdy nemohl uzavřít. Dne 2026-10-09 živý server žádal o 8741 a sloužil na 61068, adrese, která se mění při každém restartu. Druhá odložená otázka I2131, zda je potřeba vstup nad serve ensure, je rozhodnuta ADR 0135 a plánována jako I2484 a zde se nenese. Audit základní linie ze dne 2026-10-09 na masteru 1fb8d6be44, mezera životního cyklu 9 a drift 10.

Aktuální stav

DEFAULT_PORT je 8741 (apps/majordomus-cli/src/cli.rs); první checkout, který se spustí, ho obsadí, a každý další dostane volný port, když http::server::bind (apps/majordomus-cli/src/http/server.rs) nemůže získat požadovaný, při každém restartu jiný. docs/MCP.md říká, že obsazený port se nahradí volným, a v příkladech ukazuje :8741.

Cílový stav

Server nejdřív žádá o port odvozený z identity repozitáře a worktree, který obsluhuje, takže jeden checkout žádá při každém startu o stejný port a dva checkouty jednoho repozitáře o různé; obsazený port se vrací na volný a obojí se loguje, jako dnes. docs/MCP.md popisuje odvozený port a záložní řešení.

Rozsah

  • apps/majordomus-cli/src/cli.rs
  • apps/majordomus-cli/src/http/server.rs
  • apps/majordomus-cli/src/commands/serve.rs
  • apps/majordomus-cli/src/commands/env.rs
  • apps/majordomus-cli/tests/serve_lifecycle.rs
  • docs/MCP.md

Mimo rozsah

  • Časovač nečinnosti a to, co se počítá jako použití, což dodal I2131
  • Příkaz majordomus ui, o kterém rozhodlo ADR 0135 a který plánuje I2484

Závislosti

Kritéria přijetí

  • Dvě po sobě jdoucí spuštění serveru jednoho checkoutu se navážou na stejný port, pokud je volný
  • Dva checkouty jednoho repozitáře odvodí různé porty
  • docs/MCP.md popisuje odvozený port a záložní řešení

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

  • stable_port_per_checkout_test

Důkazy

pokrývátypcommandvýsledeku commitu
stable_port_per_checkout_testtestcargo test --test serve_lifecycle; bash test/run.sh --no-skips 190_entry_is_automaticserve_lifecycle 17 passed incl. stable_port_per_checkout_test; case 190 ok, 0 skipped (code on master since b3f35a34a5f; re-run at master 01227a0)01227a0

Časová osa

zahájeno
2026-10-17T12:02:17Z
ověřeno
2026-10-17T12:02:47Z
dokončeno
2026-10-17T12:02:56Z

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/I2702.yaml. Přečtěte jej zpět pomocí majordomus plan show I2702.

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