I2987 — server.status a peers.list se ptají všech checkoutů najednou, omezeného počtu naráz
Přimět čtení celého repozitáře `server.status` a `peers.list`, aby se na checkouty, které git eviduje, ptala souběžně, nejvýše `server::ASKED_AT_ONCE` (16) najednou, přes jednoho pomocníka (`server::each_checkout`). Odpovědi se skládají v pořadí, v jakém git checkouty vypisuje, takže výstup, jeho pořadí a `complete` jsou to, co dávala smyčka po jednom. Každý probe zůstává omezen deklarovaným timeoutem probe, takže čekání jsou jen několik timeoutů bez ohledu na počet checkoutů.
HOTOVO vlna 0 · p1 · profil implementation · bezpečné souběžně
Cíl
Přimět čtení celého repozitáře `server.status` a `peers.list`, aby se na checkouty, které git eviduje, ptala souběžně, nejvýše `server::ASKED_AT_ONCE` (16) najednou, přes jednoho pomocníka (`server::each_checkout`). Odpovědi se skládají v pořadí, v jakém git checkouty vypisuje, takže výstup, jeho pořadí a `complete` jsou to, co dávala smyčka po jednom. Každý probe zůstává omezen deklarovaným timeoutem probe, takže čekání jsou jen několik timeoutů bez ohledu na počet checkoutů.
Proč
Terénní zpráva adoptéra z 0.29.0 (prismatic-platform, 2026-10-18, položka 5) změřila, že `/api/v1/server` s výchozím `checkouts=repository` blokuje 30 s i déle, zatímco `/` odpovídá za 0,5 ms, a `serve status` selhává s `Resource temporarily unavailable (os error 35)`, při asi 58 procesech `serve` na stroji. Obě schopnosti četly lease každého checkoutu a sondovaly jeho server jeden po druhém, takže jeden zaseknutý server přidal plný timeout sondy na checkout. Brief hlásí 545 nástěnek na tomto stroji a blackboard (I2980) je čte stejným gather.
Aktuální stav
server_status a peers_list procházejí checkouty sekvenčně; čekání je součet všech sond.
Cílový stav
Checkouty se ptají po šestnácti a odpověď je stejná, ve stejném pořadí.
Rozsah
- apps/majordomus-cli/src/capability/builtin/server.rs
- apps/majordomus-cli/src/capability/builtin/peers.rs
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- Každý checkout je obsloužen v daném pořadí, více se jich dotazuje najednou, nikdy ne více než ASKED_AT_ONCE (unit test every_checkout_is_asked_at_once_and_answered_in_order)
- Stávající unit testy serveru a peers a jejich případy procházejí beze změny
Validace
- cargo test --lib -- capability::builtin::server
- cargo test --lib -- capability::builtin::peers
Požadované důkazy
- unit_checkouts_at_once
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| unit_checkouts_at_once | ci | validate run 39438896504 at master 9a5a9b77520: rust (1-3) jobs 118683336143 118683336062 118683336401 run cargo test, incl. capability::builtin::server::every_checkout_is_asked_at_once_and_answered_in_order (baadbbfb025) | success (the run's only red job is pages, which runs no test) | a81b1e3 |
Časová osa
- zahájeno
- 2026-10-20T16:18:04Z
- ověřeno
- —
- dokončeno
- 2026-10-20T16:32:59Z
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/I2987.yaml. Načtěte ho zpět pomocí majordomus plan show I2987.