pub fn plan(
request: &PlanRequest,
mode: &ModeResolution,
states: &[AdvisorState],
) -> ReviewPlanExpand description
Make the plan for one request under one mode, over the advisors’ states in preference
order. Pure: the same inputs give the same plan, and every advisor not selected is in
excluded with its reason.
use majordomus_cli::reasoning::availability::{ModeResolution, ReasoningMode};
use majordomus_cli::reasoning::policy::*;
let mode = ModeResolution { mode: ReasoningMode::Standard, source: "default".into() };
let request = PlanRequest { materiality: Materiality::High, ..Default::default() };
// No advisor at all: a plan, not an error.
let p = plan(&request, &mode, &[]);
assert_eq!(p.outcome, PlanOutcome::DecideLocally);
assert_eq!(p.budget, 2);
assert!(p.selected.is_empty());
assert!(!p.local_review.is_empty(), "the local path is spelled out");