From f1691ffc0d76a9ae83fe896646899241c084036f Mon Sep 17 00:00:00 2001 From: Eureka Date: Tue, 10 Nov 2026 15:28:22 +0000 Subject: [PATCH] huginn-mind: pin that the desk door is refused before references are read Co-Authored-By: Claude Sonnet 5.5 --- crates/huginn-mind/src/desk.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/crates/huginn-mind/src/desk.rs b/crates/huginn-mind/src/desk.rs index 29ea9e8..0ba999e 100644 --- a/crates/huginn-mind/src/desk.rs +++ b/crates/huginn-mind/src/desk.rs @@ -620,6 +620,13 @@ mod tests { let after = head(&mind); assert!(after > before); assert_eq!(refusal(admit(&mut mind, vec![doc.clone()])), MindRefusal::DeskAnswerOutsideDesk { id: id.clone() }); + // The door is refused before references are read: a forged answer to a fork nobody holds is + // still the door's refusal. + let D::DeskAnswer(mut orphan) = doc.clone() else { unreachable!() }; + orphan.fork = s("eureka-state:question:nobody"); + orphan.sequence = 1; + let orphan_id = "eureka-state:desk_answer:nobody.n1".to_string(); + assert_eq!(refusal(admit(&mut mind, vec![D::DeskAnswer(orphan)])), MindRefusal::DeskAnswerOutsideDesk { id: orphan_id }); // Beside a legitimate document, still refused whole. assert_eq!(refusal(admit(&mut mind, vec![question_n(9), doc.clone()])), MindRefusal::DeskAnswerOutsideDesk { id: id.clone() }); // An import carrying one.