I2133 — Každý vstup a odpověď meshe má mez a odmítnutá registrace se nic nedozví
Omezit kanál discovery, každou odpověď, kterou runtime čte, a kandidáty, které přijme; na odmítnutou registraci odpovědět samotným odmítnutím; a dát každému opakování linku spodní mez a jitter.
HOTOVO vlna 0 · p1 · profil implementation · běží samostatně
Cíl
Omezit kanál discovery, každou odpověď, kterou runtime čte, a kandidáty, které přijme; na odmítnutou registraci odpovědět samotným odmítnutím; a dát každému opakování linku spodní mez a jitter.
Proč
Kanál poskytovatele je neomezený (apps/majordomus-cli/src/mesh/manager.rs:425 channel()) a krmí jedno vlákno, které provádí Ed25519 verify na každý datagram, bez limitu na zdroj a bez počítadla zahozených (hrozba T3). Odpovědi rendezvous a linku volajícímu se čtou neomezeným read_to_end (apps/majordomus-cli/src/mcp/bridge.rs:84-85) jen s timeoutem na čtení, takže pomalé kapání drží workera a zámek kola na runtime (apps/majordomus-cli/src/mesh/cooperation.rs:2383-2387) (T4), a počet přijatých kandidátů je neomezený. docs/MESH.md:341 uvádí 'messages (900 KiB)' jako mez záplavy, která platí jen pro to, co přijímá odpovídající (apps/majordomus-cli/src/mesh/cooperation.rs:1769-1779, 2010-2020) a co odesílá volající (apps/majordomus-cli/src/mesh/link.rs:883-888). mesh.register odpovídá vlastní obálkou a až 32 kandidáty, i když je obálka volajícího odmítnuta (apps/majordomus-cli/src/mesh/manager.rs:623-636), a kandidáti zahrnují nedůvěryhodné uzly kteréhokoli repozitáře (apps/majordomus-cli/src/mesh/registry.rs:342-357) (T2, T13). Odpověď UnknownLink se opakuje s nulovým zpožděním (apps/majordomus-cli/src/mesh/cooperation.rs:2592-2595), takže peer, který uvítá a pak odmítne sync, žene aktivní smyčku, a backoff linku nemá jitter (apps/majordomus-cli/src/mesh/cooperation.rs:2611-2614). Základní audit z 2026-10-09 na masteru 1fb8d6be44, mezery mesh 5 a 11, hrozby T2, T3, T4 a T13, drift 5.
Aktuální stav
Vstupy, které odpovídač přijímá, jsou omezené; discovery kanál, odpovědi, které čte dialer, přijatí kandidáti a odpovědi na registraci omezené nejsou.
Cílový stav
Provideři posílají přes omezenou frontu (OBSERVATION_QUEUE, 1024), jejíž zahozené položky se počítají jako přetečení v odmítnutích mesh.status; odmítnutá registrace se zodpoví samotným odmítnutím a přijatá tímto uzlem a důvěryhodnými uzly vlastních repozitářů volajícího (MeshRegistry::candidates_for; nefiltrovaný candidates je pryč); odpovídající, který stále odpovídá unknown_link, se opakuje nejrychleji po heartbeatu po prvním okamžitém opakování. Odložená část, meze odpovědi a kandidátů volajícího, jitter na zpětném ustupování spojení a test frekvence opakování unknown_link, je I2704.
Rozsah
- apps/majordomus-cli/src/mesh/manager.rs
- apps/majordomus-cli/src/mesh/rendezvous.rs
- apps/majordomus-cli/src/mesh/registry.rs
- apps/majordomus-cli/src/mesh/cooperation.rs
- apps/majordomus-cli/tests/mesh.rs
- apps/majordomus-cli/tests/mesh_cooperation.rs
- docs/MESH.md
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
Kritéria přijetí
- Datagramy nad hranici kanálu se zahazují a počítají ve stavu mesh a paměť procesu zůstává omezená při testu zahlcení
- Registrace, jejíž obálka je odmítnuta, nedostane žádného kandidáta a žádná odpověď nenese kandidáta jiného repozitáře
Validace
- bin/majordomus plan validate
- cargo test --lib mesh
- cargo test --test mesh --test mesh_cooperation
Požadované důkazy
- discovery_flood_bounded_test
- refused_registration_learns_nothing_test
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| discovery_flood_bounded_test | test | cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test mesh discovery_flood_bounded_test | test result: ok. 8 passed; 0 failed (whole file) (run 2026-10-14 12:00-12:15Z on master 2ca25bb9cf plus this change) | 2ca25bb |
| refused_registration_learns_nothing_test | test | cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test mesh a_registration_learns_only_the_trusted_nodes_of_its_own_repository | test result: ok. 8 passed; 0 failed (whole file) (run 2026-10-14 12:00-12:15Z on master 2ca25bb9cf plus this change) | 2ca25bb |
Časová osa
- zahájeno
- 2026-10-14T12:15:55Z
- ověřeno
- —
- dokončeno
- 2026-10-14T12:16:35Z
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/I2133.yaml. Načtěte jej zpět pomocí majordomus plan show I2133.