pub fn standing_conclusion<'a>(
loaded: &'a Loaded,
assessment: &str,
) -> Option<&'a ReasoningRecord>Expand description
The conclusion that stands for an assessment: its latest not superseded by another.
A conclusion stops standing when any later conclusion names it in supersedes. When
none stands, the assessment is still open to a conclusion without supersedes.
use majordomus_cli::reasoning::record::*;
use majordomus_cli::reasoning::store::{standing_conclusion, Loaded};
fn conclusion(id: &str, at: &str, supersedes: Option<&str>) -> ReasoningRecord {
ReasoningRecord {
schema: RECORD_SCHEMA.into(),
version: RECORD_VERSION,
id: id.into(),
task: "t".into(),
recorded_at: at.into(),
head: None,
redacted: vec![],
body: ReasoningBody::Conclusion(StoredConclusion {
input: ConclusionInput {
assessment: "assessment-1".into(),
decision: id.into(),
rationale: "r".into(),
supersedes: supersedes.map(String::from),
..Default::default()
},
reviewed_by: vec![],
independent_review_count: 0,
}),
}
}
let mut loaded = Loaded::default();
loaded.records.push(conclusion("conclusion-1", "2026-10-01T00:00:01Z", None));
assert_eq!(standing_conclusion(&loaded, "assessment-1").unwrap().id, "conclusion-1");
loaded.records.push(conclusion("conclusion-2", "2026-10-01T00:00:02Z", Some("conclusion-1")));
assert_eq!(standing_conclusion(&loaded, "assessment-1").unwrap().id, "conclusion-2");
assert!(standing_conclusion(&loaded, "assessment-9").is_none());