Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Výhradní nárok učiněný na jednom runtime vylučuje překrývající se nárok na každém propojeném runtime a souběžné nároky se všude vyřeší na jednoho pojmenovaného vítěze

Relace na stroji A nárokuje apps/majordomus-cli výhradně. Relace na stroji B

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

Property testy mesh::state dokazují, že fold nezávisí na pořadí ani duplicitě a že žádné prokládání nenechá dva držené exkluzivní claimy ve střetu; integrační testy odmítnou konfliktní claim napříč dvěma procesy, dvěma worktree i přes relay; test rozdělení sítě v procesu a scénář network_partition v laboratoři sloučí rozdělení do jednoho drženého a jednoho konfliktního claimu. Nejde o silnou konzistenci: při rozdělení mohou držet obě strany a konflikt se pojmenuje po zacelení.

Co to znamená

Relace na stroji A si výhradně nárokuje apps/majordomus-cli. Relace na stroji B, která si pak výhradně nárokuje apps, je odmítnuta s claim_conflict a odmítnutí jmenuje nárok A. Totéž platí mezi dvěma relacemi jednoho serveru, dvěma worktrees jednoho stroje nebo třemi runtime propojenými jen přes prostřední: výhradní nárok vylučuje všude, kde je znám, stejným pravidlem. Když si dvě strany rozdělené sítě nárokují tentýž rozsah — každá k tomu měla právo, protože neviděla druhou — nezůstanou po opětovném spojení dva držitelé: každý runtime sloučí tytéž události a jmenuje téhož vítěze, nárok s nejnižším (lamport, stream, seq); druhý je uveden jako conflicted s klíčem vítěze.

Princip

Nároky jsou události replikovaného žurnálu (apps/majordomus-cli/src/mesh/journal.rs), podepsané nárokujícím runtime. mesh::state::fold je čistá funkce nad množinou událostí a živostí každého streamu, aplikující události v pořadí (lamport, stream, seq), takže pořadí doručení a duplicitní doručení výsledek změnit nemohou — oba případy drží property testy. admission_conflicts odmítne nový výhradní nárok, který se potká s živým výhradním nárokem jiné relace; cesty se potkávají podle peers::claims_meet, vlastního predikátu nástěnky peerů. Nárok žije, dokud není uvolněn, jeho relace je otevřená a puls jeho runtime dál roste.

Jak to vidět

majordomus mesh claim apps/majordomus-cli --session s1 --issue '#184'
majordomus mesh state --full               # every claim with held/conflicted/expired
cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib mesh::state
cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test mesh_cooperation

exclusivity_holds_for_any_interleaving a fold_is_order_and_duplicate_independent jsou vlastnosti; a_partition_expires_the_far_side_and_healing_reconciles_to_one_winner a test/mesh-lab/run (scénář network_partition) skutečný odkaz přeruší a znovu uzdraví.

Co nepokrývá

Není to zamykací služba se silnou konzistencí: během rozdělení sítě mohou obě strany držet týž rozsah a konflikt se po zahojení pojmenuje, ne předchází. Poradní nárok (oznámení nástěnky peerů) hlásí překryvy a nic neodmítá.

Proč existuje

Několik AI relací na několika strojích pracujících na jednom repozitáři se střetne na souborech, pokud se nárok vznesený kdekoli nerespektuje všude — a slib, který by držel jen mezi relacemi jednoho serveru, by selhal právě tehdy, když druhý worker běží jinde.

Detail vykreslen z docs/claims/mesh-claims-cross-runtime.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Výhradní nárok učiněný na jednom runtime vylučuje překrývající se nárok na každém propojeném runtime a souběžné nároky se všude vyřeší na jednoho pojmenovaného vítěze

    Vytvořeno na Mesh.

  2. 2 · kanonické tvrzení

    mesh-claims-cross-runtimedeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v .ai/repo/rules/project/mesh-cooperation-is-authenticated.v1.md

  3. 3 · implementace

    apps/majordomus-cli/src/mesh/state.rs

  4. 4 · test a scénáře

    Test: apps/majordomus-cli/tests/mesh_cooperation.rs

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh apps/majordomus-cli/tests/mesh_cooperation.rs

Prohledává názvy a popisy všech stránek, které tento web publikuje.