pub struct PlanStatus {Show 17 fields
pub plan_id: PlanId,
pub deliverables: Vec<(String, DeliverableStatus, u32, u32, u32)>,
pub critical_path: Vec<String>,
pub critical_path_hours: f32,
pub locks_held: Vec<LockInfo>,
pub critical_ids: Vec<String>,
pub schedule: Vec<ScheduleRow>,
pub ready: Vec<String>,
pub plan_complete: bool,
pub milestones: Vec<MilestoneRow>,
pub name: Option<String>,
pub variant: Option<String>,
pub selected: Option<bool>,
pub archived: Option<bool>,
pub active_plan: Option<String>,
pub definition_drift: Option<bool>,
pub baseline: Option<PlanBaseline>,
}Expand description
Read-only snapshot of a plan’s current state, returned by
crate::ports::Planner::status.
Fields§
§plan_id: PlanId§deliverables: Vec<(String, DeliverableStatus, u32, u32, u32)>Per-deliverable (id, status, attempt_count, failure_count, lapse_count). Order matches insertion order in the originally
submitted PlanGraph::deliverables so callers can render a
stable table. On the wire each row is a positional array —
trailing elements were appended, so readers indexing [0..=2]
keep working (backward-tolerant extension).
attempt_count— total leases handed out viacrate::ports::Planner::acquire_cohort(telemetry).failure_count— explicitmark_status(Failed)outcomes; this is the retry pressure against the failure circuit-break cap (crate::planner::MAX_ATTEMPTS).lapse_count— leases lost environmentally (TTL expiry, no terminal mark); pressure against the lapse bound (crate::planner::MAX_LAPSES), never the failure breaker.
critical_path: Vec<String>Ids on the longest dependency chain, in execution order. Always
begins with __start__ and ends with __finish__ (synthetic
endpoints; an empty plan is just those two).
critical_path_hours: f32Scheduled length plus lags along critical_path (= __finish__
earliest finish).
locks_held: Vec<LockInfo>Every lock currently active across the plan.
critical_ids: Vec<String>Every zero-float deliverable (synthetic endpoints excluded), sorted by (es, id).
schedule: Vec<ScheduleRow>Per-deliverable CPM schedule, in graph insertion order.
ready: Vec<String>Deliverables with status Ready and no live lock, sorted by
(latest_start, float, id) ascending (smallest latest start first,
i.e. longest remaining tail; same order as
crate::ports::Planner::acquire_cohort via the shared priority_key);
membership is a superset: acquire may still skip deliverables at the
failure or lapse cap, manual deliverables, or whose files overlap a
held lock.
plan_complete: boolTrue when every deliverable is Complete (vacuously true for an
empty plan).
milestones: Vec<MilestoneRow>One row per milestone deliverable, in graph order.
name: Option<String>Plan line name of a named variant; None for an unnamed plan.
variant: Option<String>Variant name of a named variant; None for an unnamed plan.
selected: Option<bool>Whether this variant is its line’s selected (executable) variant;
None for an unnamed plan.
archived: Option<bool>Effective archived flag of this variant (its line is archived or the
variant itself is); None for an unnamed plan. Archived variants
stay readable through status and ev.
active_plan: Option<String>Only when PlanStatus::archived is Some(true): the name of the
project’s single active plan line, so a caller holding a stale id
learns where the live work is. None when not archived, for an
unnamed plan, or when the project has zero or several active lines.
definition_drift: Option<bool>Some(true) when the variant’s plan file no longer matches what was
last synced (by content hash), Some(false) when it matches. None
(unknown) when the variant has no source file, the planner has no
project root for the variant’s project, or the file is unreadable.
baseline: Option<PlanBaseline>The latest earned-value baseline of the plan, or null before the
first baseline.