pub struct ConclusionInput {
pub assessment: String,
pub decision: String,
pub rationale: String,
pub evidence: Vec<ReasoningEvidence>,
pub consultations: Vec<String>,
pub disagreements: Vec<String>,
pub rejected: Vec<String>,
pub assumptions: Vec<String>,
pub risks: Vec<String>,
pub validation_plan: Vec<String>,
pub confidence: ReasoningConfidence,
pub supersedes: Option<String>,
}Expand description
The engineering conclusion an assessment reaches.
A conclusion names its decision and why. On material uncertainty it must also carry evidence and a validation plan, and it must weigh every completed consultation of its assessment. The review count is not part of the input: the store computes it.
use majordomus_cli::reasoning::policy::ReasoningConfidence;
use majordomus_cli::reasoning::record::ConclusionInput;
let c = ConclusionInput {
assessment: "assessment-1".into(),
decision: "keep the lock".into(),
rationale: "no caller holds it across an await".into(),
..Default::default()
};
assert_eq!(c.confidence, ReasoningConfidence::Medium);
assert!(c.consultations.is_empty() && c.supersedes.is_none());
// a review count is computed by the store, so the input has no field for one
let typed = serde_json::json!({
"assessment": "a", "decision": "d", "rationale": "r", "independent_review_count": 3,
});
assert!(serde_json::from_value::<ConclusionInput>(typed).is_err());Fields§
§assessment: StringThe assessment it concludes.
decision: StringThe decision.
rationale: StringWhy, from the evidence.
evidence: Vec<ReasoningEvidence>The evidence it rests on. Required for material uncertainty.
consultations: Vec<String>The completed consultations it weighed.
disagreements: Vec<String>The resolved disagreements it rests on.
rejected: Vec<String>Alternatives considered and rejected, each with why.
assumptions: Vec<String>Assumptions it still depends on.
risks: Vec<String>Risks that remain.
validation_plan: Vec<String>How the decision will be proven. Required for material uncertainty.
confidence: ReasoningConfidenceConfidence in it.
supersedes: Option<String>An earlier conclusion this one replaces, because new evidence overturned it.
Trait Implementations§
Source§impl Clone for ConclusionInput
impl Clone for ConclusionInput
Source§fn clone(&self) -> ConclusionInput
fn clone(&self) -> ConclusionInput
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ConclusionInput
impl Debug for ConclusionInput
Source§impl Default for ConclusionInput
impl Default for ConclusionInput
Source§fn default() -> ConclusionInput
fn default() -> ConclusionInput
Source§impl<'de> Deserialize<'de> for ConclusionInput
impl<'de> Deserialize<'de> for ConclusionInput
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for ConclusionInput
impl JsonSchema for ConclusionInput
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more