From 9327d0734cba7ebdee124799532277f67cc669a8 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 13 Feb 2026 09:22:07 +0000 Subject: [PATCH] feat: edge case registry sim tests + GracefulLeave action Cycle 2 tests: - explicit_unregister_propagates_to_all_nodes - re_registration_after_tombstone_succeeds - all_names_tombstoned_when_owner_dies - graceful_leave_tombstones_registry_names - piggyback_contention_both_propagate Also: - Add GracefulLeave variant to SimAction enum - Fix cluster_survives_brief_message_loss config (dead_reprobe + suspicion_timeout) - Harden split_brain test config (suspicion_timeout=200 prevents cascading false deaths) Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski --- crates/simulation/src/distribution/sim.rs | 39 ++++ crates/simulation/tests/cluster_scenarios.rs | 10 +- .../simulation/tests/distribution_registry.rs | 194 +++++++++++++++++- 3 files changed, 238 insertions(+), 5 deletions(-) diff --git a/crates/simulation/src/distribution/sim.rs b/crates/simulation/src/distribution/sim.rs index 689b175..7cca65f 100644 --- a/crates/simulation/src/distribution/sim.rs +++ b/crates/simulation/src/distribution/sim.rs @@ -30,6 +30,8 @@ pub enum SimAction { RegisterNameWithActor { node_idx: usize, name: String, actor: ActorAddress }, /// Unregister a name on the given node (creates a tombstone). UnregisterName { node_idx: usize, name: String }, + /// Graceful leave — node announces its own death before being removed. + GracefulLeave { node_idx: usize }, } /// Schedule entry for network faults. @@ -415,6 +417,43 @@ fn run_simulation_inner(config: DistributionSimConfig) -> (DistTrace, Vec