Critical Path Length Index
| Field | Value |
|---|---|
| ID | cpli |
| Denominator | Project remaining hours (data date → scheduled/planned finish × project calendar day_hr_cnt) |
| Metric | CPL / project_remaining_hours |
| Threshold | 0.95 |
| Pass condition | 0.95 ≤ CPLI ≤ 1.05 → pass; otherwise warning |
Intent
Measure whether the remaining zero-float driving chain still fits in the time left to the project finish date (NDIA / DCMA Critical Path Length Index). This is an observed-float trace on the shared CSR graph, not a CPM recalculation.
ADR 0140 — Schedule graph and observed-path DCMA metricsSee the Scheduling Kernel Plan for K1 graph and driving-path tracing.
CPL is the longest sum of remain_drtn_hr_cnt walking backward from terminal activities through predecessors with total_float_hr_cnt <= 0. Level-of-effort, milestones, and WBS summaries are excluded.
When the graph has a cycle, project remaining cannot be measured, or no critical chain exists, the check is degraded (info) and states the reason. Observed float is never overwritten.
Remediation playbook
Recover the driving path or re-sequence remaining work so CPLI returns to the 0.95–1.05 band.
Implementation
Computed inside runHealthAnalysis → check id cpli (src/features/health/utils/dcmaAnalysis.ts via src/kernel/graph/criticalPathMetrics.ts).