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.