I2134 — Klíč odebraný ze seznamu důvěry ztratí svá spojení bez restartu a klíč uzlu lze rotovat
Znovu číst deklaraci důvěry za běhu runtime, zahodit odkazy a přijetí vyřazeného klíče, nabídnout rotaci klíče, kterou mohou peeři sledovat, a vytvořit soubor klíče uzlu soukromý od prvního bajtu.
HOTOVO vlna 0 · p0 · profil implementation · běží samostatně
Cíl
Znovu číst deklaraci důvěry za běhu runtime, zahodit odkazy a přijetí vyřazeného klíče, nabídnout rotaci klíče, kterou mohou peeři sledovat, a vytvořit soubor klíče uzlu soukromý od prvního bajtu.
Proč
Důvěra je zmrazena při aktivaci (apps/majordomus-cli/src/mesh/manager.rs:466,486, apps/majordomus-cli/src/mesh/cooperation.rs:1150): klíč odebraný z trust.allow si ponechá svá spojení, dokud se nerestartují všichni peeři, a neexistuje tok rotace ani odvolání (hrozba T11). Kompromitovaný klíč tedy nelze odříznout bez restartu každého runtime. Soubor s klíčem uzlu se zapíše a pak chmodne na 0600 (apps/majordomus-cli/src/mesh/identity.rs:338-347), takže na okamžik existuje s oprávněními podle umask. Znovunačtené události odvolaného klíče patří I2124 (znovunačtení žurnálu uplatňuje politiku důvěry, milník runtime-trust); tento úkol je živá polovina. Baseline audit z 2026-10-09 na master 1fb8d6be44, mezera meshe 6 a řádek identity.
Aktuální stav
Odvolání se projeví až při restartu každého peera. Rotace neexistuje. Soubor klíče je krátce čitelný s oprávněními podle umask.
Cílový stav
Cooperation drží svou důvěru jako vyměnitelnou hodnotu; Cooperation::retrust uvede v platnost novou a ukončí link každého peera, kterému už nedůvěřuje, a server ji volá s každou novou generací repozitáře, kterou čte, takže klíč stažený z trust.allow a commitnutý ztrácí své linky bez restartu: jeho další synchronizace narazí na unknown_link a jeho hello je odmítnuto untrusted. Odložená část, rotace klíče uzlu a vymazání událostí staženého klíče z běžícího žurnálu, je I2705.
Rozsah
- apps/majordomus-cli/src/mesh/manager.rs
- apps/majordomus-cli/src/mesh/cooperation.rs
- apps/majordomus-cli/src/mesh/trust.rs
- apps/majordomus-cli/src/mesh/identity.rs
- apps/majordomus-cli/src/shared.rs
- apps/majordomus-cli/src/capability/builtin/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í
- Odebrání klíče z trust.allow na běžícím runtime zavře spojení tohoto klíče do jednoho heartbeatu a odmítne jeho další hello, bez restartu
- Při povolné umask není soubor s klíčem uzlu nikdy čitelný pro skupinu ani ostatní
Validace
- bin/majordomus plan validate
- cargo test --test mesh_cooperation
- cargo test --lib mesh::identity
Požadované důkazy
- revocation_without_restart_test
- key_file_created_private_test
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| revocation_without_restart_test | test | cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --lib -- mesh::cooperation::tests::a_withdrawn_key_loses_its_link_without_a_restart | revocation_without_restart_test pojmenovává test, který pod tímto názvem nikdy nebyl napsán; prokázáno testem mesh::cooperation::tests::a_withdrawn_key_loses_its_link_without_a_restart (dodáno v 9d09a4a5f22): 1 prošel na c0e3585dc8, 2026-10-14 23:3xZ, tento Mac | c0e3585 |
| key_file_created_private_test | test | cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --lib -- mesh::identity::tests::a_node_key_is_never_readable_by_others | key_file_created_private_test jmenuje test, který nikdy nebyl napsán pod tímto jménem; dokázáno pomocí mesh::identity::tests::a_node_key_is_never_readable_by_others (dodáno 37c72bbed6c): 1 prošel na c0e3585dc8, 2026-10-14 23:3xZ, tento Mac | c0e3585 |
Časová osa
- zahájeno
- 2026-10-14T23:32:46Z
- ověřeno
- 2026-10-14T23:32:54Z
- dokončeno
- 2026-10-14T23:33:07Z
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/I2134.yaml. Přečtěte jej zpět pomocí majordomus plan show I2134.