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.

failure-is-visible — Každé selhání, které může runtime utrpět, je omezeno, testováno nebo uvedeno a mění zdraví, které hlásí

Klient na jednom endpointu rozliší běžící od připraveného, od zdravého v meshi, od degradovaného; žádný klient nemůže držet workera za deklarovaný deadline; každá třída selhání v publikované tabulce pojmenovává svůj test nebo deklarované omezení.

AKTIVNÍ 5 of 6 issues done

připraveno
1
blokováno
0
aktivní
0
verify
0
hotovo
5
zrušeno
0

Problém

Readiness zůstává true pro degradovaný index a neví nic o ztraceném lease ani o meshi (apps/majordomus-cli/src/capability/builtin/health.rs:214; was_lost dosáhne jen GET / na apps/majordomus-cli/src/http/router.rs:710); health.report nemá dimenzi meshe (apps/majordomus-cli/src/capability/builtin/health.rs:299); „degraded“ má tři nesouvisející významy. HTTP server čte těla požadavků bez deadline na čtyřech workerech (apps/majordomus-cli/src/http/server.rs:23,208-222), takže čtyři pomalí klienti drží server. Z tříd selhání, které balíček jmenuje, audit našel testy pro SIGKILL, kolizi portu, nezapisovatelný adresář lease a zamrzlého vlastníka a žádné pro plný disk, adresář žurnálu jen pro čtení, pomalého klienta, zamrzlého workera nebo kill mezi vytvořením lease a jeho prvním zápisem; chyby zápisu keep-alive lease jsou polykány (apps/majordomus-cli/src/lease.rs:1058-1060). Předpoklad balíčku o strukturovaném logování je vyvrácen: logování je lidsky čitelný tracing fmt na stderr bez JSON, korelačního id a redakce (apps/majordomus-cli/src/logging.rs:29-37). Doctor nejvyšší úrovně je governance doctor (lib/doctor.sh:53-77). Změřeno v auditu základní hodnoty runtime z 2026-10-09 na master 1fb8d6be44 (plan/RUNTIME_BASELINE.md).

Výsledek

Klient na jednom endpointu rozliší běžící od připraveného, od zdravého v meshi, od degradovaného; žádný klient nemůže držet workera za deklarovaný deadline; každá třída selhání v publikované tabulce pojmenovává svůj test nebo deklarované omezení.

Aktuální stav

Implementováno: /api/v1/live, ohraničená čekání lease na straně klienta, timeouty spojení, meze rozdílu hodin, typované kontroly doktora meshe (apps/majordomus-cli/src/mesh/doctor.rs:93-372). Částečně: připravenost, zdraví, pokrytí tříd selhání. Chybí: deadliny požadavků na straně serveru.

Cílový stav

Tabulka selhání v docs/DEVELOPMENT_RUNTIME.md nemá řádek bez testu nebo omezení, případ odmítne řádek s ani jedním a readiness a health odrážejí každý stav, který runtime o sobě už zná.

Rozsah

  • apps/majordomus-cli/src/capability/builtin/health.rs
  • apps/majordomus-cli/src/http
  • apps/majordomus-cli/src/lease.rs
  • apps/majordomus-cli/src/logging.rs
  • apps/majordomus-cli/src/mesh/doctor.rs
  • apps/majordomus-cli/src/policy.rs
  • .ai/repo/policy.yaml
  • lib/doctor.sh
  • lib/common.sh
  • apps/majordomus-cli/tests/
  • test/cases
  • docs/DEVELOPMENT_RUNTIME.md
  • docs/MCP.md

Mimo rozsah

  • Circuit breakers; audit nenašel důkaz, že je některý opodstatněný.
  • Zásobník metrik nebo odesílání logů; runtime hlásí přes vlastní schopnosti.
  • Odolnost deníku, což je I2137 (mesh-journal-converges).

Kritéria přijetí

  • /api/v1/ready hlásí false s pojmenovaným důvodem po ztrátě leasu
  • health.report nese kontrolu mesh, když je mesh zapnut
  • Pomalí klienti nedrží žádného pracovníka po deklarované lhůtě
  • Každá třída selhání ve zveřejněné tabulce jmenuje test v CI nebo uvedené omezení

Validace

  • bin/majordomus plan validate
  • cargo test --test health_server --test http_serve --test mcp_shared --test lease_busy
  • MJ_TEST_JOBS=4 bash test/run.sh <the cases these issues add>

