From 63563d4e5d19b77c3bc4ac485ee2193de6d280a2 Mon Sep 17 00:00:00 2001 From: Wes Date: Wed, 5 Aug 2026 15:50:41 -0600 Subject: [PATCH] Limit aggregate retry fan-out to tombstones Only deletion retries need to repair the post-commit disconnect/fan-out gap; leave byte-identical active retries as no-op deliveries. Co-authored-by: Carl Signed-off-by: Wes --- crates/buzz-relay/src/api/managed_agents.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/buzz-relay/src/api/managed_agents.rs b/crates/buzz-relay/src/api/managed_agents.rs index ccfcf0e901..f18eadcf35 100644 --- a/crates/buzz-relay/src/api/managed_agents.rs +++ b/crates/buzz-relay/src/api/managed_agents.rs @@ -121,12 +121,14 @@ pub async fn submit_aggregate( let retry_private_event; let dispatch_events: &[buzz_core::StoredEvent] = if commit.inserted { &commit.events - } else { + } else if !commit.head.active { // A tombstone may have committed before disconnect propagation failed. // Its exact retry must fan the durable head out again after repairing // that propagation; otherwise live Desktop sessions never learn it. retry_private_event = buzz_core::StoredEvent::new(commit.private_event.clone(), None); std::slice::from_ref(&retry_private_event) + } else { + &[] }; for stored in dispatch_events { crate::handlers::event::dispatch_persistent_event(