pub struct MilestoneGraph {Show 25 fields
pub milestone: String,
pub declared: bool,
pub record: Option<String>,
pub title: AttestedText,
pub outcome: AttestedText,
pub status: AttestedText,
pub rank: AttestedCount,
pub depends_on: AttestedList,
pub blocked_by: AttestedList,
pub dependents: AttestedList,
pub nodes: Vec<MilestoneNode>,
pub edges: Vec<MilestoneEdge>,
pub ready: Vec<String>,
pub blocked: Vec<String>,
pub waiting: Vec<String>,
pub active: Vec<String>,
pub review: Vec<String>,
pub completion_blocked: Vec<String>,
pub complete: Vec<String>,
pub cancelled: Vec<String>,
pub critical_blockers: Vec<CriticalBlocker>,
pub parallelizable: Vec<ParallelSet>,
pub cycles: Vec<Vec<String>>,
pub diagnostics: Vec<DevTaskDiagnostic>,
pub counts: MilestoneCounts,
}Expand description
One milestone as an executable dependency graph.
Fields§
§milestone: StringThe milestone id, as asked for.
declared: boolWhether the canonical model declares it. False is answered, not refused.
record: Option<String>Repository-relative path of the canonical record, when there is one.
title: AttestedTextOne line naming the outcome, as authored.
outcome: AttestedTextWhat is true once it is real, as authored.
status: AttestedTextThe derived milestone status.
rank: AttestedCountIts layer in the milestone graph: what orders the roadmap.
depends_on: AttestedListThe milestones it requires, as authored.
blocked_by: AttestedListThose of them that are not DONE. Non-empty means every issue here is held back
whatever its own dependencies say.
dependents: AttestedListThe milestones that require it.
nodes: Vec<MilestoneNode>Every issue of the milestone, in canonical order.
edges: Vec<MilestoneEdge>Every dependency edge with at least one end in this milestone, sorted.
ready: Vec<String>The issues a worker may pick up now.
blocked: Vec<String>The issues waiting on a peer.
waiting: Vec<String>The issues waiting only on the milestone gate.
active: Vec<String>The issues somebody has started.
review: Vec<String>The issues awaiting confirmation.
completion_blocked: Vec<String>The issues declared complete whose evidence does not back that up.
complete: Vec<String>The issues finished on their own terms.
cancelled: Vec<String>The issues withdrawn.
critical_blockers: Vec<CriticalBlocker>What to unblock first, most downstream work first.
parallelizable: Vec<ParallelSet>The startable work partitioned into subsets that may run at the same time.
cycles: Vec<Vec<String>>Every dependency cycle with an issue of this milestone in it, each as its strongly connected component in canonical order.
diagnostics: Vec<DevTaskDiagnostic>Everything wrong with the records of this milestone or of its issues.
counts: MilestoneCountsThe issues counted by readiness.
Implementations§
Source§impl MilestoneGraph
impl MilestoneGraph
Sourcepub fn build(
plan: &Plan,
milestone: &str,
record: Option<RecordRef<'_>>,
) -> MilestoneGraph
pub fn build( plan: &Plan, milestone: &str, record: Option<RecordRef<'_>>, ) -> MilestoneGraph
Build one milestone’s graph out of the derived plan.
Pure: a walk of values the caller already has. Nothing is read, and no derivation the plan owns is repeated — the statuses, waves, edges and findings below are the plan’s own, and only the partitions are computed here.
Sourcepub fn is_partitioned(&self) -> bool
pub fn is_partitioned(&self) -> bool
Is every partition consistent with the nodes: each issue in exactly one readiness bucket, and every bucket naming an issue of this milestone?
The check a surface would otherwise have to trust. A node counted twice or in no bucket at all is the failure mode of grouping by hand, which is exactly what this type exists to remove from every template.
Sourcepub fn has_failures(&self) -> bool
pub fn has_failures(&self) -> bool
Whether anything about this milestone’s records is a failure rather than a warning.
Sourcepub fn is_consistent(&self) -> bool
pub fn is_consistent(&self) -> bool
Is every attested field’s invariant held?
Trait Implementations§
Source§impl Clone for MilestoneGraph
impl Clone for MilestoneGraph
Source§fn clone(&self) -> MilestoneGraph
fn clone(&self) -> MilestoneGraph
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 MilestoneGraph
impl Debug for MilestoneGraph
Source§impl<'de> Deserialize<'de> for MilestoneGraph
impl<'de> Deserialize<'de> for MilestoneGraph
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>,
impl Eq for MilestoneGraph
Source§impl JsonSchema for MilestoneGraph
impl JsonSchema for MilestoneGraph
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 moreSource§impl PartialEq for MilestoneGraph
impl PartialEq for MilestoneGraph
Source§fn eq(&self, other: &MilestoneGraph) -> bool
fn eq(&self, other: &MilestoneGraph) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for MilestoneGraph
impl Serialize for MilestoneGraph
impl StructuralPartialEq for MilestoneGraph
Auto Trait Implementations§
impl Freeze for MilestoneGraph
impl RefUnwindSafe for MilestoneGraph
impl Send for MilestoneGraph
impl Sync for MilestoneGraph
impl Unpin for MilestoneGraph
impl UnsafeUnpin for MilestoneGraph
impl UnwindSafe for MilestoneGraph
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.