From b26225c76f86b68a906e20dbe5360d9b6f5cd1b7 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 2 Nov 2026 10:24:59 +0100 Subject: [PATCH] flush-shown: a flush may name a member an earlier line showed (kills the seen dedup survivor) Co-Authored-By: Claude Opus 5.5 --- crates/mind-body/src/persona/tests.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/crates/mind-body/src/persona/tests.rs b/crates/mind-body/src/persona/tests.rs index 32f1010..75c7f7b 100644 --- a/crates/mind-body/src/persona/tests.rs +++ b/crates/mind-body/src/persona/tests.rs @@ -2591,6 +2591,16 @@ fn a_flush_alone_may_not_name_a_stranger_or_settle_a_closed_item() { assert_eq!(outcome_of(&rig, &id), Some(ResolutionOutcome::Recorded { reason: "integrated".into() })); } +#[test] +fn a_flush_alone_may_name_a_member_an_earlier_line_showed_though_no_mind_or_operator() { + let guest = "@guest:chat"; + let rig = Rig::new(vec![delivery(1, "swarm", guest, "hello")], &[says(&[("swarm", "hi")]), reply(&[], json!([keeps("Did", "Greeted the guest", &[guest])]), json!([]), json!(null))]); + rig.cap.set(u64::try_from(ROTATE_MARGIN_S).unwrap()); + assert_eq!(failure_of(rig.go()), None); + assert_eq!(last_outcome(&rig), "answered"); + assert_eq!(memories(&rig).len(), 1); +} + /// 3 and 4 are told; a poll writes 5 while their turn runs; their result is refused; 5's echo opens the next /// turn, and 5's result is refused too before a poll falls due (a turn shorter than the poll). Both refused /// batches are told again together, as one line, and the one answer acks through 5.