I2157 — Připraveno znamená připraveno: ztracený lease, degradovaná vrstva nebo selhávající mesh se nehlásí jako připraveno
Zahrnout ztrátu lease a zhoršený index do readiness s pojmenovaným důvodem, přidat kontrolu meshe do health.report a zařídit, aby majordomus doctor hlásil runtime nebo řekl, že ne.
HOTOVO vlna 0 · p1 · profil implementation · běží samostatně
Cíl
Zahrnout ztrátu lease a zhoršený index do readiness s pojmenovaným důvodem, přidat kontrolu meshe do health.report a zařídit, aby majordomus doctor hlásil runtime nebo řekl, že ne.
Proč
Readiness (apps/majordomus-cli/src/capability/builtin/health.rs:214, GET /api/v1/ready) kontroluje neprázdný registr a to, že kód nebyl nahrazen; degradovaný index zůstává ready:true s layer: warn a stav mesh a ztráta lease chybí: was_lost() dosáhne jen na GET / přes LEASEHOLDER_KEY (apps/majordomus-cli/src/http/router.rs:710). health.report (apps/majordomus-cli/src/capability/builtin/health.rs:299) nemá dimenzi mesh ani dimenzi povolenou politikou; zdraví mesh žije jen v mesh.status, mesh doctor a mesh verify. Běžící, připravený, zdravý v mesh a degradovaný jsou rozděleny mezi /live, /ready, server.standing_at (apps/majordomus-cli/src/capability/builtin/server.rs:403), MeshStatus, index::State::Degraded (apps/majordomus-cli/src/index.rs:34) a LinkState::Degraded (apps/majordomus-cli/src/mesh/cooperation.rs:265). Nejvyšší majordomus doctor je governance doctor (lib/doctor.sh:53-77), který nekontroluje nic o serveru, lease ani mesh, ačkoli to jeho název naznačuje. Audit základní linie ze dne 2026-10-09 na masteru 1fb8d6be44, mezera selhání 10 a předpoklad 4.
Aktuální stav
Server, který ztratil lease nebo servíruje degradovaný index, odpovídá na /api/v1/ready s ready true.
Cílový stav
GET /api/v1/ready odpoví ready false po ztrátě lease, s důvody jmenujícími lease_lost (a stale, jako dříve); degradovaná vrstva je uvedena jako layer_degraded a zůstává ready, což docs/MCP.md říká; health.report nese kontrolu meshe, která aplikuje runtime verdikt mesh doctor (doctor::runtime_verdict) v procesu, jehož server o meshi rozhodl, a jinde hlásí unknown. Odložená část, majordomus doctor hlásící runtime nebo říkající, že kontroluje jen governance, je I2707.
Rozsah
- apps/majordomus-cli/src/capability/builtin/health.rs
- apps/majordomus-cli/src/http/router.rs
- apps/majordomus-cli/src/lease.rs
- apps/majordomus-cli/src/mesh/doctor.rs
- lib/doctor.sh
- apps/majordomus-cli/tests/health_server.rs
- docs/MCP.md
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
Kritéria přijetí
- Server, který ztratil lease, odpovídá na /api/v1/ready s ready false a důvodem lease_lost
- Degradovaný index je hlášen na /api/v1/ready se svým důvodem a docs/MCP.md říká, zda to je ready
- health.report nese kontrolu mesh, jejíž stav následuje verdikt mesh doctor, když je mesh zapnutý
Validace
- bin/majordomus plan validate
- cargo test --test health_server --test lease_lost
Požadované důkazy
- ready_false_on_lease_loss_test
- health_mesh_check_test
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| ready_false_on_lease_loss_test | test | cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test lease_lost | test result: ok. 1 passed; 0 failed (běh 2026-10-14 12:00-12:15Z na masteru 2ca25bb9cf plus tato změna) | 2ca25bb |
| health_mesh_check_test | test | cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test health_server && cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --lib capability::builtin::health::tests::readiness_names_a_degraded_layer_and_is_still_ready | test result: ok. 7 passed; ok. 1 passed; docs/MCP.md říká, že layer_degraded nečiní server nepřipraveným (běh 2026-10-14 12:00-12:15Z na master 2ca25bb9cf plus tato změna) | 2ca25bb |
Časová osa
- zahájeno
- 2026-10-14T12:15:59Z
- ověřeno
- —
- dokončeno
- 2026-10-14T12:16:39Z
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/I2157.yaml. Přečtěte jej zpět přes majordomus plan show I2157.