I2700 — Sonda lease se ptá na levnou routu živosti a server držící jiný token lease se nepovažuje za držitele lease
Nasměrovat sondu lease na routu liveness, která odpovídá bez vyřešení indexu a nese id repozitáře, držitele lease a otisk tokenu lease, a proces, jehož otisk se liší od otisku lease, posoudit jako ne-držitele lease.
PŘIPRAVENO vlna 1 · p1 · profil implementation · běží samostatně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I2700 bude přijato.
Cíl
Nasměrovat sondu lease na routu liveness, která odpovídá bez vyřešení indexu a nese id repozitáře, držitele lease a otisk tokenu lease, a proces, jehož otisk se liší od otisku lease, posoudit jako ne-držitele lease.
Proč
Odděleno od I2126 dne 2026-10-14. I2126 dodal polovinu o vytížené sadě (každý požadavek je obsloužen na vlastním vlákně až do MAX_HANDLERS) a jeho desired_state o trase sondy živosti a kontrole tokenu říkal „Not done here“, zatímco jeho kritéria přijetí stále vyžadovala obojí, takže se nikdy nemohl uzavřít. Sonda se stále ptá GET /, nejdražší trasy, a porovnává name, repository_id a leaseholder, ale ne token lease, pid ani started_at, takže jiný proces odpovídající na GET / pro tentýž repozitář je považován za držitele lease. Výchozí audit z 2026-10-09 na masteru 1fb8d6be44, řádek fencingu.
Aktuální stav
lease::ask (apps/majordomus-cli/src/lease.rs, za lease::probe, lease::probe_reply a lease::probe_patiently) odešle GET / a porovná name, repository_id a klíč držitele zámku v indexovém dokumentu. Dokument zámku nese token (apps/majordomus-cli/src/lease.rs, LeaseDocument.token), který žádná odpověď nezveřejňuje. /api/v1/live a /api/v1/ready existují (apps/majordomus-cli/src/capability/builtin/health.rs) a sonda nepoužívá ani jedno.
Cílový stav
Sonda lease se ptá živostní trasy, která odpovídá bez vyhodnocení indexu; odpověď nese id repozitáře, zda proces drží lease, a digest tokenu lease, který drží, nikdy samotný token; sonda, která uslyší jiný digest než ten lease, který četla, usoudí, že odpovídající není držitelem lease. docs/MCP.md jmenuje trasu a porovnání.
Rozsah
- apps/majordomus-cli/src/lease.rs
- apps/majordomus-cli/src/http/router.rs
- apps/majordomus-cli/src/capability/builtin/health.rs
- apps/majordomus-cli/tests/lease_busy.rs
- test/cases
- docs/MCP.md
Mimo rozsah
- Jak se požadavky předávají vláknům handlerů a MAX_HANDLERS, což dodal I2126
Závislosti
Kritéria přijetí
- Sonda leasu se ptá trasy živosti, ne GET /, a odpověď nese id repozitáře, držitele leasu a digest tokenu leasu
- Proces, který na sondu odpoví digestem tokenu jiným než digest lease, je posouzen jako ne držitel lease
Validace
- bin/majordomus plan validate
- cargo test --test lease_busy --test mcp_shared
Požadované důkazy
- probe_compares_the_token_test
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/I2700.yaml. Načtěte ho zpět pomocí majordomus plan show I2700.