I2825 — Claim uvolněný na jednom runtime je uvolněn na každém runtime, který ho drží, a odkaz na restartovaného peera se obnoví
Zjistit, proč událost uvolnění přijatá na jednom runtime tohoto stroje nikdy nedorazila k runtime, jehož stream claim drží, opravit to a přimět mesh, aby to řekl, když repliky přestanou konvergovat: odkazy na předchozí instanci peera znovu provedou handshake, místo aby byly donekonečna odmítány, a bouře odmítnutí se hlásí, ne mlčky počítá.
PŘIPRAVENO vlna 0 · p1 · profil implementation · běží samostatně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I2825 bude přijato.
Cíl
Zjistit, proč událost uvolnění přijatá na jednom runtime tohoto stroje nikdy nedorazila k runtime, jehož stream claim drží, opravit to a přimět mesh, aby to řekl, když repliky přestanou konvergovat: odkazy na předchozí instanci peera znovu provedou handshake, místo aby byly donekonečna odmítány, a bouře odmítnutí se hlásí, ne mlčky počítá.
Proč
Změřeno 2026-10-17 na v0.28.0 dvěma relacemi. Role vydávající release uvolnila svůj zbylý exkluzivní claim 641bdb94dae9f62268abf5ca73c11e15-b10f19aa2cd888a6-8241af227eccef89/c-c6b0b61f0813 (rozsah .ai/repo/project/milestones a jedenáct dalších cest) kolem 14:05Z; její runtime čte claim jako uvolněný (událost uvolnění .../409, lamport 116044). Runtime primárního checkoutu (641bdb94dae9f62268abf5ca73c11e15-b10f19aa2cd888a6), jehož vlastní stream claim drží, ho v 14:20Z stále čte jako exkluzivní a držený a odmítl nový exkluzivní claim na .ai/repo/project/milestones/local-inference.yaml s claim_conflict, který jej jmenuje. mesh_verify na tomto runtime ve stejnou dobu: 0 z jeho peerů zkonvergovalo, včetně dvou, jejichž synchronizační kolo bylo podepsáno oběma směry (641bdb94...-4ab11c0b4ae0a30e a 641bdb94...-7cd6629d6dbc4dc5, oba converged false); 5 lokálních spojení odmítnuto s 'unknown_link: the link belongs to a previous instance: say hello' (641bdb94...-4a22a29ec24865ff, -4a8d4a5d233c540e, -5afdc32087b73ba3, -5e889aa64e75bc59, -7e36cdfc3c10b84a); žurnál eviduje 12603248 odmítnutých událostí proti 1793 přijatým, 3772 pohlceným duplikátům a 0 čekajícím. Zda uvolnění nebylo nikdy odesláno, bylo odesláno a odmítnuto, nebo přijato a nezačleněno, není zjištěno a zjištění je prvním krokem. I2704 ohraničuje a měří četnost opakování unknown_link; nezařídí, aby se zastaralé spojení zotavilo nebo release zkonvergoval.
Aktuální stav
Uvolnění zapsané přes jeden runtime může zůstat nespatřeno na runtime, který tvrzení drží, takže výhradní tvrzení, které nikdo nevlastní, nadále odmítá ostatní; spoje k restartovanému peeru zůstávají odmítnuty jako předchozí instance; odmítnuté události se počítají, nevysvětlují.
Cílový stav
Uvolněné tvrzení se čte jako uvolněné na každém propojeném runtimu do jednoho kola synchronizace od chvíle, kdy k němu uvolnění dorazí; spojení odmítnuté jako předchozí instance se znovu handshakuje jednou a pak konverguje nebo hlásí proč; mesh_verify selže a uvede příčinu, když odmítnuté události rostou, zatímco přijaté ne.
Rozsah
- apps/majordomus-cli/src/mesh/journal.rs
- apps/majordomus-cli/src/mesh/state.rs
- apps/majordomus-cli/src/mesh/link.rs
- apps/majordomus-cli/src/mesh/cooperation.rs
- apps/majordomus-cli/src/capability/builtin/mesh.rs
- docs/MESH.md
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- Dva runtime jednoho uzlu, claim přijatý na prvním a uvolněný přes druhý: po jednom synchronizačním kole ho oba čtou jako uvolněný a nový exkluzivní claim na jeho rozsah se na prvním přijme
- Peer restartovaný pod novou instancí se po svém prvním odmítnutí jako předchozí instance znovu propojí, bez restartu volajícího
- mesh_verify hlásí selhávající kontrolu s dominantním důvodem odmítnutí, když odmítnutých událostí přibývá a během synchronizačního kola nepřišla žádná událost
Validace
- bin/majordomus plan validate
- cargo test --test mesh_cooperation
Požadované důkazy
- release_converges_test
- stale_link_recovers_test
- rejection_storm_reported_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/I2825.yaml. Přečtěte ho zpět pomocí majordomus plan show I2825.