Skip to main content

derive

Function derive 

Source
pub fn derive(loaded: &Loaded, task: Option<&str>) -> ReasoningState
Expand description

Derive the state of task (None for every task).

Only the records of the task are reported, but references are resolved against every loaded record, so a conclusion recorded under another task still settles an assessment. The same records always give the same state.

use majordomus_cli::reasoning::state::{derive, AssessmentStanding};
use majordomus_cli::reasoning::store::Loaded;

let mut loaded = Loaded::default();
let assessment = json!({ "kind": "assessment", "subject": "s" });
loaded.records.push(rec("assessment-1", "t1", 1, assessment));
loaded.records.push(rec("conclusion-2", "t2", 2, json!({
    "kind": "conclusion", "assessment": "assessment-1", "decision": "A", "rationale": "r",
    "reviewed_by": [], "independent_review_count": 0,
})));
let state = derive(&loaded, Some("t1"));
assert_eq!(state.assessments[0].standing, AssessmentStanding::Concluded);
assert_eq!(state.assessments[0].conclusion.as_deref(), Some("conclusion-2"));
assert!(state.conclusions.is_empty(), "the conclusion is reported under its own task");