Schedule quality
A schedule can look fine and be structurally unsound.
Open ends that let activities float free of the network. Hard constraints propping the dates up. Negative float nobody has looked at since the last revision. None of it shows on a bar chart, all of it decides whether the finish date means anything — and it is the first thing an opposing expert goes looking for.
The check
Grading a schedule is normally a second purchase.
Logic completeness, lead and lag discipline, constraint discipline, float distribution, whether progress is keeping up with the plan — these are what separate a schedule you can defend from one that merely looks finished. None of them show on a bar chart.
The tools that check them are sold as their own platforms, on their own subscriptions, often with a minimum project commitment — and typically requiring a P6 licence just to open the file being graded.
LumaPlan runs the checks on every recalculation, in the scheduler. No second product, no second subscription, and no waiting for next month's report.
The rules
All 24 checks, and what each one is looking for.
Every finding is clickable — it selects the activities or links it is complaining about, so a violation goes straight to the thing that has to change. Presets narrow the set: a general preset for ordinary work, an EVMS preset for reporting against an earned-value baseline.
- Every activity has at least one predecessor and one successor
- At least 85 % of links are Finish-to-Start
- No more than 5 % of links carry positive lag
- No negative lag (lead) anywhere
- No Start-to-Finish links
- At most 15 predecessors on any one activity
- No hard constraints outside award and completion milestones
- Activity duration at most two fiscal months
- Activity duration at least one working day
- No negative total float
- Total float no greater than 44 days
- Critical activities under 40 % of the schedule
- Near-critical activities (float ≤ 20 d) at most 20 %
- FF lag within the successor's duration, capped at 22 days
- Every SS link paired with an FF link to the same successor
- No dates on the wrong side of the data date
- Activities of a day or more carry resources or budget
- At most 5 % of activities due by the data date have missed it
- A delay injected into a driving critical activity moves the project finish
- Critical Path Length Index at or above 0.95
- Baseline Execution Index at or above 0.95
- No resource loaded beyond max units for five days or more
- A weather buffer milestone exists where work is weather-sensitive
- Reported actual cost reconciles with budget × percent complete
Nine of them go beyond the published standards. They come from what actually goes wrong on construction programmes: crews double-booked, a monsoon nobody put a milestone against, and a cost report that does not match the progress claimed for it.
Why it belongs here
Grading a schedule after you ship it is too late.
The usual arrangement is a separate analytics product that ingests your file on a cycle and reports back. That works, and it is how a lot of claims get won. But it means the schedule leaves your hands unsound and comes back graded — after it has already been issued.
Because LumaPlan's health engine reads the same in-memory schedule the scheduler just produced, the check runs before the submittal does. Fixing an open end is a click, not next month's report.
And because LumaPlan opens and directly, you can grade someone else's schedule without owning the tool that made it — the licence gate that keeps most reviewers from checking what they were sent.
What it feeds
Health is the entry point, not the whole story.
Quality over updates
Findings are recorded per revision, so degradation shows as a trend rather than as a surprise at handover.
Driving-path replay
When the finish moved, the driving-path player shows which chain took over and on which update — the difference between “we are late” and “this is why”.
Monte Carlo on top
Once the logic is sound, simulate it. A criticality index earned on a schedule with broken logic is a confident answer to the wrong question.