Slipcurve›Scheduling and risk
Quantitative schedule risk analysis, run on the critical path — not beside it
A complete CPM engine, and a Monte Carlo simulation that samples the same network the deterministic plan was computed from — so the P80 date and the plan it is measured against cannot quietly be describing two different schedules.
What a P80 date is, and why it is later than the plan
A deterministic CPM schedule produces one finish date and states no confidence in it. That date is what you get when every activity duration is treated as exact and every parallel path merging into a milestone is assumed to arrive on time at once. Neither assumption survives contact with a job, and the second is the expensive one: when several paths converge, the milestone waits for the latest of them, so the merge is later than any single path's average. That is merge bias, and no amount of care in the single-point estimate removes it.
Quantitative schedule risk analysis — QSRA — replaces each duration with a three-point estimate, runs the network over thousands of iterations, and reports the distribution as a histogram and as an S-curve of cumulative probability. A P80 date is the date by which the simulation finished in 80 per cent of iterations. Industry practice sizes schedule contingency to a target confidence level, commonly P80 and up to P90 on high-risk programmes; that contingency is the gap between the deterministic finish and the chosen percentile, measured in working days rather than taken as a percentage of the duration.
What the simulation reports
Every run returns the distribution of the project finish and, separately, the distribution of every milestone in it. Per-milestone dates are kept as exact samples as well as histogram bins, so a date that goes into a contract is a real order statistic rather than an interpolation between two bars — and the engine reports the largest disagreement between the two, which corroborates the histogram's error bound instead of asserting it.
- Criticality index per activity, ranked as a tornado: the share of iterations in which that activity landed on the critical path. An activity at 100 per cent is critical in every world; one at 0 per cent never is, and the ones in between are where a schedule is actually fragile — and that is the question a single deterministic critical path cannot answer.
- Duration sensitivity: the correlation between an activity's sampled duration and the project finish. High criticality with low sensitivity is a short activity you cannot avoid; high sensitivity is where compressing pays.
- Risk register events fired as events rather than as padding — a probability of occurrence and a three-point impact, so an event that fires in 39 per cent of iterations for a mean of 14 days contributes an expected 5.5 days rather than a flat allowance.
- Correlation between activity durations, because durations on one job are not independent and treating them as independent narrows the distribution artificially.
- Cost distribution alongside the date distribution, with a recommended contingency at the chosen confidence.
A mitigated run is overlaid on the gross run rather than substituted for it, on the identical random seed, so the published number stays the un-mitigated one and the effect of the mitigation plan is visible as a distance rather than as a replacement.
The banner above the forecast
The most important thing on the risk page is not a number. Before you run, above the forecast, the page states how much of the remaining duration is still sitting on the global default uncertainty band rather than on a band somebody chose:
Most of the duration is on one assumed band — 100 % of the remaining duration is still on the global default. That is an assumption, not an estimate: the P80 below is only as good as it.
A risk analysis whose inputs are all defaults produces a beautifully-shaped distribution that means nothing, and it is indistinguishable on screen from one whose inputs were estimated by the people doing the work. Separately-licensed risk products do the simulation; they do not generally tell you that.
DCMA 14-point schedule assessment, with CPLI and BEI
The Defense Contract Management Agency's fourteen-point assessment is the widest-used structural health check on a CPM schedule, and it is used far beyond defence work. This implementation scores sixteen rows — the fourteen, plus two progress checks — and reports each by name and value rather than as a pass/fail badge: logic completeness, leads, lags, relationship types, hard constraints, high float, negative float, high duration, invalid dates, resources, missed tasks, the critical path test, the critical path length index (CPLI) and the baseline execution index (BEI).
When actual dates fail the integrity screen, the assessment returns a blocked verdict naming what is wrong. It does not return a score.
That refusal is the design decision worth understanding. A quality score computed over dates that cannot be trusted is worse than no score, because it is a defensible-looking artefact: the review then argues about the number instead of about the four activities with an actual finish in the future.
Float, and the paths you cannot see from one number
Total float on its own hides the structure of a schedule. This engine enumerates multiple float paths in order — the critical path, then the next-most-critical, and so on — and reports how many activities it placed and whether the enumeration was exhausted, so a path list that stopped early says so rather than looking complete.
Free float is reported separately from total float and genuinely differs. An activity with sixteen hours of total float and zero free float cannot slip by even an hour without moving its successor; the two numbers answer different questions and collapsing them into one column loses the one a superintendent needs.
Longest path is reported alongside total float, which matters the moment a schedule carries constraints or multiple calendars, because zero-total-float and longest-path stop being the same set of activities.
Per-activity calendars, honoured in both answers
A concrete cure runs seven days a week. A night-shift tie-in runs when the road is closed. A subcontractor observes a different holiday set. Each of those is an activity on its own working week, and a scheduler that only understands one project calendar either lengthens them or lies about them.
Here an activity's own calendar converts its duration into the span it occupies on the one project-calendar timeline — and, because the same network is what the simulation samples, it does so in the deterministic plan and in the risk distribution together. Getting that right in one of the two is the failure mode: both schedules still finish on the same day, and they disagree per activity by exactly that task's float, which no summary-level check can see.
Levelling, compression and scenarios
- Resource levelling where the preview runs the entire pass — recomputing, rescheduling and scoring every candidate — and then restores the document field by field before returning. A page that only previewed has not touched the plan every other open module is reading. Applying writes exactly the moves the preview listed, and hands back the snapshot that undoes them.
- Time-cost compression with a step-by-step crash ledger: which activity was crashed at each step, the days saved, the resulting finish, the cumulative cost — and the marginal cost at the knee, which is the number that tells you when to stop buying days.
- Scenario studio and baseline comparison, where the baseline has exactly one writer so a field captured by one path and not another cannot silently stop being restorable.
Interchange
The simulation runs on the network this engine schedules, so a quantitative risk analysis is not a second tool reading an export of your programme, and it does not sit behind an Oracle licence. What crosses the boundary is the schedule file itself.
1:1 or DRIFT. A lossy export is a number on the screen,
not a discovery six months later.What this does not do
- Activity codes. P6's coding dictionary has no equivalent here. Grouping and filtering run off the WBS and the record fields instead.
- Roles, and levelling priorities. Resources are assigned directly; there is no role abstraction, and levelling cannot be told which activity to protect.
- Effort-driven scheduling, task types and manual scheduling. The Microsoft Project family of behaviours around fixed-work and fixed-units is deliberately out of scope.
- Configurable lag calendar. Lag is counted on the project calendar because the MSPDI format gives a link no way to state a different one. That constraint is printed in the schedule log with its reason rather than left as an assumption.
- Multi-user concurrent editing, check-in/check-out across a team, and an enterprise project structure. One project is held at a time.
- Reflection projects with merge-back, and a resource pool shared across projects.
Related
- Delay forensics and entitlement — the retrospective counterpart: the AACE-mapped methods for arguing about a schedule after the fact.
- Cost, contracts and earned value — where the schedule's percent complete meets the money, and why there is no SPI without a baseline.
- BIM, IFC and 4-D coordination — the schedule driving a model, and a clash tested against its activity's float.