I2132 — Hello jmenuje runtime, pro který je určeno, a žádný jiný runtime ho nepřijme
Svázat každý hello linku s jeho zamýšleným příjemcem uvnitř podepsaných bajtů, odmítnout hello adresovaný jinam a zařídit, aby zdokumentované pořadí kontrol bylo tím, které kód skutečně provádí.
HOTOVO vlna 0 · p1 · profil implementation · běží samostatně
Cíl
Svázat každý hello linku s jeho zamýšleným příjemcem uvnitř podepsaných bajtů, odmítnout hello adresovaný jinam a zařídit, aby zdokumentované pořadí kontrol bylo tím, které kód skutečně provádí.
Proč
Hello (apps/majordomus-cli/src/mesh/link.rs:444-456) nejmenuje žádné publikum. Cache nonce, která odmítá replay, je na každého odpovídajícího zvlášť, drží se v paměti a kontroluje se po důvěře (apps/majordomus-cli/src/mesh/cooperation.rs:1847-1875), takže zachycený hello lze přehrát jinému runtime téhož repozitáře, nebo témuž runtime po restartu, v rámci okna odchylky 300 s (hrozba T6). Účinkem je vytlačené příchozí spojení a falešné 'connected' pro skutečného peera (apps/majordomus-cli/src/mesh/cooperation.rs:1918-1934); přehrávač nemůže synchronizovat. docs/MESH.md:128-136 a bod 1 pravidla project.mesh-cooperation-is-authenticated kladou kontrolu nonce před protokol, sebe, repozitář a důvěru; kód ji kontroluje naposled záměrně, aby cizinci nemohli zaplnit cache, zatímco závazné pravidlo říká 'ověřuj v tomto pořadí'. Základní audit z 2026-10-09 na master 1fb8d6be44, mezera mesh 9 a drift 1.
Aktuální stav
Platné hello je přijato každým runtime repozitáře, který jeho klíči důvěřuje a neviděl jeho nonce.
Cílový stav
Hello nese volitelné to (klíč běhu, kterého chce dosáhnout) uvnitř svých podepsaných bajtů; volající jej vyplní, kdykoli klíč zná (cíl registru nebo běh, s nímž se dříve propojil); accept_hello odmítne hello adresované jinam jako misaddressed, dříve než cache replay uvidí jeho nonce; hello bez to je stále přijato (seedy, první kontakty, releasy před tímto), takže verze protokolu spojení je beze změny a smíšená flotila se dál propojuje. docs/MESH.md uvádí pořadí, v němž kód kontroluje, a proč je cache nonce poslední. Odložená část, přivést pravidlo project.mesh-cooperation-is-authenticated k pořadí kontrol kódu, je I2703.
Rozsah
- apps/majordomus-cli/src/mesh/link.rs
- apps/majordomus-cli/src/mesh/cooperation.rs
- apps/majordomus-cli/tests/mesh_cooperation.rs
- docs/MESH.md
- .ai/repo/rules/project/mesh-cooperation-is-authenticated.v1.md
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
Kritéria přijetí
- Hello zachycené z linku k runtime A a přehrané na runtime B v rámci okna posunu hodin je odmítnuto typovaným odmítnutím a nemění žádný link runtime B
- Hello přehrané A po restartu A nemůže vytlačit navázané spojení
Validace
- bin/majordomus plan validate
- cargo test --test mesh_cooperation
- cargo test --lib mesh::cooperation
Požadované důkazy
- hello_replay_to_another_runtime_refused_test
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| hello_replay_to_another_runtime_refused_test | test | cargo test --lib -- mesh::; cargo test --test mesh_cooperation | 319 passed včetně a_hello_addressed_to_one_runtime_is_refused_by_another; mesh_cooperation 7 passed (kód na masteru od aa28332ca86; znovu spuštěno na masteru 01227a0) | 01227a0 |
Časová osa
- zahájeno
- 2026-10-17T12:01:16Z
- ověřeno
- 2026-10-17T12:01:30Z
- dokončeno
- 2026-10-17T12:01:38Z
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/I2132.yaml. Zpětně ho přečtete pomocí majordomus plan show I2132.