Požadované důkazy

  • readiness_reflects_state
  • request_deadline_test
  • failure_class_table

Rizika

  • Zpřísnění readiness může způsobit, že kontroly zdraví nasazení selžou tam, kde procházely; blok zdraví fly-deployment čte /api/v1/live a musí to dělat dál.
  • Příliš krátký limit na čtení požadavku rozbije pomalá spojení; musí být deklarován a změřen.

Důkazy

Milník není nikdy hotový tím, že jsou hotové jeho úkoly; poslední krok je jeho vlastní přijetí a podmiňují jej řádky níže.

pokrývátypcommandvýsledek
readiness_reflects_statecigh run view 38635619021 (validate na masteru c0e3585dc8, push): job rust (3) 116098148455 spouští cargo test --test lease_lost --test health_server; job rust (2) 116098148534 spouští test knihovny capability::builtin::health::testssuccess. lease_lost: a_server_that_lost_its_lease_says_so_and_takes_on_nobody_new ok (1 passed; /api/v1/ready false with reason lease_lost); health_server: 7 passed, including an_enabled_mesh_that_runs_is_a_healthy_dimension_as_the_doctor_says, an_enabled_mesh_whose_every_transport_failed_fails_the_dimension_as_the_doctor_does, the_mesh_is_a_dimension_of_health_and_unknown_where_no_server_decided_it; lib: readiness_names_a_degraded_layer_and_is_still_ready, readiness_reports_what_this_process_already_holds, readiness_refuses_a_process_whose_executable_was_removed_under_it ok. Delivered by I2157 (DONE); the run's head is origin/master, so the tested code is the code on master
request_deadline_testcigh run view 38635619021 (validate na master c0e3585dc8, push): job rust (3) 116098148455 spouští cargo test --test http_slow_clientúspěch. http_slow_client: slow_client_released_test ok (pomalí klienti uzavřeni v deklarované lhůtě a započítáni v connections.closed_by_deadline, pátý klient obsloužen), past_the_handler_bound_a_request_is_refused_and_the_probe_is_answered ok (2 prošly, 16,88 s). Lhůta je deklarována jako server.read_deadline_seconds: 30 v .ai/repo/policy.yaml a zdokumentována v docs/MCP.md. Dodáno I2156 (HOTOVO); head běhu je origin/master

Úkoly

Každý z nich je prováděcí kontrakt s vlastními kritérii přijetí, validačním příkazem a požadovanými důkazy. Sloupec wave je vrstva grafu závislostí, v níž úkol leží.

issuestatusvlnazávisí nanázev
I2156 HOTOVO 0 — Pomalý nebo mlčící HTTP klient nemůže držet worker serveru
I2157 HOTOVO 0 — Ready znamená ready: ztracený lease, degradovaná vrstva nebo selhávající mesh se nehlásí jako ready
I2707 HOTOVO 1 I2157 majordomus doctor hlásí zastaralý server, nebo prostě říká, že kontroluje jen governance
I2731 HOTOVO 0 — Každá třída selhání v publikované tabulce selhání jmenuje svůj test nebo uvedené omezení
I2827 HOTOVO 0 — Nástroj napsaný před okamžikem se spustí, až ho jeho autor pustí
I3310 PŘIPRAVENO 0 — majordomus start refuses a task, owner or reason that the task record cannot hold, and writes nothing

Graf

graf závislostí failure-is-visiblez .ai/repo/project
flowchart LR
    I2156["I2156<br/>A slow or silent HTTP client cannot hold a server worker"]:::done
    I2157["I2157<br/>Ready means ready: a lost lease, a degraded layer or a failing mesh is not reported ready"]:::done
    I2707["I2707<br/>majordomus doctor reports a stale server, or says plainly that it checks governance only"]:::done
    I2731["I2731<br/>Every failure class in the published failure table names its test or its stated limitation"]:::done
    I2827["I2827<br/>A tool written a moment ago is run once its writer lets go"]:::done
    I3310["I3310<br/>majordomus start refuses a task, owner or reason that the task record cannot hold, and writes nothing"]:::ready
    I2157 --> I2707
    classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
    classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
    classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
    classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
    classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
    classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px

Kanonický záznam: .ai/repo/project/milestones/failure-is-visible.yaml. Načtěte jej zpět pomocí majordomus plan show failure-is-visible.

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