I0906 — Ukončení je řádné a doložené proti skutečnému kontejneru
Obsloužit SIGTERM a SIGINT tak, aby Machine, která se zastavuje, znovu nasazuje nebo automaticky vypíná, dokončila rozpracované odpovědi a skončila v časovém limitu platformy.
PŘIPRAVENO vlna 3 · p1 · profil implementation · bezpečné paralelně
Součást fly-deployment — Image kontejneru je projekcí modelu repozitáře a jeho smoke test je jeho důkazem.
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I0906 bude přijato.
Cíl
Obsloužit SIGTERM a SIGINT tak, aby Machine, která se zastavuje, znovu nasazuje nebo automaticky vypíná, dokončila rozpracované odpovědi a skončila v časovém limitu platformy.
Proč
Profil s autostop a nulovým minimem strojů znamená, že proces je ukončován běžně, ne výjimečně. Server zabitý uprostřed odpovědi činí z každého nasazení a každého nečinného okna zdroj useknutých požadavků.
Aktuální stav
Zastavení je kooperativní pro vlastní volání vlastníka — workeři se odblokují a joinují a rozpracovaná odpověď se dokončí — ale nic to nepojí na signál procesu.
Cílový stav
Ukončovací signál přestane přijímat nová spojení, dokončí, co běží, a skončí v rámci omezeného, zdokumentovaného limitu, což je dokázáno proti produkčnímu kontejneru, ne jen proti unit testu.
Rozsah
- apps/majordomus-cli/src/http/server.rs
- apps/majordomus-cli/src/commands/serve.rs
Mimo rozsah
- Vypouštění stavu aplikace; servírovaná vrstva je jen pro čtení
- Konfigurace kill signálů providera, pokud měření neukáže, že výchozí je špatný
Závislosti
Co na tom čeká
Kritéria přijetí
- SIGTERM i SIGINT zahájí řádné zastavení
- Požadavek rozpracovaný v okamžiku příchodu signálu dostane svou úplnou odpověď
- Proces skončí v dokumentovaném časovém limitu a hlásí neschybový exit
- Chování je prokázáno proti produkčnímu kontejneru, nejen v rámci procesu
Validace
- cargo test --workspace --all-features
- bash test/run.sh
Požadované důkazy
- sigterm_clean
- inflight_finished
- exit_within_timeout
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á.
Riziko
Obsluha signálu, která čeká na neomezené spojení, nikdy neskončí a platforma ji stejně zabije. Timeout je součástí kontraktu a musí být deklarován.
Č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/I0906.yaml. Přečtěte jej zpět pomocí majordomus plan show I0906.