Skip to main content

admit

Function admit 

Source
pub fn admit(
    input: ReasoningInput,
    loaded: &Loaded,
    admission: &Admission<'_>,
) -> Result<ReasoningBody, Refusal>
Expand description

Admit an input against the records already durable: the body to store, or why not.

This is where every rule of the module header is enforced. Admission reads, never writes: the caller redacts, names and writes the body it returns. A plan is computed here from admission; a conclusion’s review count is computed here from the consultations it cites.

use majordomus_cli::reasoning::availability::{ModeResolution, ReasoningMode};
use majordomus_cli::reasoning::policy::Materiality;
use majordomus_cli::reasoning::record::{AssessmentInput, ReasoningInput};
use majordomus_cli::reasoning::store::{admit, Admission, Loaded};

let mode = ModeResolution { mode: ReasoningMode::Standard, source: "default".into() };
let admission = Admission { mode: &mode, availability: &[] };

// evidence comes before opinion: a material assessment without it is refused
let bare = ReasoningInput::Assessment(AssessmentInput {
    subject: "the wire format of a public record".into(),
    materiality: Materiality::Material,
    ..Default::default()
});
let refused = admit(bare, &Loaded::default(), &admission).unwrap_err();
assert!(refused.0.starts_with("a material assessment carries the evidence"));

// trivia needs none
let trivial = ReasoningInput::Assessment(AssessmentInput {
    subject: "a local variable's name".into(),
    materiality: Materiality::Trivial,
    ..Default::default()
});
assert_eq!(admit(trivial, &Loaded::default(), &admission).unwrap().kind(), "assessment");