pub struct CriticalPathResult {
pub total_tasks: usize,
pub critical_path: Vec<String>,
pub critical_ids: Vec<String>,
pub critical_path_duration: f32,
pub total_duration_sequential: f32,
pub optimal_duration_parallel: f32,
pub speedup_factor: f32,
pub parallelizable_batches: Vec<TaskBatch>,
pub bottlenecks: Vec<Bottleneck>,
pub tasks: Vec<Task>,
pub unscheduled: Vec<String>,
}Expand description
Critical Path Analysis Results.
Fields§
§total_tasks: usizeTotal number of tasks in the plan.
critical_path: Vec<String>One longest prerequisite chain, in execution order: each element is a prerequisite of the next. Sink ties resolve to the later earliest start, then the smallest id; predecessor ties resolve to the smallest id.
critical_ids: Vec<String>Every zero-float (critical) task, sorted by earliest start then id.
Unlike critical_path this may contain several parallel chains.
critical_path_duration: f32Project length: the maximum earliest finish (the scheduled lengths plus
edge lags along critical_path).
total_duration_sequential: f32Total duration if done sequentially. Uses the scheduled length (duration_hours when set, else effort); earned value reads effort from the graph.
optimal_duration_parallel: f32Makespan with unlimited parallelism (maximum earliest finish). Uses the scheduled length (duration_hours when set, else effort); earned value reads effort from the graph.
speedup_factor: f32Speedup factor (sequential / parallel).
parallelizable_batches: Vec<TaskBatch>Batches for parallel execution.
bottlenecks: Vec<Bottleneck>Bottleneck tasks (sorted by ROI descending).
tasks: Vec<Task>All tasks with calculated times.
unscheduled: Vec<String>Task ids the forward pass could not schedule. Non-empty iff the
dependency graph is cyclic or otherwise unschedulable; in that case
every other field is confidently-wrong and must not be trusted.
Callers that do not pre-validate (e.g. direct
CpmAlgorithm::calculate
users) MUST check this is empty before using the result.