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.

I2059 — Přebuildování nikdy nenahradí spustitelný soubor, který pojmenovává živý lease

Zabránit vstupnímu bodu, aby přestavěl executable na místě pod běžícím sdíleným serverem, a zařídit, aby server navazující na vystřídaný server navázal na adresu, na které sloužil ten starý, nebo oznámil, že se to nepodařilo.

PŘIPRAVENO vlna 0 · p1 · profil implementation · bezpečné souběžně

Součást development-runtime — The runtime has a development surface.

Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I2059 bude přijato.

Cíl

Zabránit vstupnímu bodu, aby přestavěl executable na místě pod běžícím sdíleným serverem, a zařídit, aby server navazující na vystřídaný server navázal na adresu, na které sloužil ten starý, nebo oznámil, že se to nepodařilo.

Proč

bin/majordomus-cli znovu sestaví apps/majordomus-cli/target/debug/majordomus, kdykoli se zdroje změnily. V primárním checkoutu je tento soubor tím, ze kterého byl sdílený server spuštěn, a od #747 nahrazený spustitelný soubor zruší platnost lease. Dne 2026-10-08 server, který vlastník nařídil spustit na všech rozhraních (0.0.0.0:57547, spuštěn 2026-10-07T18:49Z), ztratil lease v 08:06:32Z: .ai/local/state/mcp/server.log zaznamenává 'superseded lease: the server was started from ... target/debug/majordomus and that file has been replaced since', a to po diagnostickém buildu v primárním checkoutu. Integrátor hlásil totéž po každém spuštění `prs refresh`, `plan` a `drain` z primárního checkoutu po fast-forwardu. Nástupce spustil launcher, jehož prostředí neneslo MAJORDOMUS_HTTP_HOST, takže se navázal na loopback na jiném portu; nové relace dostaly od starého serveru odpověď 409 lease_lost a nikdo nebyl informován, že se adresa změnila. #747 učinil důsledek viditelným. Příčinu neodstranil.

Aktuální stav

Build v checkoutu s připraveným serverem nahradí soubor, který lease pojmenovává. Lease je nahrazen, další launcher spustí nástupce na výchozí adrese a adresa, na které starý server obsluhoval, se nepřenáší ani nezmiňuje.

Cílový stav

Build v checkoutu nechá jeho připravený server připravený na téže adrese, dokud ho něco záměrně nerestartuje: build zapisuje vedle zapůjčeného programu a restart ho vymění, nebo server běží z kopie. Když je server nahrazen, jeho nástupce obsluhuje adresu, kterou starý publikoval, nebo se nahrazení hlásí s oběma adresami na každém povrchu, který hlásí stav serveru.

Rozsah

  • bin/majordomus-cli
  • lib/rust_bin.sh
  • apps/majordomus-cli/src/lease.rs
  • apps/majordomus-cli/src/commands/serve.rs
  • docs/MCP.md
  • test/cases

Závislosti

Žádné. Tento úkol je kořenem grafu.

Kritéria přijetí

  • Sestavení spuštěné v checkoutu, jehož server je připraven, zanechá `serve status` hlásící tento server jako připravený na adrese, kterou měl před sestavením
  • Nástupce spuštěný po nahrazení se naváže na hostitele a port, které publikoval nahrazený lease, nebo `serve status` jmenuje obě adresy a proč se liší
  • Server navázaný přes MAJORDOMUS_HTTP_HOST nebo --host není nahrazen loopback serverem, aniž by to server.log uvedl na řádku

Validace

  • bin/majordomus plan validate
  • MJ_TEST_JOBS=4 bash test/run.sh <the case this issue adds>

Požadované důkazy

  • rebuild_keeps_server_ready_case
  • successor_address_case

Důkazy

Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.

Časová osa

zahájeno
—
ověřeno
—
dokončeno
—

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

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