Zdůvodnění
LAN je nepřátelský vstup a subsystém objevování selhává dvěma charakteristickými způsoby: transporty, které si každý drží vlastní seznam peerů, dokud se CLI, API a Cockpit nerozejdou v tom, kdo existuje; a přítomnost, která se potichu stává oprávněním, kde být slyšen na multicastové skupině se bere jako být jedním z nás. ADR 0050 uzavírá obojí: jeden registr krmený jednou ověřovací cestou a verdikt důvěry, který záznamy označuje, aniž cokoli uděluje — v tomto spustitelném souboru není žádné vzdálené provádění, které by důvěryhodný uzel mohl získat, a kdo později vzdálené operace přidá, musí přinést vlastní rozhodnutí o autorizaci, ne zdědit je z objevování. Deklarace vypnutá ve výchozím stavu udržuje pravdivé „nic neopouští stroj“ u SECURITY.md, dokud člověk nezcommituje objekt, který říká jinak.
Požadované chování
- Sockety UDP a transporty objevování žijí pod
apps/majordomus-cli/src/mesh/a nikde jinde v crate. - Mechanismus objevování implementuje
mesh::provider::MeshProvidera předává surové bajty manageru; neparsuje žádnou obálku, neověřuje žádný podpis, nevyhodnocuje důvěru a nevede žádné záznamy peerů. Přidání mechanismu neupravuje žádného spotřebitele, povrch ani registr. mesh::registry::MeshRegistryje jediné úložiště peerů. CLI, HTTP, OpenAPI, MCP i Cockpit jej vykreslují přes modul schopnostimesh; žádné nedrží druhý seznam a Cockpit nedodává žádné fixture uzly.- Každé pozorování se ověřuje v
mesh::manager— meze, tvar, verze, zastaralost, podpis — dřív, než se vyhodnotí důvěra, a výchozí politika důvěry jedeny_unknown. Verdikt o důvěře mění štítky a sdílení kandidátů, nikdy oprávnění. - Mesh se aktivuje jen z povolené deklarace
mesh(druhmesh, schémamesh/v1) při startu sdíleného serveru, nikdy start neblokuje a selhání poskytovatele omezí jen tohoto poskytovatele. - Oznámení nenese žádné tajemství, žádné přihlašovací údaje, žádnou hodnotu prostředí a žádný obsah repozitáře; repozitáře se objevují pouze jako digesty.
Chování při selhání
scripts/ci/mesh-check skončí s exit 10 a pojmenuje soubor, který otevírá UDP socket mimo src/mesh/, projekci, která obchází registr, nebo drift deklarace, který najde; kontrola mesh-check v .ai/repo/ci/gates.yaml jej spouští při každé změně crate nebo tohoto pravidla. To, co statická kontrola neuvidí — že verdikt nic neuděluje — drží unit a integrační testy uvedené níže a recenze.
Ověření
scripts/ci/mesh-check (kontrola), cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib mesh (odmítnutí protokolu, replay, důvěra, deduplikace, omezený registr, syntetický provider s nulovou registrací) a apps/majordomus-cli/tests/mesh.rs (dva runtimy se objeví přes loopback rendezvous a sbíhají se k jednomu záznamu na uzel; podvržená obálka je odmítnuta).