Appendix B — CPM Scheduling Workbook
Twenty worked problems with complete solutions.
Chapter 14 taught you the critical path method. This appendix is where it becomes a skill you own. There is exactly one way that happens: repetition with feedback. Read a forward pass and you will understand it. Run twenty of them and you will be able to look at somebody else's schedule and know, in about ninety seconds, whether the numbers are honest.
Do them with a pencil. Do not read the solution first — the gap between recognizing a worked answer and producing one is where careers stall, and it closes in exactly one way.
Every problem is built from the book's projects: the Northgate Outpatient Pavilion, the Willow Street Community Center, the Cottonwood Creek Bridge Replacement, and Harbor Ridge. Every number has been recomputed. If you find an arithmetic error, you are almost certainly right and this page is wrong — say so.
All durations, activity costs, crash costs, and crew sizes in these problems are illustrative teaching data. They are internally consistent and the right order of magnitude, which is what makes them teachable. They are not a price list and they are not productivity data, and every project, company, and person in them is a Tier-3 composite. The two figures you should expect to meet again elsewhere in this book are the canonical daily exposures: Northgate at $10,650 per calendar day ($5,150 extended general conditions + $5,500 liquidated damages) and Willow Street at $2,800 per calendar day ($1,600 + $1,200).
Contents
| # | Problem | Teaches |
|---|---|---|
| 1 | Northgate site mobilization | First forward and backward pass |
| 2 | Willow Street foundations | Merge logic; the check that LS returns to zero |
| 3 | Cottonwood Creek abutments | A procurement chain in parallel with field work |
| 4 | Northgate north elevation | TF vs. FF, and who spends it first |
| 5 | Northgate electrical service | Independent float |
| 6 | Willow Street gym floor | Free float that belongs to the chain |
| 7 | Northgate Level 3 interiors | Ranking paths by float |
| 8 | Harbor Ridge | Path enumeration |
| 9 | Willow Street enclosure | Why crashing one path buys nothing |
| 10 | Cottonwood Creek pier 2 | Lags on the critical path |
| 11 | Northgate L2 interiors | SS/FF ladders and the missing FF link |
| 12 | Willow Street | Adding days to a critical activity |
| 13 | Willow Street | Spending past the float |
| 14 | Willow Street | Negative float ranks urgency |
| 15 | Northgate imaging suite | Phantom float and the mandatory-date wall |
| 16 | Willow Street | Cost slope; crash the cheapest critical activity |
| 17 | Willow Street | Multi-step compression and path shifts |
| 18 | Willow Street carpenters | Histograms; leveling inside and outside float |
| 19 | Willow Street | The cash-flow curve and the early/late envelope |
| 20 | Willow Street update 8 | Fragnet, time impact, concurrency, entitlement |
How to work these problems by hand
You will not run CPM by hand on a real job. You will run it by hand here so that when the software hands you a wrong answer with total confidence, you know what the answer should have looked like.
The convention, stated once. This workbook uses the elapsed-time (zero-based) convention, which is what scheduling software uses internally:
- ES = 0 for the first activity, meaning "the start of work day 1."
- EF = ES + Duration, meaning "the end of work day EF."
- An activity with ES 5 and EF 17 occupies work days 6 through 17.
The other common convention numbers days from 1 and requires a +1 on every handoff. Both are
correct. Neither is correct if you mix them. All durations here are work days (WD) unless the
problem says otherwise.
The tabular method — six steps, always in this order.
1. Build the table before you calculate anything. Columns: ID, Description, Duration, Predecessors, ES, EF, LS, LF, TF, FF. Fill in the first four from the problem. Leave the rest blank.
2. Add a successors column. Read the predecessor column and invert it. This takes ninety seconds and it is the single highest-value habit in hand CPM, because the backward pass needs successors and you will otherwise re-derive them ten times and get one of them wrong.
3. Forward pass, top to bottom. ES = the LARGEST EF among all predecessors (0 if none);
EF = ES + Duration. Work through the table in an order where every activity's predecessors are
already computed. Do not skip an activity because it looks obvious. The project duration is the
largest EF in the network.
4. Backward pass, bottom to top. Set the last activity's LF to the project duration. Then
LF = the SMALLEST LS among all successors; LS = LF − Duration.
Max going forward, min coming back. A merging activity waits for its slowest predecessor. A bursting activity must finish in time for its most urgent successor.
5. Check before you go further. With no imposed dates, the first activity's LS must come back to 0. If it does not, you have an error. Find it now; every float number downstream of it is wrong.
6. Float, and the second check. TF = LS − ES, and it must also equal LF − EF. Compute both;
the disagreement is a free error check. Then
FF = (smallest ES among successors) − EF, and IF = TF − FF.
The critical path is the chain of activities with the minimum total float — zero in an unconstrained network — and it is also, always, the longest path through the network. Verify it by adding the durations along the chain; the sum must equal the project duration.
Formula reference, all in one place: Appendix A §A.9.
Problem 1 — Northgate site mobilization
⭐ Small network, finish-to-start only.
Kestrel is mobilizing on the Northgate site the week of Notice to Proceed, March 3, Year 1.
| ID | Activity | Duration (WD) | Predecessors |
|---|---|---|---|
| A | Mobilize trailers, temporary power and water | 4 | — |
| B | Install perimeter fence, gates, and signage | 3 | A |
| C | Erosion control, silt fence, stabilized entrance | 5 | A |
| D | Clear and grub the building pad area | 6 | B, C |
| E | Strip and stockpile topsoil (≈4,000 CY) | 4 | D |
+--------+ +--------+
| A |---+-->| B |---+
| 4 WD | | | 3 WD | |
+--------+ | +--------+ | +--------+ +--------+
| +--->| D |---->| E |
| +--------+ | | 6 WD | | 4 WD |
+-->| C |---+ +--------+ +--------+
| 5 WD |
+--------+
Do all four: (a) forward pass; (b) backward pass; (c) total float and free float for every activity; (d) the critical path and the project duration.
Solution
Forward pass — ES = max(EF of predecessors), EF = ES + Dur.
| ID | Dur | Preds | ES | EF | Occupies WD |
|---|---|---|---|---|---|
| A | 4 | — | 0 | 4 | 1–4 |
| B | 3 | A | 4 | 7 | 5–7 |
| C | 5 | A | 4 | 9 | 5–9 |
| D | 6 | B (7), C (9) | 9 | 15 | 10–15 |
| E | 4 | D | 15 | 19 | 16–19 |
Project duration = 19 work days.
Backward pass — LF = min(LS of successors), LS = LF − Dur. Set LF(E) = 19.
| ID | Dur | Succs | LF | LS |
|---|---|---|---|---|
| E | 4 | — | 19 | 15 |
| D | 6 | E (15) | 15 | 9 |
| C | 5 | D (9) | 9 | 4 |
| B | 3 | D (9) | 9 | 6 |
| A | 4 | B (6), C (4) | 4 | 0 ✓ |
LS(A) = 0. The pass checks out.
Float
| ID | ES | EF | LS | LF | TF = LS−ES | Check LF−EF | FF | IF | Critical? |
|---|---|---|---|---|---|---|---|---|---|
| A | 0 | 4 | 0 | 4 | 0 | 0 ✓ | 0 | 0 | YES |
| B | 4 | 7 | 6 | 9 | 2 | 2 ✓ | 2 | 0 | no |
| C | 4 | 9 | 4 | 9 | 0 | 0 ✓ | 0 | 0 | YES |
| D | 9 | 15 | 9 | 15 | 0 | 0 ✓ | 0 | 0 | YES |
| E | 15 | 19 | 15 | 19 | 0 | 0 ✓ | 0 | 0 | YES |
Critical path: A → C → D → E = 4 + 5 + 6 + 4 = 19 WD ✓
What this problem was teaching. The merge at D is the whole exercise. D waits for C at day 9, not for B at day 7, because a merging activity waits for its slowest predecessor. If you took an average, or the first predecessor you wrote down, you would have produced a project duration of 17 and been wrong in the direction that always favors you. That is how optimistic baselines get built without anybody lying.
Second point, quietly: erosion control is on the critical path and the fence is not. New project engineers assume the fence goes first because it is the visible thing. The stormwater controls have to be in before you disturb the ground, and on a site disturbing an acre or more that is a regulatory requirement, not a preference.
Problem 2 — Willow Street foundations
⭐ Small network, one activity with a lot of float.
The Willow Street Community Center, City of Rivermont Parks & Recreation. The site is flat, 2.1 acres, with one existing 8-inch water main to relocate.
| ID | Activity | Duration (WD) | Predecessors |
|---|---|---|---|
| A | Mobilize and stake the building | 3 | — |
| B | Excavate footings and grade beams | 6 | A |
| C | Relocate the existing 8-inch water main | 8 | A |
| D | Form, reinforce, and place footings | 10 | B |
| E | Foundation walls and CMU stem | 8 | D |
| F | Under-slab plumbing and electrical | 6 | C, D |
| G | Vapor barrier, reinforcing, slab on grade | 7 | E, F |
Find: ES, EF, LS, LF, TF, and FF for every activity; the critical path; the project duration. Then answer: the water-main relocation shows a lot of float. Is it safe to start it late?
Solution
Forward pass
| ID | Dur | Preds | ES | EF |
|---|---|---|---|---|
| A | 3 | — | 0 | 3 |
| B | 6 | A | 3 | 9 |
| C | 8 | A | 3 | 11 |
| D | 10 | B | 9 | 19 |
| E | 8 | D | 19 | 27 |
| F | 6 | D (19), C (11) | 19 | 25 |
| G | 7 | E (27), F (25) | 27 | 34 |
Project duration = 34 work days.
Backward pass, LF(G) = 34
| ID | Dur | Succs | LF | LS |
|---|---|---|---|---|
| G | 7 | — | 34 | 27 |
| F | 6 | G (27) | 27 | 21 |
| E | 8 | G (27) | 27 | 19 |
| D | 10 | E (19), F (21) | 19 | 9 |
| C | 8 | F (21) | 21 | 13 |
| B | 6 | D (9) | 9 | 3 |
| A | 3 | B (3), C (13) | 3 | 0 ✓ |
Float
| ID | ES | EF | LS | LF | TF | FF | IF | Critical? |
|---|---|---|---|---|---|---|---|---|
| A | 0 | 3 | 0 | 3 | 0 | 0 | 0 | YES |
| B | 3 | 9 | 3 | 9 | 0 | 0 | 0 | YES |
| C | 3 | 11 | 13 | 21 | 10 | 8 | 2 | no |
| D | 9 | 19 | 9 | 19 | 0 | 0 | 0 | YES |
| E | 19 | 27 | 19 | 27 | 0 | 0 | 0 | YES |
| F | 19 | 25 | 21 | 27 | 2 | 2 | 0 | no |
| G | 27 | 34 | 27 | 34 | 0 | 0 | 0 | YES |
Critical path: A → B → D → E → G = 3 + 6 + 10 + 8 + 7 = 34 WD ✓
5 10 15 20 25 30
| | | | | |
A Mobilize ###
B Excavate footings ######
C Relocate 8" water main ========..........
D Form/place footings ##########
E Foundation walls / stem ########
F Under-slab MEP ======..
G Slab on grade #######
### critical (TF = 0) === has float ... total float
Is it safe to start the water main late? On the arithmetic, yes — 10 days of total float, 8 of them free. On the job, no, and this is the judgment the calculation cannot make for you. A live 8-inch main relocation involves the water utility's schedule, a shutdown window, pressure testing, disinfection, and bacteriological sampling with a laboratory turnaround measured in days. None of that is inside your control, and none of it is in the 8-day duration. A chain whose float depends on a third party you cannot accelerate is a chain you manage as critical regardless of what the float column says.
What this problem was teaching. Two things. First, the double merge — D takes the max of two predecessors on the backward pass just as it takes the max on the forward pass, and the answer at A comes from the minimum of B and C's late starts. Second, that a float number is a fact about the network, not a permission slip.
Problem 3 — Cottonwood Creek abutments and cofferdam
⭐⭐ Two parallel chains, one of them procurement.
The Cottonwood Creek Bridge Replacement — $18.7M, state DOT owner, unit-price contract, 210 working days. Superintendent Del Ferraro, project engineer Ingrid Sørensen.
| ID | Activity | Duration (WD) | Predecessors |
|---|---|---|---|
| A | Mobilize and build the haul road | 5 | — |
| B | Clear, grub, and stage both approaches | 6 | A |
| C | Excavate east abutment | 8 | B |
| D | Excavate west abutment | 7 | B |
| E | Fabricate and deliver sheet piling | 13 | A |
| F | Drive sheet piling, east | 5 | C, E |
| G | Drive sheet piling, west | 4 | D, E |
| H | Cofferdam seal and dewater | 6 | F, G |
+--------+ +--------+
+--->| C |-->| F |---+
| | 8 WD | | 5 WD | |
+--------+ +--------+ | +--------+ +--------+ | +--------+
| A |->| B |--+ +-->| H |
| 5 WD | | 6 WD | | +--------+ +--------+ +-->| 6 WD |
+--------+ +--------+ +--->| D |-->| G |---+ +--------+
| | 7 WD | | 4 WD |
| +--------+ +--------+
| +--------+ ^ ^
+----->| E |----------+--+
| 13 WD | (E feeds both F and G)
+--------+
Find: the full table, the critical path, and — for Del — which single activity would you watch hardest, and why is it not on the critical path?
Solution
Forward pass
| ID | Dur | Preds | ES | EF |
|---|---|---|---|---|
| A | 5 | — | 0 | 5 |
| B | 6 | A | 5 | 11 |
| C | 8 | B | 11 | 19 |
| D | 7 | B | 11 | 18 |
| E | 13 | A | 5 | 18 |
| F | 5 | C (19), E (18) | 19 | 24 |
| G | 4 | D (18), E (18) | 18 | 22 |
| H | 6 | F (24), G (22) | 24 | 30 |
Project duration = 30 work days.
Backward pass, LF(H) = 30
| ID | Dur | Succs | LF | LS |
|---|---|---|---|---|
| H | 6 | — | 30 | 24 |
| G | 4 | H (24) | 24 | 20 |
| F | 5 | H (24) | 24 | 19 |
| E | 13 | F (19), G (20) | 19 | 6 |
| D | 7 | G (20) | 20 | 13 |
| C | 8 | F (19) | 19 | 11 |
| B | 6 | C (11), D (13) | 11 | 5 |
| A | 5 | B (5), E (6) | 5 | 0 ✓ |
Float
| ID | ES | EF | LS | LF | TF | FF | IF | Critical? |
|---|---|---|---|---|---|---|---|---|
| A | 0 | 5 | 0 | 5 | 0 | 0 | 0 | YES |
| B | 5 | 11 | 5 | 11 | 0 | 0 | 0 | YES |
| C | 11 | 19 | 11 | 19 | 0 | 0 | 0 | YES |
| D | 11 | 18 | 13 | 20 | 2 | 0 | 2 | no |
| E | 5 | 18 | 6 | 19 | 1 | 0 | 1 | no |
| F | 19 | 24 | 19 | 24 | 0 | 0 | 0 | YES |
| G | 18 | 22 | 20 | 24 | 2 | 2 | 0 | no |
| H | 24 | 30 | 24 | 30 | 0 | 0 | 0 | YES |
Critical path: A → B → C → F → H = 5 + 6 + 8 + 5 + 6 = 30 WD ✓
The activity to watch is E — sheet-pile fabrication and delivery — and it carries one day of float. One day. It feeds both pile-driving operations, so a slip in E does not delay one chain, it delays both, and the second day of slip lands directly on the project. And unlike the abutment excavation, nobody on Del's crew can accelerate a mill. You cannot add a Saturday to a rolling schedule.
This is the Northgate steel lesson in a different pair of boots: "it's not on the critical path" is one of the most expensive sentences in construction when the chain ends at a fabricator.
What this problem was teaching. Read D and E together. Both have small total float and zero free float — meaning if either one slips at all, it pushes a successor's early start and eats the float of the activity behind it. G is the only activity holding genuine free float (2 days), and it holds it only because it is last in line before the merge. That distinction is Problem 4.
Problem 4 — Total float versus free float
⭐⭐ The distinction that decides who pays.
Northgate, the north elevation and the Level 2 interiors behind it.
| ID | Activity | Duration (WD) | Predecessors |
|---|---|---|---|
| A | Dry in the north elevation (deck and roof) | 10 | — |
| B | Set unitized curtain wall, north elevation | 12 | A |
| C | Perimeter fire-safing and smoke seal, north | 5 | B |
| D | Overhead MEP rough-in, Level 2 north | 14 | A |
| E | In-wall rough-in, Level 2 north | 8 | D |
| F | Inspect, close walls, hang board, Level 2 north | 10 | C, E |
| G | Tape, finish, and prime, Level 2 north | 8 | F |
+--------+ +--------+ +--------+
| A |---+-->| B |-->| C |-----------+
| 10 WD | | | 12 WD | | 5 WD | |
+--------+ | +--------+ +--------+ |
| v
| +--------+ +--------+ +--------+ +--------+
+-->| D |-->| E |----->| F |-->| G |
| 14 WD | | 8 WD | | 10 WD | | 8 WD |
+--------+ +--------+ +--------+ +--------+
Find: the full table. Then: Sofia Marchetti at Cardinal Mechanical asks for five extra days on the curtain-wall perimeter fire-safing (C). The curtain-wall subcontractor asks for five extra days on setting panels (B). Both activities show five days of total float. Which request is free, and which one costs somebody something?
Solution
Forward and backward pass
| ID | Dur | Preds | ES | EF | Succs | LF | LS |
|---|---|---|---|---|---|---|---|
| A | 10 | — | 0 | 10 | B (15), D (10) | 10 | 0 ✓ |
| B | 12 | A | 10 | 22 | C (27) | 27 | 15 |
| C | 5 | B | 22 | 27 | F (32) | 32 | 27 |
| D | 14 | A | 10 | 24 | E (24) | 24 | 10 |
| E | 8 | D | 24 | 32 | F (32) | 32 | 24 |
| F | 10 | C (27), E (32) | 32 | 42 | G (42) | 42 | 32 |
| G | 8 | F | 42 | 50 | — | 50 | 42 |
Project duration = 50 work days.
Float
| ID | ES | EF | LS | LF | TF | FF | IF = TF−FF | Independent | Critical? |
|---|---|---|---|---|---|---|---|---|---|
| A | 0 | 10 | 0 | 10 | 0 | 0 | 0 | 0 | YES |
| B | 10 | 22 | 15 | 27 | 5 | 0 | 5 | 0 | no |
| C | 22 | 27 | 27 | 32 | 5 | 5 | 0 | 0 | no |
| D | 10 | 24 | 10 | 24 | 0 | 0 | 0 | 0 | YES |
| E | 24 | 32 | 24 | 32 | 0 | 0 | 0 | 0 | YES |
| F | 32 | 42 | 32 | 42 | 0 | 0 | 0 | 0 | YES |
| G | 42 | 50 | 42 | 50 | 0 | 0 | 0 | 0 | YES |
Critical path: A → D → E → F → G = 10 + 14 + 8 + 10 + 8 = 50 WD ✓
5 10 15 20 25 30 35 40 45 50
| | | | | | | | | |
A Dry-in north elevation ##########
B Set curtain wall, north ============.....
C Perimeter fire-safing =====.....
D Overhead MEP rough, L2 ##############
E In-wall rough-in, L2 ########
F Hang board, L2 ##########
G Tape, finish, prime ########
### critical (TF = 0) === has float ... total float
The answer. C's five days are free. B's five days are not.
- C has free float of 5. Perimeter fire-safing can run five days long and nothing moves — F is waiting on the in-wall rough-in anyway. Sofia's request costs the project nothing at all.
- B has free float of zero and interfering float of 5. If the curtain-wall subcontractor takes five extra days, the project still finishes on day 50 — but C's early start moves from 22 to 27, and C's free float goes to zero. The curtain-wall sub did not delay the project. It spent Sofia's room, and Sofia was not in the meeting.
Look at the dots on the Gantt chart. B's dots and C's dots are drawn separately and they are the same five days shown twice. If you have ever looked at a bar chart and added up the float column, this is the error you were making. Float belongs to the path, not to the activity.
Note also that C's independent float is zero. The five days C appears to own evaporate the moment B is late. C does not own them. C is merely standing where they are stored.
What this problem was teaching. Total float protects the project. Free float protects your successor. An activity with total float and no free float is spending somebody else's room, and the person losing it is never in the room when the extension is granted. Publish free float, not just total float, and grant extensions from the free float column.
Problem 5 — Float that is genuinely your own
⭐⭐ Independent float, which you will meet about twice a career and should recognize both times.
Northgate's permanent electrical service — 3,000 A at 480/277V.
| ID | Activity | Duration (WD) | Predecessors |
|---|---|---|---|
| A | Mobilize and set temporary power | 5 | — |
| B | Mass excavation, building pad | 15 | A |
| C | Haul off spoil, import and place structural fill | 30 | B |
| D | Excavate and place transformer pad and primary duct bank | 10 | B |
| E | Fine grade and proof-roll the building pad | 8 | C |
| F | Utility sets transformer, terminates, and energizes | 6 | D, E |
+--------+ +--------+ +--------+ +--------+
| A |-->| B |-+-->| C |-->| E |---+
| 5 WD | | 15 WD | | | 30 WD | | 8 WD | |
+--------+ +--------+ | +--------+ +--------+ |
| v
| +--------+ +--------+
+-->| D |---------->| F |
| 10 WD | | 6 WD |
+--------+ +--------+
Find: the full table, plus independent float for D. Then explain in one sentence why D's float is different in kind from the float in Problem 4.
Solution
Forward and backward pass
| ID | Dur | Preds | ES | EF | Succs | LF | LS |
|---|---|---|---|---|---|---|---|
| A | 5 | — | 0 | 5 | B (5) | 5 | 0 ✓ |
| B | 15 | A | 5 | 20 | C (20), D (48) | 20 | 5 |
| C | 30 | B | 20 | 50 | E (50) | 50 | 20 |
| D | 10 | B | 20 | 30 | F (58) | 58 | 48 |
| E | 8 | C | 50 | 58 | F (58) | 58 | 50 |
| F | 6 | D (30), E (58) | 58 | 64 | — | 64 | 58 |
Project duration = 64 work days.
Float
| ID | ES | EF | LS | LF | TF | FF | IF | Independent | Critical? |
|---|---|---|---|---|---|---|---|---|---|
| A | 0 | 5 | 0 | 5 | 0 | 0 | 0 | 0 | YES |
| B | 5 | 20 | 5 | 20 | 0 | 0 | 0 | 0 | YES |
| C | 20 | 50 | 20 | 50 | 0 | 0 | 0 | 0 | YES |
| D | 20 | 30 | 48 | 58 | 28 | 28 | 0 | 28 | no |
| E | 50 | 58 | 50 | 58 | 0 | 0 | 0 | 0 | YES |
| F | 58 | 64 | 58 | 64 | 0 | 0 | 0 | 0 | YES |
Critical path: A → B → C → E → F = 5 + 15 + 30 + 8 + 6 = 64 WD ✓
Independent float for D, worked:
Independent float = max(0, smallest ES of successors
− largest LF of predecessors
− duration)
= max(0, ES(F) 58 − LF(B) 20 − 10)
= 28 work days
Why D's float is different in kind. In Problem 4, activity C had five days of total float and zero independent float — its slack could be consumed upstream by B before C ever got a vote. D's 28 days cannot be taken from it by anybody: its predecessor B is critical, so B cannot arrive late, and its successor F is driven by a different chain (the mass-fill work through C and E), so D cannot hurt anyone downstream. Twenty-eight days that are genuinely D's own.
What this problem was teaching. Independent float is the answer to a specific and common question in a delay argument: "how much room did that subcontractor have that nobody could have taken away?" It is usually zero in a tightly chained construction network, which is exactly why it is worth computing when it is not — it is the strongest form of the "you had room and you used it" argument, and it is the only float number an opposing scheduler cannot chip away at by re-arguing upstream logic.
Practical note: D's 28 days do not mean the duct bank should be scheduled late. Utility companies run on their own calendar, and the transformer set requires an inspection, a utility crew, and usually a scheduled outage window. Twenty-eight days of independent float is exactly the buffer you want in front of an activity you do not control.
Problem 6 — The chain's float, not the activity's
⭐⭐ Free float that looks like room and is not.
The Willow Street gymnasium floor system — a long-lead procurement chain running beside the whole structural sequence.
| ID | Activity | Duration (WD) | Predecessors |
|---|---|---|---|
| A | Award subcontracts and mobilize | 4 | — |
| B | Erect structural steel and joists, first floor | 12 | A |
| C | CMU exterior and bearing walls, first floor | 20 | A |
| D | Prepare and submit gym floor system shop drawings | 6 | A |
| E | Architect review, gym floor system | 15 | D |
| F | Fabricate and deliver gym floor system | 25 | E |
| G | Second-floor wood framing and deck | 14 | B, C |
| H | Roof framing, sheathing, and dry-in | 10 | G |
| I | Install gym floor system | 8 | F, H |
Find: the full table and the critical path. Then: H shows two days of free float. Colton the carpenter foreman asks whether he can have them. What do you tell him?
Solution
Forward pass
| ID | Dur | Preds | ES | EF |
|---|---|---|---|---|
| A | 4 | — | 0 | 4 |
| B | 12 | A | 4 | 16 |
| C | 20 | A | 4 | 24 |
| D | 6 | A | 4 | 10 |
| E | 15 | D | 10 | 25 |
| F | 25 | E | 25 | 50 |
| G | 14 | B (16), C (24) | 24 | 38 |
| H | 10 | G | 38 | 48 |
| I | 8 | F (50), H (48) | 50 | 58 |
Project duration = 58 work days.
Backward pass, LF(I) = 58
| ID | Dur | Succs | LF | LS |
|---|---|---|---|---|
| I | 8 | — | 58 | 50 |
| H | 10 | I (50) | 50 | 40 |
| F | 25 | I (50) | 50 | 25 |
| G | 14 | H (40) | 40 | 26 |
| E | 15 | F (25) | 25 | 10 |
| C | 20 | G (26) | 26 | 6 |
| B | 12 | G (26) | 26 | 14 |
| D | 6 | E (10) | 10 | 4 |
| A | 4 | B (14), C (6), D (4) | 4 | 0 ✓ |
Float
| ID | ES | EF | LS | LF | TF | FF | IF | Critical? |
|---|---|---|---|---|---|---|---|---|
| A | 0 | 4 | 0 | 4 | 0 | 0 | 0 | YES |
| B | 4 | 16 | 14 | 26 | 10 | 8 | 2 | no |
| C | 4 | 24 | 6 | 26 | 2 | 0 | 2 | no |
| D | 4 | 10 | 4 | 10 | 0 | 0 | 0 | YES |
| E | 10 | 25 | 10 | 25 | 0 | 0 | 0 | YES |
| F | 25 | 50 | 25 | 50 | 0 | 0 | 0 | YES |
| G | 24 | 38 | 26 | 40 | 2 | 0 | 2 | no |
| H | 38 | 48 | 40 | 50 | 2 | 2 | 0 | no |
| I | 50 | 58 | 50 | 58 | 0 | 0 | 0 | YES |
Critical path: A → D → E → F → I = 4 + 6 + 15 + 25 + 8 = 58 WD ✓
What do you tell Colton? "Those two days are not yours. They belong to the CMU wall, the deck, and the roof — all three of you are on one chain with two days between you, and whoever gets there first spends them." The chain C → G → H has two days of total float, and all of it shows up as free float on H because H is last in line. If the CMU walls run two days long, C's slip pushes G, which pushes H, and H's free float is gone before Colton ever picks up a hammer.
What this problem was teaching. Three things worth carrying out.
First: the critical path runs entirely through paper. Submit → review → fabricate → deliver. Forty-six of the fifty-eight days involve nobody swinging a hammer, and Willow Street's field superintendent cannot accelerate any of it. This is why procurement is its own branch of the work breakdown structure and why a schedule that starts at "mobilize" cannot see the delay coming.
Second: B has ten days of total float and only eight of free float. Steel can slip eight days freely; the ninth and tenth days push G and eat the CMU chain's room.
Third: two days is not a buffer. The entire structural chain of a $6.8M building is protected by
two work days — about three calendar days, worth 3 × $2,800 = $8,400 on Willow Street's total
daily exposure of $1,600 extended general conditions plus $1,200 liquidated damages. Report that
number in the owner-architect-contractor meeting before it is gone, not after.
Problem 7 — Near-critical paths
⭐⭐ Where the risk actually lives.
Northgate, Level 3 interiors. This is the sequence Chapter 10 warned you about: above the ceiling is where the project is won or lost.
| ID | Activity | Duration (WD) | Predecessors |
|---|---|---|---|
| A | Overhead HVAC duct mains, Level 3 | 12 | — |
| B | Overhead sprinkler mains, Level 3 | 11 | A |
| C | Overhead plumbing and medical gas, Level 3 | 9 | A |
| D | Overhead conduit and cable tray, Level 3 | 11 | B |
| E | Layout and frame partitions, Level 3 | 14 | A |
| F | In-wall rough-in, Level 3 | 10 | E |
| G | Inspections and close walls, Level 3 | 6 | C, D, F |
| H | Ceiling grid and tile, Level 3 | 9 | G |
Find: the full table. Then list every path through the network with its length and its float, and say which one you would put on the two-week look-ahead.
Solution
Forward and backward pass
| ID | Dur | Preds | ES | EF | Succs | LF | LS |
|---|---|---|---|---|---|---|---|
| A | 12 | — | 0 | 12 | B (14), C (27), E (12) | 12 | 0 ✓ |
| B | 11 | A | 12 | 23 | D (25) | 25 | 14 |
| C | 9 | A | 12 | 21 | G (36) | 36 | 27 |
| D | 11 | B | 23 | 34 | G (36) | 36 | 25 |
| E | 14 | A | 12 | 26 | F (26) | 26 | 12 |
| F | 10 | E | 26 | 36 | G (36) | 36 | 26 |
| G | 6 | C (21), D (34), F (36) | 36 | 42 | H (42) | 42 | 36 |
| H | 9 | G | 42 | 51 | — | 51 | 42 |
Project duration = 51 work days.
Float
| ID | ES | EF | LS | LF | TF | FF | IF | Critical? |
|---|---|---|---|---|---|---|---|---|
| A | 0 | 12 | 0 | 12 | 0 | 0 | 0 | YES |
| B | 12 | 23 | 14 | 25 | 2 | 0 | 2 | no |
| C | 12 | 21 | 27 | 36 | 15 | 15 | 0 | no |
| D | 23 | 34 | 25 | 36 | 2 | 2 | 0 | no |
| E | 12 | 26 | 12 | 26 | 0 | 0 | 0 | YES |
| F | 26 | 36 | 26 | 36 | 0 | 0 | 0 | YES |
| G | 36 | 42 | 36 | 42 | 0 | 0 | 0 | YES |
| H | 42 | 51 | 42 | 51 | 0 | 0 | 0 | YES |
Every path, ranked
| Path | Length | Total float | Status |
|---|---|---|---|
| A → E → F → G → H | 12 + 14 + 10 + 6 + 9 = 51 | 0 | Critical |
| A → B → D → G → H | 12 + 11 + 11 + 6 + 9 = 49 | 2 | Near-critical |
| A → C → G → H | 12 + 9 + 6 + 9 = 36 | 15 | Comfortable |
5 10 15 20 25 30 35 40 45 50
| | | | | | | | | |
A HVAC duct mains, L3 ############
B Sprinkler mains, L3 ===========..
C Plumbing / med gas, L3 =========...............
D Conduit / cable tray ===========..
E Frame partitions, L3 ##############
F In-wall rough-in, L3 ##########
G Inspect + close walls ######
H Ceiling grid and tile #########
### critical (TF = 0) === has float ... total float
Which goes on the two-week look-ahead? Both the critical path and the sprinkler/conduit chain. Kestrel's house rule — a company rule, not an industry standard — is that any path with total float of 10 work days or less is managed as critical: it goes on the two-week look-ahead, it goes in the OAC report, and it gets a named owner.
The reason is not caution for its own sake. The critical path is being watched by everybody. The chain with two days of float is being watched by nobody, and it takes two days to become critical. On Northgate that rule applied to 68 activities at zero float and another 106 at ten days or less, and Wei Chen reported both numbers every month.
What this problem was teaching. A float column is a ranking, not a pass/fail test. Sort by total float and manage from the top down until the number gets large enough that you stop caring — and decide in advance, in writing, what that number is. Note also that the plumbing and medical-gas chain at 15 days of float is genuinely comfortable and is the trade with the longest inspection lead time on a healthcare project. Float is not the only reason to watch something.
Problem 8 — Four paths through one house
⭐⭐ Path enumeration on a production build.
Harbor Ridge — a 34-lot subdivision built by Tessa Bright Homes. Superintendent Colton Reyes runs eleven houses at a time on a 92-calendar-day per-house cycle. Here is the cycle for one house, compressed to eight activities.
| ID | Activity | Duration (WD) | Predecessors |
|---|---|---|---|
| A | Foundation and slab | 5 | — |
| B | Frame walls, floor system, and roof | 12 | A |
| C | Roof shingles and dry-in | 4 | B |
| D | Windows and exterior doors | 3 | B |
| E | HVAC, plumbing, and electrical rough-in | 9 | C, D |
| F | Siding and exterior trim | 8 | C, D |
| G | Insulation and drywall | 10 | E |
| H | Interior trim, paint, cabinets, and finishes | 14 | F, G |
+--------+
+--->| C |---+
+--------+ +--------+ | | 4 WD | | +--------+ +--------+
| A |->| B |-+ +--------+ +--->| E |-->| G |--+
| 5 WD | | 12 WD | | | | 9 WD | | 10 WD | |
+--------+ +--------+ | +--------+ | +--------+ +--------+ |
+-->| D |---+ v
| 3 WD | | +--------+ +--------+
+--------+ +--->| F |--------->| H |
| 8 WD | | 14 WD |
+--------+ +--------+
Find: the full table, all four paths with their floats, and the critical path. Then: Colton has one siding crew and eleven houses. Does the siding float mean he can let it drift?
Solution
Forward and backward pass
| ID | Dur | Preds | ES | EF | Succs | LF | LS |
|---|---|---|---|---|---|---|---|
| A | 5 | — | 0 | 5 | B (5) | 5 | 0 ✓ |
| B | 12 | A | 5 | 17 | C (17), D (18) | 17 | 5 |
| C | 4 | B | 17 | 21 | E (21), F (32) | 21 | 17 |
| D | 3 | B | 17 | 20 | E (21), F (32) | 21 | 18 |
| E | 9 | C (21), D (20) | 21 | 30 | G (30) | 30 | 21 |
| F | 8 | C (21), D (20) | 21 | 29 | H (40) | 40 | 32 |
| G | 10 | E | 30 | 40 | H (40) | 40 | 30 |
| H | 14 | F (29), G (40) | 40 | 54 | — | 54 | 40 |
Project duration = 54 work days.
Float
| ID | ES | EF | LS | LF | TF | FF | IF | Independent | Critical? |
|---|---|---|---|---|---|---|---|---|---|
| A | 0 | 5 | 0 | 5 | 0 | 0 | 0 | 0 | YES |
| B | 5 | 17 | 5 | 17 | 0 | 0 | 0 | 0 | YES |
| C | 17 | 21 | 17 | 21 | 0 | 0 | 0 | 0 | YES |
| D | 17 | 20 | 18 | 21 | 1 | 1 | 0 | 1 | no |
| E | 21 | 30 | 21 | 30 | 0 | 0 | 0 | 0 | YES |
| F | 21 | 29 | 32 | 40 | 11 | 11 | 0 | 11 | no |
| G | 30 | 40 | 30 | 40 | 0 | 0 | 0 | 0 | YES |
| H | 40 | 54 | 40 | 54 | 0 | 0 | 0 | 0 | YES |
All four paths
| Path | Length | Total float |
|---|---|---|
| A → B → C → E → G → H | 5+12+4+9+10+14 = 54 | 0 — critical |
| A → B → D → E → G → H | 5+12+3+9+10+14 = 53 | 1 |
| A → B → C → F → H | 5+12+4+8+14 = 43 | 11 |
| A → B → D → F → H | 5+12+3+8+14 = 42 | 12 |
Can Colton let the siding drift? On this house, yes — eleven days of float, all of it free and all of it independent, so nobody upstream can take it and nobody downstream feels it.
Across eleven houses, absolutely not, and this is the reason Chapter 14 says CPM is the wrong tool for Harbor Ridge. Colton's constraint is not the logic inside one house. It is the crew flowing through the lots: one framing crew moving at one house every 4.5 days, one drywall crew at one every 4.0 days, one siding crew that has to be somewhere every day of the year. A CPM network of 34 identical houses is 1,394 activities of noise. What Colton needs is a line-of-balance view — production-rate lines plotted against lot number — because the problem he actually has is that the faster crew catches the slower one and runs out of work around lot 22.
What this problem was teaching. Two things. First, that a network with a single obvious "main line" usually has three or four real paths, and you should list them all with their lengths before you form an opinion. The near-critical path here is one day away — dry-in versus windows, which the framing foreman treats as interchangeable and the calculation does not.
Second, that the right schedule type is the one that shows you the problem you actually have. The CPM here is arithmetically perfect and managerially useless to Colton, which is a good thing to learn from a problem rather than from a job.
Problem 9 — Two critical paths at once
⭐⭐ And why crashing one of them buys nothing.
Willow Street enclosure. The building is 24,000 SF, two stories, wood-framed second floor over structural steel and CMU on the first floor.
| ID | Activity | Duration (WD) | Predecessors |
|---|---|---|---|
| A | Set structural steel and deck, first floor | 10 | — |
| B | CMU exterior walls, east and south elevations | 16 | A |
| C | CMU exterior walls, north and west elevations | 16 | A |
| D | Second-floor wood framing, east half | 8 | B |
| E | Second-floor wood framing, west half | 8 | C |
| F | Roof trusses, sheathing, and blocking | 12 | D, E |
| G | Roofing, flashing, and dry-in | 9 | F |
+--------+ +--------+
+--->| B |----->| D |-----+
| | 16 WD | | 8 WD | |
| +--------+ +--------+ |
+--------+ | v
| A |-+ +--------+ +--------+
| 10 WD | | | F |---->| G |
+--------+ | | 12 WD | | 9 WD |
| +--------+ +--------+ +--------+ +--------+
| | C |-->| E | ^
+--->| 16 WD | | 8 WD |-------+
+--------+ +--------+
Find: (a) the full table and the critical path — note there is more than one; (b) the mason offers to accelerate the east and south walls (B) from 16 days to 12 for $9,600. What does that buy? (c) What would it take to actually gain four days, and what would it cost?
Solution
(a) Forward and backward pass
| ID | Dur | Preds | ES | EF | Succs | LF | LS | TF | FF |
|---|---|---|---|---|---|---|---|---|---|
| A | 10 | — | 0 | 10 | B (10), C (10) | 10 | 0 ✓ | 0 | 0 |
| B | 16 | A | 10 | 26 | D (26) | 26 | 10 | 0 | 0 |
| C | 16 | A | 10 | 26 | E (26) | 26 | 10 | 0 | 0 |
| D | 8 | B | 26 | 34 | F (34) | 34 | 26 | 0 | 0 |
| E | 8 | C | 26 | 34 | F (34) | 34 | 26 | 0 | 0 |
| F | 12 | D (34), E (34) | 34 | 46 | G (46) | 46 | 34 | 0 | 0 |
| G | 9 | F | 46 | 55 | — | 55 | 46 | 0 | 0 |
Project duration = 55 work days. Every activity has zero total float.
Two critical paths:
A → B → D → F → G = 10 + 16 + 8 + 12 + 9 = 55 WD
A → C → E → F → G = 10 + 16 + 8 + 12 + 9 = 55 WD
This is not an error. It happens naturally on a schedule that has been compressed to fit a contract date, and it happens constantly on jobs where the finish date was fixed before the durations were.
(b) What does $9,600 buy? Nothing. Re-run the forward pass with B = 12:
| ID | Dur | ES | EF | LS | LF | TF |
|---|---|---|---|---|---|---|
| A | 10 | 0 | 10 | 0 | 10 | 0 |
| B | 12 | 10 | 22 | 14 | 26 | 4 |
| C | 16 | 10 | 26 | 10 | 26 | 0 |
| D | 8 | 22 | 30 | 26 | 34 | 4 |
| E | 8 | 26 | 34 | 26 | 34 | 0 |
| F | 12 | max(30, 34) = 34 | 46 | 34 | 46 | 0 |
| G | 9 | 46 | 55 | 46 | 55 | 0 |
Project duration: still 55 work days. F still waits for E at day 34. The mason's four days bought the east-and-south chain four days of float and bought the project nothing at all. $9,600 for a nicer-looking bar chart.
(c) To gain four days you have to buy both paths. Crash B and C from 16 to 12:
A → B → D → F → G = 10 + 12 + 8 + 12 + 9 = 51 WD
A → C → E → F → G = 10 + 12 + 8 + 12 + 9 = 51 WD
Project duration = 51 work days. Four days gained, for 2 × $9,600 = $19,200. Both paths are
still critical, which is what you should expect — compressing symmetric paths symmetrically keeps
them symmetric.
Is it worth it? Four work days is 4 × 1.4 = 5.6 calendar days. At Willow Street's total daily
exposure of $2,800/CD ($1,600 extended general conditions + $1,200 liquidated damages), that is
5.6 × $2,800 = $15,680 of exposure avoided against $19,200 spent. On the arithmetic alone, no.
You would need another reason — a weather window, an owner's occupancy date, a crew you need
released for the next job — and you should say out loud what that reason is.
Alternatively, look at F. Crashing the roof trusses is on both paths, so every day you buy there is a day the project actually gets. Always look for the shared activity before you buy two chains.
What this problem was teaching. When somebody hands you an acceleration proposal, the first question is not "how much?" It is "how many critical paths are there, and does this proposal shorten all of them?" A proposal that shortens one of two parallel critical paths is a proposal to spend money and receive float.
Problem 10 — Lags, and what they hide
⭐⭐⭐ Finish-to-start with lags.
Cottonwood Creek, pier 2. Concrete cure durations are modeled as lags.
| ID | Activity | Duration (WD) | Predecessor and relationship |
|---|---|---|---|
| A | Set forms and rebar, pier 2 footing | 6 | — |
| B | Place pier 2 footing concrete | 1 | A, FS |
| C | Form and reinforce pier 2 column | 8 | B, FS + 5 (footing cure) |
| D | Place pier 2 column concrete | 1 | C, FS |
| E | Strip column forms | 2 | D, FS + 3 (cure to stripping strength) |
| F | Set pier cap forms and falsework | 7 | E, FS |
| G | Place pier cap concrete | 2 | F, FS |
| H | Cure, strip falsework, and release for girders | 4 | G, FS + 10 (cap cure to design strength) |
Rules with lags: forward, ES(successor) ≥ EF(predecessor) + lag. Backward,
LF(predecessor) ≤ LS(successor) − lag.
Find: (a) the full table and the project duration; (b) how many of those days are lag; (c) what changes if you convert every lag into a real activity.
Solution
(a) Forward and backward pass
| ID | Dur | Pred (lag) | ES | EF | Succ (lag) | LF | LS | TF |
|---|---|---|---|---|---|---|---|---|
| A | 6 | — | 0 | 6 | B (0) | 6 | 0 ✓ | 0 |
| B | 1 | A (0) | 6 | 7 | C (5) | 12 − 5 = 7 |
6 | 0 |
| C | 8 | B (5) | 7 + 5 = 12 |
20 | D (0) | 20 | 12 | 0 |
| D | 1 | C (0) | 20 | 21 | E (3) | 24 − 3 = 21 |
20 | 0 |
| E | 2 | D (3) | 21 + 3 = 24 |
26 | F (0) | 26 | 24 | 0 |
| F | 7 | E (0) | 26 | 33 | G (0) | 33 | 26 | 0 |
| G | 2 | F (0) | 33 | 35 | H (10) | 45 − 10 = 35 |
33 | 0 |
| H | 4 | G (10) | 35 + 10 = 45 |
49 | — | 49 | 45 | 0 |
Project duration = 49 work days. Every activity is critical.
(b) The lag arithmetic
Sum of activity durations: 6 + 1 + 8 + 1 + 2 + 7 + 2 + 4 = 31 WD
Sum of lags: 5 + 3 + 10 = 18 WD
Project duration: 49 WD
Eighteen of forty-nine work days — 37 percent of the pier sequence — is lag. Every one of those days is on the critical path. Every one of them has no responsible party, no resource, no cost code, and no way to report progress.
(c) Convert every lag to a real activity. Same 49 work days, same critical path — and now eleven activities instead of eight:
| ID | Activity | Dur | Pred | ES | EF |
|---|---|---|---|---|---|
| A | Set forms and rebar, footing | 6 | — | 0 | 6 |
| B | Place footing concrete | 1 | A | 6 | 7 |
| CU1 | Cure footing to loading strength | 5 | B | 7 | 12 |
| C | Form and reinforce column | 8 | CU1 | 12 | 20 |
| D | Place column concrete | 1 | C | 20 | 21 |
| CU2 | Cure column to stripping strength | 3 | D | 21 | 24 |
| E | Strip column forms | 2 | CU2 | 24 | 26 |
| F | Set pier cap forms and falsework | 7 | E | 26 | 33 |
| G | Place pier cap concrete | 2 | F | 33 | 35 |
| CU3 | Cure cap; verify by field cylinders | 10 | G | 35 | 45 |
| H | Strip falsework and release for girders | 4 | CU3 | 45 | 49 |
Nothing about the arithmetic changed. Everything about the management changed. Now CU3 has a name, an owner (Ingrid Sørensen, who schedules the testing laboratory), a status you can report, and a place to hang the field-cured cylinder results. It also shows up in the two-week look-ahead, which a lag never does — and it becomes visible to a cold-weather protection decision, because CU3 in January is not CU3 in July.
One more consequence worth noting: cure activities belong on a 7-day calendar. Concrete does not know it is Saturday. Ten work days of cure on a five-day calendar is 14 calendar days of real time, and if you model it as a work-day activity you have quietly added four calendar days of slop to your own schedule.
What this problem was teaching. Kestrel's house rule: a lag is a duration with no owner. Any lag longer than five days must either be converted into a real activity or carry a written justification in the activity notes. And never use a negative lag — an FS−10 is a start-to-start relationship written badly, and when the predecessor's duration changes the successor's start moves in ways that are hard to predict and harder to explain to an arbitrator.
Problem 11 — Start-to-start, finish-to-finish, and the link somebody deleted
⭐⭐⭐⭐ The hardest problem in this workbook. Take your time.
Northgate, Level 2 Zone A interiors — an overlapped "ladder" of trades chasing each other through the same space.
| ID | Activity | Duration (WD) | Relationships |
|---|---|---|---|
| A | Layout and frame partitions, L2 Zone A | 18 | — |
| B | In-wall MEP rough-in, L2 Zone A | 15 | A SS + 6; A FF + 2 |
| C | In-wall inspections, L2 Zone A | 4 | B FF + 0 |
| D | Insulate and hang gypsum board, L2 Zone A | 16 | C FS |
| E | Tape, finish, and prime, L2 Zone A | 14 | D SS + 5; D FF + 2 |
| F | Ceiling grid, L2 Zone A | 12 | E SS + 6 |
| G | Zone A ready for flooring (milestone) | 0 | E FS; F FS |
The rules, which you must apply exactly:
| Type | Forward | Backward |
|---|---|---|
| FS + L | ES(B) ≥ EF(A) + L |
LF(A) ≤ LS(B) − L |
| SS + L | ES(B) ≥ ES(A) + L |
LS(A) ≤ LS(B) − L, so LF(A) ≤ LS(B) − L + Dur(A) |
| FF + L | EF(B) ≥ EF(A) + L, so ES(B) ≥ EF(A) + L − Dur(B) |
LF(A) ≤ LF(B) − L |
Find: (a) the full table and the project duration; (b) how many days the overlap saved; (c) the audit question — framing runs 24 work days instead of 18. What does the schedule report, and what would it report if somebody had deleted the A → B FF + 2 link during an update?
Solution
(a) Forward pass
| ID | Dur | Driving constraint | ES | EF |
|---|---|---|---|---|
| A | 18 | — | 0 | 18 |
| B | 15 | SS+6: ES ≥ 0 + 6 = 6; FF+2: EF ≥ 18 + 2 = 20 → ES ≥ 5. Max = 6 |
6 | 21 |
| C | 4 | FF+0 from B: EF ≥ 21 → ES ≥ 21 − 4 = 17 |
17 | 21 |
| D | 16 | FS from C: ES ≥ 21 |
21 | 37 |
| E | 14 | SS+5: ES ≥ 21 + 5 = 26; FF+2: EF ≥ 37 + 2 = 39 → ES ≥ 25. Max = 26 |
26 | 40 |
| F | 12 | SS+6 from E: ES ≥ 26 + 6 = 32 |
32 | 44 |
| G | 0 | FS from E (40) and F (44) | 44 | 44 |
Project duration = 44 work days.
Backward pass, LF(G) = 44
| ID | Dur | Driving constraint | LF | LS |
|---|---|---|---|---|
| G | 0 | — | 44 | 44 |
| F | 12 | FS to G: LF ≤ 44 |
44 | 32 |
| E | 14 | SS+6 to F: LS ≤ 32 − 6 = 26 → LF ≤ 40; FS to G: LF ≤ 44. Min = 40 |
40 | 26 |
| D | 16 | SS+5 to E: LS ≤ 26 − 5 = 21 → LF ≤ 37; FF+2 to E: LF ≤ 40 − 2 = 38. Min = 37 |
37 | 21 |
| C | 4 | FS to D: LF ≤ 21 |
21 | 17 |
| B | 15 | FF+0 to C: LF ≤ 21 |
21 | 6 |
| A | 18 | SS+6 to B: LS ≤ 6 − 6 = 0 → LF ≤ 18; FF+2 to B: LF ≤ 21 − 2 = 19. Min = 18 |
18 | 0 ✓ |
Total float is zero on every activity. The entire ladder is critical.
(b) What the overlap saved
Sum of durations (pure finish-to-start): 18 + 15 + 4 + 16 + 14 + 12 = 79 WD
Actual duration with the ladder: 44 WD
Saved: 35 WD
Thirty-five work days — about 49 calendar days, worth 49 × $10,650 = $521,850 of Northgate
exposure. That is what overlapping trades in a zone is worth, and it is also why coordination
meetings on a floor like this are not optional: five trades are working inside each other's areas
simultaneously, and every one of those SS lags is a promise about how far ahead one crew stays.
(c) The audit question — framing runs 24 days instead of 18
With the A → B FF + 2 link intact:
| ID | Dur | ES | EF | Change |
|---|---|---|---|---|
| A | 24 | 0 | 24 | +6 |
| B | 15 | 11 | 26 | FF+2 now governs: EF ≥ 24 + 2 = 26 → ES ≥ 11 |
| C | 4 | 22 | 26 | +5 |
| D | 16 | 26 | 42 | +5 |
| E | 14 | 31 | 45 | +5 |
| F | 12 | 37 | 49 | +5 |
| G | 0 | 49 | 49 | +5 |
Project duration = 49 work days. Six extra days of framing cost the project five days — five, not six, because in the base case the FF link had one day of slack in it. The schedule correctly reports a delay.
With the FF + 2 link deleted — leaving only A → B SS + 6:
| ID | Dur | ES | EF |
|---|---|---|---|
| A | 24 | 0 | 24 |
| B | 15 | 6 | 21 |
| C | 4 | 17 | 21 |
| D | 16 | 21 | 37 |
| E | 14 | 26 | 40 |
| F | 12 | 32 | 44 |
| G | 0 | 44 | 44 |
Project duration = 44 work days. The schedule reports zero impact.
Read that again. Framing ran six work days long, and the network says the project did not move — because a start-to-start relationship constrains the predecessor's start and says absolutely nothing about its finish. With SS+6 alone, the framing crew could run six weeks over and the schedule would keep reporting day 44, cheerfully, while drywall is scheduled to be hung on walls that do not exist.
What this problem was teaching. Every SS relationship needs a companion FF relationship wherever the physical work requires the predecessor to finish. Frame → rough-in is the textbook case: the electrician can start six days behind the framers, but the electrician cannot finish until the framers finish. Model only the start and you have built a schedule that cannot see its own delay.
When you audit somebody's schedule, filter for activities that have SS successors and no FF successors, and ask about every one. It is a five-minute check and it finds real defects. See Chapter 14 §14.5.1 for why negative lags fail for a closely related reason.
Problem 12 — Perturbation: when the critical path does not move
⭐⭐ Add days to a critical activity and watch what happens to everything else.
Return to the Problem 6 network — the Willow Street gym floor. Base duration was 58 work days with the critical path running A → D → E → F → I through the procurement chain.
Dale Whitcomb at Halvorsen + Pike is short-staffed and the architect's review of the gym floor system (E) takes 22 work days instead of 15.
Predict before you calculate: (a) the new project duration; (b) whether the critical path moves; (c) what happens to the float on the structural chain.
Solution
Forward pass with E = 22
| ID | Dur | Preds | ES | EF | Δ |
|---|---|---|---|---|---|
| A | 4 | — | 0 | 4 | — |
| B | 12 | A | 4 | 16 | — |
| C | 20 | A | 4 | 24 | — |
| D | 6 | A | 4 | 10 | — |
| E | 22 | D | 10 | 32 | +7 |
| F | 25 | E | 32 | 57 | +7 |
| G | 14 | B (16), C (24) | 24 | 38 | — |
| H | 10 | G | 38 | 48 | — |
| I | 8 | F (57), H (48) | 57 | 65 | +7 |
Project duration = 65 work days — exactly seven days longer.
Float, before and after
| ID | TF before | TF after | FF before | FF after | What happened |
|---|---|---|---|---|---|
| A | 0 | 0 | 0 | 0 | Still critical |
| B | 10 | 17 | 8 | 8 | Gained 7 days of total float |
| C | 2 | 9 | 0 | 0 | Gained 7 days |
| D | 0 | 0 | 0 | 0 | Still critical |
| E | 0 | 0 | 0 | 0 | Still critical |
| F | 0 | 0 | 0 | 0 | Still critical |
| G | 2 | 9 | 0 | 0 | Gained 7 days |
| H | 2 | 9 | 2 | 9 | Gained 7 days |
| I | 0 | 0 | 0 | 0 | Still critical |
Critical path: A → D → E → F → I = 4 + 6 + 22 + 25 + 8 = 65 WD ✓ — unchanged.
What this problem was teaching. Three results worth having in your hands.
One: seven days added to a critical activity cost the project exactly seven days. No absorption, no cushion, no negotiation. That one-for-one relationship is the definition of the critical path and it is the basis of the verification test in §A.9.4 — add 100 days to a critical activity and the finish must move 100 days.
Two: the critical path did not move, because there was no competing path close enough to take over. The nearest rival was 56 days (A → C → G → H → I) against 58, and pushing the critical path to 65 pushed it further away, not closer.
Three — and this is the one people miss — everybody else got more float. The structural chain went from 2 days to 9. That is not good news. It is a redistribution, and it is exactly the condition in which a project team relaxes about the CMU walls, spends the nine days on something else, and discovers in month six that the architect caught up on the review and the structure is critical again. Float that appears because somebody else is late is borrowed float. Report it as such.
Convert it to money before you leave: seven work days is 7 × 1.4 = 9.8 calendar days. At Willow
Street's $2,800/CD that is $27,440 of exposure from one understaffed review desk — and the
entitlement question ("who owns a review that ran seven days past the contractual period?") is
Chapter 33's territory. Give notice on time either way.
Problem 13 — Perturbation: when the critical path moves
⭐⭐⭐ Same network. Different activity. Very different outcome.
Back to the base Problem 6 network (58 work days). This time the masonry subcontractor loses two masons and the CMU exterior and bearing walls (C) take 24 work days instead of 20.
Find: (a) the new duration; (b) the new critical path; (c) the new float profile; (d) how many days C could have absorbed before anything happened, and what the day after that cost.
Solution
(a) and (b) Forward pass with C = 24
| ID | Dur | Preds | ES | EF |
|---|---|---|---|---|
| A | 4 | — | 0 | 4 |
| B | 12 | A | 4 | 16 |
| C | 24 | A | 4 | 28 |
| D | 6 | A | 4 | 10 |
| E | 15 | D | 10 | 25 |
| F | 25 | E | 25 | 50 |
| G | 14 | B (16), C (28) | 28 | 42 |
| H | 10 | G | 42 | 52 |
| I | 8 | F (50), H (52) | 52 | 60 |
Project duration = 60 work days — two days longer, not four.
Backward pass, LF(I) = 60, and the float table:
| ID | ES | EF | LS | LF | TF | FF | Was | Critical now? |
|---|---|---|---|---|---|---|---|---|
| A | 0 | 4 | 0 | 4 | 0 | 0 | 0 | YES |
| B | 4 | 16 | 16 | 28 | 12 | 12 | 10 | no |
| C | 4 | 28 | 4 | 28 | 0 | 0 | 2 | YES — became critical |
| D | 4 | 10 | 6 | 12 | 2 | 0 | 0 | no — left the critical path |
| E | 10 | 25 | 12 | 27 | 2 | 0 | 0 | no — left the critical path |
| F | 25 | 50 | 27 | 52 | 2 | 2 | 0 | no — left the critical path |
| G | 28 | 42 | 28 | 42 | 0 | 0 | 2 | YES — became critical |
| H | 42 | 52 | 42 | 52 | 0 | 0 | 2 | YES — became critical |
| I | 52 | 60 | 52 | 60 | 0 | 0 | 0 | YES |
The critical path moved. It was A → D → E → F → I (the procurement chain, 58 days). It is now A → C → G → H → I = 4 + 24 + 14 + 10 + 8 = 60 WD ✓
5 10 15 20 25 30 35 40 45 50 55 60
| | | | | | | | | | | |
A Award and mobilize ####
B Steel + joists, L1 ============............
C CMU walls, L1 ########################
D Submit gym floor shops ======..
E Architect review ===============..
F Fabricate and deliver =========================..
G 2nd-floor framing/deck ##############
H Roof framing + dry-in ##########
I Install gym floor ########
### critical (TF = 0) === has float ... total float
(d) How many days C could absorb. C had two days of total float. Run it at 22 days:
| ID | Dur | ES | EF |
|---|---|---|---|
| C | 22 | 4 | 26 |
| G | 14 | 26 | 40 |
| H | 10 | 40 | 50 |
| I | 8 | max(F 50, H 50) = 50 | 58 |
Project duration = 58 work days — unchanged. And now every activity except B has zero total float: two simultaneous critical paths, exactly at the knee.
So: days one and two are free. Day three costs a day. Day four costs a day. The masonry subcontractor's four-day slip cost the project two days, and the fourth day cost exactly as much as the third. There is no further absorption available anywhere.
2 WD × 1.4 = 2.8 CD × $2,800/CD = $7,840 of exposure.
What this problem was teaching. This is the perturbation that matters, and there are three lessons in it.
One: a "non-critical" activity is only non-critical up to its float. Two days of float means two days of protection, not a category.
Two: the critical path is a property of the current model, not of the job. Yesterday it ran through a submittal, an architect's desk, and a factory. Today it runs through masons, carpenters, and a roof. Nobody chose that. The arithmetic did.
Three, and this is the management point: when the critical path moves off procurement and onto field work, your options change completely. Ray cannot accelerate an architect's review or a factory slot. Margo Deacon can add a mason crew, add a Saturday, and re-sequence the deck by half. A critical path you can influence is worth more than one you cannot — which is why the news in this problem is genuinely better than the news in Problem 12, even though the project got longer.
Problem 14 — An imposed date and negative float
⭐⭐⭐ What negative float means, and why there is more than one number.
Return once more to the base Problem 6 network (calculated duration 58 work days). Now add the constraint that has been sitting off-page all along: the City of Rivermont's contract requires this scope complete by work day 55.
Find: (a) the float profile against the imposed date; (b) which path is "critical" now, and by what definition; (c) what free float does; (d) what you do about it.
Solution
(a) Backward pass with LF(I) = 55 instead of 58. Early dates do not change — the forward pass knows nothing about imposed finishes.
| ID | Dur | ES | EF | LS | LF | TF | FF |
|---|---|---|---|---|---|---|---|
| A | 4 | 0 | 4 | −3 | 1 | −3 | 0 |
| B | 12 | 4 | 16 | 11 | 23 | +7 | 8 |
| C | 20 | 4 | 24 | 3 | 23 | −1 | 0 |
| D | 6 | 4 | 10 | 1 | 7 | −3 | 0 |
| E | 15 | 10 | 25 | 7 | 22 | −3 | 0 |
| F | 25 | 25 | 50 | 22 | 47 | −3 | 0 |
| G | 14 | 24 | 38 | 23 | 37 | −1 | 0 |
| H | 10 | 38 | 48 | 37 | 47 | −1 | 2 |
| I | 8 | 50 | 58 | 47 | 55 | −3 | — |
Check A both ways: TF = LS − ES = −3 − 0 = −3 and LF − EF = 1 − 4 = −3 ✓
(b) The critical path under an imposed date is the path with the most negative float, not the path with zero. Here that is A → D → E → F → I at −3 work days. The structural chain (C → G → H) sits at −1 and is also late — just less late.
That distinction matters practically. A schedule with an imposed date has no zero-float path at all, and a filter set to "total float = 0" will return an empty list. Filter on the minimum, and report every path that is negative.
(c) What free float does: nothing. Compare the free float column above with Problem 6's — B is 8, H is 2, everything else is 0, exactly as before. Free float is computed entirely from early dates, and the forward pass is unaffected by an imposed finish. This is a useful diagnostic: if somebody shows you a schedule where the constraint changed the free float, the file has something else going on in it.
(d) What you do. Negative float is not a plan. It is the arithmetic telling you that you are already late against something. Three moves, in order:
- Convert it to money before the meeting. Three work days is
3 × 1.4 = 4.2calendar days. At Willow Street's $2,800/CD — $1,600 extended general conditions plus $1,200 liquidated damages — that is $11,760. That is the number the conversation is actually about. - Look at the −1 path too. Fixing only the −3 path leaves you at −1, which is still late. Recovery has to address every negative path or it is theater. This is Problem 9 in a different costume.
- Then decide among three priced options — resequence (free, but what does it cost in risk?), accelerate a specific activity (name it, price the crew), or request contract time (name the entitlement and give the notice). Chapter 14's Willow Street checkpoint asks for exactly those three.
What this problem was teaching. Negative float ranks urgency, and the ranking is the useful part. A schedule carrying −45 days across a hundred activities is not a schedule; it is an alarm. A schedule carrying −3 on one path and −1 on another is a work plan for the next two weeks.
⚠️ One caution. A schedule can carry two different negative floats against two different dates
at the same time, and they mean different things. On Northgate after the steel delay, substantial
completion forecast at −23 CD against the contract date and −10 CD against Meridian's interim clinic
lease expiry. The −23 was a money problem worth 23 × $10,650 = $244,950. The −10 was an
operational catastrophe for a health system with patients scheduled into a clinic that had no
building. Both numbers were correct. Only one of them decided anything.
Problem 15 — Auditing a schedule for constraints
⭐⭐⭐ Phantom float, and the constraint that stops delay from propagating.
Northgate, the imaging suite — the sequence behind change order #14, where Meridian's vendor selected a different MRI unit after the GMP was set.
The schedule as submitted:
| ID | Activity | Duration (WD) | Predecessors | Constraint |
|---|---|---|---|---|
| A | Demolish and re-form the depressed slab area | 6 | — | — |
| B | Additional structural framing and embeds | 8 | A | — |
| C | Place depressed slab | 3 | B | — |
| D | RF shielding installation and testing | 12 | C | — |
| E | Owner-furnished MRI unit delivered to the floor | 1 | — | Start No Earlier Than day 40 |
| F | Set MRI, connect, and vendor calibration | 5 | D, E | — |
Find: (a) run it with no constraint on E; (b) run it with the SNET at day 40 and identify the tell that a constraint is present; (c) what to do about it; (d) then the killer — Ray delays activity A by 10 work days. Show what a Mandatory Start on D at day 17 does to that delay.
Solution
(a) No constraint
| ID | Dur | Preds | ES | EF | LF | LS | TF |
|---|---|---|---|---|---|---|---|
| A | 6 | — | 0 | 6 | 6 | 0 ✓ | 0 |
| B | 8 | A | 6 | 14 | 14 | 6 | 0 |
| C | 3 | B | 14 | 17 | 17 | 14 | 0 |
| D | 12 | C | 17 | 29 | 29 | 17 | 0 |
| E | 1 | — | 0 | 1 | 29 | 28 | 28 |
| F | 5 | D (29), E (1) | 29 | 34 | 34 | 29 | 0 |
Duration 34 WD. Critical path A → B → C → D → F. E carries 28 days of float, which is honest — the MRI could arrive any time in a four-week window and nothing would move.
(b) With Start No Earlier Than day 40 on E
| ID | Dur | ES | EF | LS | LF | TF |
|---|---|---|---|---|---|---|
| A | 6 | 0 | 6 | 12 | 18 | 12 |
| B | 8 | 6 | 14 | 18 | 26 | 12 |
| C | 3 | 14 | 17 | 26 | 29 | 12 |
| D | 12 | 17 | 29 | 29 | 41 | 12 |
| E | 1 | 40 | 41 | 40 | 41 | 0 |
| F | 5 | 41 | 46 | 41 | 46 | 0 |
Duration 46 WD, and the entire concrete-and-shielding chain now shows twelve days of total float that does not exist.
The tell: LS(A) = 12, not 0. In an unconstrained network the first activity's late start must
come back to zero. When it does not, either you made an arithmetic error or there is an imposed
date somewhere in the file. That single check, applied to every schedule you are handed, finds
constraints faster than any report.
Why the float is phantom: it exists only because somebody typed a date. If the MRI actually shows up on day 34, the twelve days evaporate instantly — and by then the crew, reading the float column, has taken them.
(c) What to do: convert the constraint into logic. "Cannot start before the equipment arrives" is not a date. It is a predecessor. Model it:
| ID | Activity | Dur | Preds |
|---|---|---|---|
| X | Vendor fabrication and delivery, MRI unit (owner-furnished) | 39 | Project start |
| E | Owner-furnished MRI delivered to the floor | 1 | X |
Same 46-day answer today. Completely different behavior tomorrow, because now:
- The delivery chain has a duration, an owner, and a status you can report.
- If the vendor slips, the delay propagates and the schedule tells you what it costs.
- The 12 days of float on the concrete chain are visibly sponsored by the delivery chain, so when the delivery date moves, the float moves with it and everyone can see it happen.
(d) The killer — a Mandatory Start. Suppose the schedule carries a Mandatory Start on D at day 17 (its originally calculated early start), because someone wanted the shielding date to "hold." Now Ray's demolition and re-forming (A) runs 16 work days instead of 6.
Without the mandatory constraint:
| ID | Dur | ES | EF |
|---|---|---|---|
| A | 16 | 0 | 16 |
| B | 8 | 16 | 24 |
| C | 3 | 24 | 27 |
| D | 12 | 27 | 39 |
| F | 5 | 39 | 44 |
Duration 44 WD — the ten-day delay shows up as ten days. Correct.
With the Mandatory Start on D at day 17:
| ID | Dur | ES | EF | Note |
|---|---|---|---|---|
| A | 16 | 0 | 16 | |
| B | 8 | 16 | 24 | |
| C | 3 | 24 | 27 | |
| D | 12 | 17 | 29 | Ignores C entirely — D "starts" 10 days before its predecessor finishes |
| F | 5 | 29 | 34 |
Duration 34 WD. The schedule reports that a ten-day delay had zero impact.
That is not a rounding artifact. It is the mechanism: CPM works because delay propagates. A slip in one activity moves the next, which moves the next, until it reaches the finish or runs out of float. A mandatory constraint is a wall. Delay hits it and stops. Everything downstream keeps showing its original dates, and the finish does not move.
I have watched a project team celebrate that report. Six weeks later they were thirty days behind and could not say when it happened.
What this problem was teaching — the five-minute constraint audit. Run this on every schedule you are handed:
- Count the constraints. Kestrel's house standard is fewer than 1 percent of activities constrained and zero mandatory constraints. Numbers vary by owner and specification; what does not vary is that the count should be small and every one should be explainable.
- List them with the reason. If nobody can say why one exists, delete it and re-run.
- Convert what you can into logic. A permit is an activity, not a date.
- Check whether the constraint is creating float. Run the schedule with it removed and compare total float upstream. If float collapses, that float was never real.
- Look at the project finish milestone. This is where the worst one hides. If the finish milestone is constrained to a date later than the contract date, every path in the schedule is carrying phantom float equal to the difference.
Problem 16 — Cost slopes and a target compression
⭐⭐⭐ Crashing, step one.
The Willow Street Community Center at a summary level. The city has asked whether Kestrel can pull the substantial completion date in by eight work days to align with a grant-funded programming start.
| ID | Activity | Normal dur (WD) | Normal cost | Crash dur (WD) | Crash cost | Predecessors |
|---|---|---|---|---|---|---|
| A | Sitework and building pad | 12 | $148,000 | 9 | $166,000 | — | ||
| B | Foundations and slab on grade | 16 | $305,000 | 12 | $349,000 | A | ||
| C | Structural steel and CMU, first floor | 20 | $520,000 | 16 | $588,000 | B | ||
| D | Second-floor framing and roof structure | 18 | $410,000 | 14 | $458,000 | C | ||
| E | Roofing, flashing, and dry-in | 10 | $186,000 | 8 | $214,000 | D | ||
| F | MEP rough-in, both floors | 24 | $735,000 | 20 | $823,000 | C | ||
| G | Interior finishes and closeout | 30 | $940,000 | 25 | $1,065,000 | E, F |
+--------+ +--------+ +--------+ +--------+ +--------+
| A |->| B |->| C |->| D |->| E |---+
| 12 WD | | 16 WD | | 20 WD | | 18 WD | | 10 WD | |
+--------+ +--------+ +--------+ +--------+ +--------+ |
| v
| +--------+ +--------+
+--------->| F |----->| G |
| 24 WD | | 30 WD |
+--------+ +--------+
Find: (a) the base duration, critical path, and float; (b) the cost slope for every activity; (c) the cheapest way to gain eight work days, step by step, with the network re-run after each step.
Solution
(a) Base network
| ID | Dur | Preds | ES | EF | LS | LF | TF | FF |
|---|---|---|---|---|---|---|---|---|
| A | 12 | — | 0 | 12 | 0 | 12 | 0 | 0 |
| B | 16 | A | 12 | 28 | 12 | 28 | 0 | 0 |
| C | 20 | B | 28 | 48 | 28 | 48 | 0 | 0 |
| D | 18 | C | 48 | 66 | 48 | 66 | 0 | 0 |
| E | 10 | D | 66 | 76 | 66 | 76 | 0 | 0 |
| F | 24 | C | 48 | 72 | 52 | 76 | 4 | 4 |
| G | 30 | E (76), F (72) | 76 | 106 | 76 | 106 | 0 | 0 |
Project duration = 106 work days.
| Path | Length | Float |
|---|---|---|
| A → B → C → D → E → G | 12+16+20+18+10+30 = 106 | 0 — critical |
| A → B → C → F → G | 12+16+20+24+30 = 102 | 4 |
(b) Cost slopes
Cost slope = (crash cost − normal cost) ÷ (normal duration − crash duration)
| Activity | Δ cost | Δ days | Cost slope | Max days | On critical path? |
|---|---|---|---|---|---|
| A | $18,000 | 3 | $6,000/day | 3 | Yes (and on both paths) |
| B | $44,000 | 4 | $11,000/day | 4 | Yes (and on both paths) |
| D | $48,000 | 4 | $12,000/day | 4 | Yes — path 1 only |
| E | $28,000 | 2 | $14,000/day | 2 | Yes — path 1 only |
| C | $68,000 | 4 | $17,000/day | 4 | Yes (and on both paths) |
| F | $88,000 | 4 | $22,000/day | 4 | No — 4 days of float |
| G | $125,000 | 5 | $25,000/day | 5 | Yes (and on both paths) |
One extension shown in full:
A: ($166,000 − $148,000) ÷ (12 − 9) = $18,000 ÷ 3 = $6,000 per day
(c) The compression, step by step
Step 1 — crash A by 3 days ($6,000/day, the cheapest critical activity).
Cost: 3 × $6,000 = $18,000
Path 1: 9 + 16 + 20 + 18 + 10 + 30 = 103 ← still critical
Path 2: 9 + 16 + 20 + 24 + 30 = 99 ← still 4 days of float
Duration: 103 WD. Gained 3.
A is fully crashed. Next cheapest on the critical path is B at $11,000.
Step 2 — crash B by 4 days.
Cost: 4 × $11,000 = $44,000 (cumulative $62,000)
Path 1: 9 + 12 + 20 + 18 + 10 + 30 = 99 ← still critical
Path 2: 9 + 12 + 20 + 24 + 30 = 95 ← still 4 days of float
Duration: 99 WD. Gained 7.
Seven days. One more to go. Next cheapest on the critical path is D at $12,000.
Step 3 — crash D by 1 day.
Cost: 1 × $12,000 = $12,000 (cumulative $74,000)
Path 1: 9 + 12 + 20 + 17 + 10 + 30 = 98 ← still critical
Path 2: 9 + 12 + 20 + 24 + 30 = 95 ← float now 3
Duration: 98 WD. Gained 8. ✓
Result: eight work days for $74,000, an average of $9,250 per day — against a "sticker" range of $6,000 to $25,000 per day. Note that F, at $22,000 a day, was never a candidate: it is not on the critical path, so crashing it buys nothing at any price.
Is it worth $74,000? Eight work days is 8 × 1.4 = 11.2 calendar days. At Willow Street's
$2,800/CD that is $31,360 of exposure avoided. On the schedule arithmetic alone, no — you
would be spending $74,000 to avoid $31,360. The city has to want those eleven days for a reason
worth $42,640, and if the grant-funded programming start is genuinely worth that, this becomes a
change order conversation about who pays for acceleration, not a Kestrel decision.
What this problem was teaching. Four rules.
- Only crash activities on the critical path. Everything else is a donation.
- Crash the cheapest one first, and take all of its available days before moving on — unless the path shifts first, which is Problem 17.
- Re-run the network after every step. Not at the end. After every step.
- Watch the float on the parallel path shrink. It went 4 → 4 → 3. When it hits zero you have a second critical path and the arithmetic changes completely.
Problem 17 — Crashing to the crash point
⭐⭐⭐⭐ The full compression curve, and where the money stops buying days.
Same network as Problem 16. Now the question is different: what is the shortest this project can possibly be, and what does the curve look like on the way there?
Find: the complete crash sequence from 106 work days to the crash point, with the duration and cumulative cost after each step, and identify every point where the critical path changes.
Solution
Steps 1 and 2 are unchanged from Problem 16 — A by 3 ($18,000) and B by 4 ($44,000), reaching 99 work days for $62,000 with path 2 still holding 4 days of float.
Step 3 — crash D all four days ($12,000/day).
Cost: 4 × $12,000 = $48,000 (cumulative $110,000)
Path 1: 9 + 12 + 20 + 14 + 10 + 30 = 95
Path 2: 9 + 12 + 20 + 24 + 30 = 95
Duration: 95 WD. Gained 11.
★ Path shift #1. There are now two critical paths. Every activity in the network has zero total float. From here, any day you buy on path 1 alone is a day you do not get, because path 2 will govern.
Step 4 — crash C by 4 days ($17,000/day). C is on both paths, so it is the only single activity that still shortens the project.
Cost: 4 × $17,000 = $68,000 (cumulative $178,000)
Path 1: 9 + 12 + 16 + 14 + 10 + 30 = 91
Path 2: 9 + 12 + 16 + 24 + 30 = 91
Duration: 91 WD. Gained 15.
Step 5 — crash G by 5 days ($25,000/day). Also on both paths.
Cost: 5 × $25,000 = $125,000 (cumulative $303,000)
Path 1: 9 + 12 + 16 + 14 + 10 + 25 = 86
Path 2: 9 + 12 + 16 + 24 + 25 = 86
Duration: 86 WD. Gained 20.
Every shared activity is now fully crashed: A at 9, B at 12, C at 16, D at 14, G at 25. To go further you must buy both paths simultaneously.
Step 6 — crash E by 2 days and F by 2 days, together.
Combined slope: $14,000 (E) + $22,000 (F) = $36,000 per day of project time
Cost: 2 × $36,000 = $72,000 (cumulative $375,000)
Path 1: 9 + 12 + 16 + 14 + 8 + 25 = 84
Path 2: 9 + 12 + 16 + 22 + 25 = 84
Duration: 84 WD. Gained 22.
★ The crash point: 84 work days. E is fully crashed at 8 days, so path 1 cannot be shortened further at any price. F still has two crashable days left — and buying them is pure waste: take F to 20 and path 2 drops to 82 while path 1 stays at 84, so the project stays at 84 and you have spent $44,000 to give F two days of float.
The complete compression curve
| Step | Crash | Days gained | $/day | Step cost | Cumulative days | Duration | Cumulative cost |
|---|---|---|---|---|---|---|---|
| 0 | — (normal) | — | — | — | 0 | 106 | $0 |
| 1 | A by 3 | 3 | $6,000 | $18,000 | 3 | 103 | $18,000 | |
| 2 | B by 4 | 4 | $11,000 | $44,000 | 7 | 99 | $62,000 | |
| 3 | D by 4 | 4 | $12,000 | $48,000 | 11 | 95 | $110,000 | |
| 4 | C by 4 | 4 | $17,000 | $68,000 | 15 | 91 | $178,000 | |
| 5 | G by 5 | 5 | $25,000 | $125,000 | 20 | 86 | $303,000 | |
| 6 | E by 2 + F by 2 | 2 | $36,000 | $72,000 | 22 | 84 | $375,000 |
Look at the marginal cost column and nothing else for a moment: $6,000 → $11,000 → $12,000 → $17,000 → $25,000 → $36,000. The last two days cost six times what the first three did. That convexity is not a quirk of these numbers; it is the shape of every crash curve ever drawn, and it is the reason "how much would it cost to finish a month early?" has no single answer.
Where the money stops making sense. At Willow Street's $2,800/CD, a work day of schedule is
worth 1.4 × $2,800 = $3,920. Every step on this curve costs more than that — even step 1 at
$6,000. Pure liquidated-damages-and-general-conditions arithmetic never justifies acceleration on
this job. Acceleration gets justified by something outside the schedule: an owner's operational
date, a weather window, a crew you need for the next job, or an owner willing to pay for it.
That is exactly the Northgate steel decision. Absorbing 23 days cost $244,950; accelerating cost $168,000 and recovered 17 days, so acceleration saved $13,050 — noise on a $47.5M job. Nadia Haddad approved it in four minutes anyway, and the number she was looking at was not $13,050. It was Meridian's interim clinic lease expiring October 1, Year 2.
⚠️ And one cost that is on none of these tables. Kestrel's acceleration produced trade stacking, a rework event on deck-edge detailing, and a measurable spike in near-misses in weeks 34 through 36 — including the scaffold event Bea Salgado investigated, whose third finding was "a crew running behind after the steel acceleration, with an unwritten 'make it up' pressure." When you price acceleration, price it honestly: premium time, a second crew, and the elevated risk of putting more people in less space under more pressure. Sometimes the answer is still yes. It should never be an easy yes.
Problem 18 — Resource leveling and what it costs
⭐⭐⭐ A histogram, an over-allocation, and the schedule price of fixing it.
Willow Street interior carpentry. Every activity below is performed by Kestrel's self-perform carpenters, and the numbers in the right-hand column are how many carpenters each activity needs.
| ID | Activity | Duration (WD) | Predecessors | Carpenters |
|---|---|---|---|---|
| A | Frame interior partitions, first floor | 10 | — | 6 |
| B | Frame interior partitions, second floor | 8 | A | 6 |
| C | Install blocking and backing, first floor | 4 | A | 4 |
| D | Hang doors and frames, first floor | 5 | C | 4 |
| E | Install blocking and backing, second floor | 4 | B | 4 |
| F | Hang doors and frames, second floor | 5 | E | 4 |
| G | Casework and millwork, both floors | 10 | D, F | 5 |
Find: (a) the CPM table; (b) the early-start resource histogram and the peak; (c) level it to a crew of 8 and state what it cost; (d) level it to a crew of 7 and state what that cost.
Solution
(a) CPM table
| ID | Dur | Preds | ES | EF | LS | LF | TF | FF |
|---|---|---|---|---|---|---|---|---|
| A | 10 | — | 0 | 10 | 0 | 10 | 0 | 0 |
| B | 8 | A | 10 | 18 | 10 | 18 | 0 | 0 |
| C | 4 | A | 10 | 14 | 18 | 22 | 8 | 0 |
| D | 5 | C | 14 | 19 | 22 | 27 | 8 | 8 |
| E | 4 | B | 18 | 22 | 18 | 22 | 0 | 0 |
| F | 5 | E | 22 | 27 | 22 | 27 | 0 | 0 |
| G | 10 | D (27), F (27) | 27 | 37 | 27 | 37 | 0 | 0 |
Project duration = 37 work days. Critical path: A → B → E → F → G = 10 + 8 + 4 + 5 + 10 = 37 WD ✓ The first-floor chain C → D carries 8 days of total float, all of it appearing as free float on D.
(b) Early-start histogram
Carpenters 0 2 4 6 8 10 12
|----|----|----|----|----|----|
Days 1-10 ############ 6 (A)
Days 11-14 #################### 10 (B 6 + C 4) *** OVER ***
Days 15-18 #################### 10 (B 6 + D 4) *** OVER ***
Day 19 ################ 8 (D 4 + E 4)
Days 20-27 ######## 4 (E, then F)
Days 28-37 ########## 5 (G)
PEAK = 10 carpenters, days 11 through 18
(c) Level to a crew of 8. Shift C and D later, inside their float: C to ES 18 (work days 19–22) and D to ES 22 (work days 23–27). Both land exactly at their late starts, which is the most you can shift them.
Days 1-18 ############ 6 (A, then B)
Days 19-22 ################ 8 (C 4 + E 4)
Days 23-27 ################ 8 (D 4 + F 4)
Days 28-37 ########## 5 (G)
PEAK = 8 carpenters. PROJECT DURATION = 37 WD, unchanged.
Cost: zero dollars and zero days — but all eight days of float on the C → D chain are now spent. That is the honest price. Leveling looked free and it was not: it converted flexibility into a commitment. If the first-floor blocking now slips one day, the project slips one day, and the schedule has no room left anywhere.
(d) Level to a crew of 7. Now the arithmetic turns.
Any pair of these activities that could run concurrently exceeds 7:
| Pair | Total | Fits under 7? |
|---|---|---|
| C (4) + E (4) | 8 | No |
| C (4) + F (4) | 8 | No |
| D (4) + E (4) | 8 | No |
| D (4) + F (4) | 8 | No |
| C or D (4) + G (5) | 9 | No |
| C or D (4) + A or B (6) | 10 | No |
C and D cannot run concurrently with anything. They have to run alone, and they cannot start
before A finishes or finish after G starts. The best available sequence — either
A → C → D → B → E → F → G or A → B → E → F → C → D → G — gives the same answer:
Days 1-10 A 6 carpenters
Days 11-18 B 6
Days 19-22 E 4
Days 23-27 F 4
Days 28-31 C 4
Days 32-36 D 4
Days 37-46 G 5
PEAK = 6 carpenters. PROJECT DURATION = 46 WD.
Cost of leveling to 7: nine additional work days.
9 WD × 1.4 = 12.6 calendar days
12.6 CD × $2,800/CD = $35,280
What this problem was teaching. The rule that matters:
Leveling is free only as long as you are spending float. Once the float on an activity is gone, the only way to level further is to extend the project.
Every scheduling tool will happily run a leveling routine and hand you back a longer duration without making a noise about it. When somebody runs resource leveling, always ask what happened to the finish date.
And note the second-order lesson: the difference between a crew of 8 and a crew of 7 is one carpenter, and it is worth $35,280 on a $6.8M job. That is a staffing decision worth having a real conversation about with Margo Deacon before the leveling routine makes it for you.
Problem 19 — Cost loading and the S-curve
⭐⭐⭐ Turning a schedule into a cash-flow forecast.
Same seven-activity Willow Street network as Problem 16, at its normal durations (106 work days), with the normal costs loaded onto the activities.
| ID | Activity | ES | EF | Duration | Cost |
|---|---|---|---|---|---|
| A | Sitework and building pad | 0 | 12 | 12 | $148,000 |
| B | Foundations and slab on grade | 12 | 28 | 16 | $305,000 |
| C | Structural steel and CMU, first floor | 28 | 48 | 20 | $520,000 |
| D | Second-floor framing and roof structure | 48 | 66 | 18 | $410,000 |
| E | Roofing, flashing, and dry-in | 66 | 76 | 10 | $186,000 |
| F | MEP rough-in, both floors | 48 | 72 | 24 | $735,000 |
| G | Interior finishes and closeout | 76 | 106 | 30 | $940,000 |
| Total cost of work | $3,244,000 |
Assume each activity's cost spreads evenly across its duration, and that a month is 20 work days.
Find: (a) the period and cumulative cost by month on the early-start schedule; (b) the same on the late-start schedule (F is the only activity with float — 4 days); (c) what the gap between the two curves is for.
Solution
Daily burn rate for each activity = cost ÷ duration:
A: $148,000 ÷ 12 = $12,333.33/day E: $186,000 ÷ 10 = $18,600.00/day
B: $305,000 ÷ 16 = $19,062.50/day F: $735,000 ÷ 24 = $30,625.00/day
C: $520,000 ÷ 20 = $26,000.00/day G: $940,000 ÷ 30 = $31,333.33/day
D: $410,000 ÷ 18 = $22,777.78/day
(a) Early-start curve
| Month | Work days | What is running | Period cost | Cumulative | % of total |
|---|---|---|---|---|---|
| 1 | 1–20 | A (12 d), B (8 d) | $300,500 | $300,500 | 9.3% | |
| 2 | 21–40 | B (8 d), C (12 d) | $464,500 | $765,000 | 23.6% | |
| 3 | 41–60 | C (8 d), D (12 d), F (12 d) | $848,833 | $1,613,833 | 49.7% | |
| 4 | 61–80 | D (6 d), E (10 d), F (12 d), G (4 d) | $815,500 | $2,429,333 | 74.9% | |
| 5 | 81–100 | G (20 d) | $626,667 | $3,056,000 | 94.2% | |
| 6 | 101–106 | G (6 d) | $188,000 | $3,244,000 | 100.0% |
One month worked in full, so the pattern is unmistakable:
Month 3 (work days 41 through 60):
C, days 41-48: 8 × $26,000.00 = $208,000
D, days 49-60: 12 × $22,777.78 = $273,333
F, days 49-60: 12 × $30,625.00 = $367,500
--------
$848,833
The curve, drawn
0% 20% 40% 60% 80% 100%
|---------|---------|---------|---------|---------|
M1 $0.30M cum ##### 9.3%
M2 $0.77M cum ############ 23.6%
M3 $1.61M cum ######################### 49.7%
M4 $2.43M cum ##################################### 74.9%
M5 $3.06M cum ############################################### 94.2%
M6 $3.24M cum ################################################## 100.0%
That is the S — slow at the start when one or two trades are mobilizing, steep in the middle when structure, enclosure, and interiors overlap, flattening at the end as the trade count collapses to punch and closeout. Any project whose cash-flow curve is a straight line has been cost-loaded by dividing the contract sum by the number of months, which tells you nobody loaded anything.
(b) Late-start curve. F is the only activity with float (4 days), so it is the only bar that moves: LS 52 instead of ES 48, running work days 53–76.
| Month | Period cost | Cumulative | % of total | vs. early start |
|---|---|---|---|---|
| 1 | $300,500 | $300,500 | 9.3% | same | |
| 2 | $464,500 | $765,000 | 23.6% | same | |
| 3 | $726,333 | $1,491,333 | 46.0% | −$122,500 | |
| 4 | $938,000 | $2,429,333 | 74.9% | back in line | |
| 5 | $626,667 | $3,056,000 | 94.2% | same | |
| 6 | $188,000 | $3,244,000 | 100.0% | same |
(c) What the gap is for. The two curves form an envelope — schedulers call it the banana curve — and your actual cost should live inside it. Three uses:
- It is your billing forecast. The City of Rivermont's finance office needs to know when the draws land, and so does Owen Baptiste, Kestrel's CFO, who has to fund payroll and subcontractor payments against a 30-day owner payment cycle with retention held.
- It is your first early-warning system. Actual billings running consistently below the curve mean the job is behind. Actual billings running consistently above it may mean you are ahead — or that the schedule of values is front-loaded, which is a different conversation entirely.
- Actual cost above the early-start curve is a genuine alarm. The early-start curve is the fastest the money can legitimately be spent. Spending faster than that means either the work is costing more than budgeted or the cost is being booked against the wrong codes.
Two observations worth carrying to a real job. First, the money curve and the headcount curve peak at different times. On Northgate the money peaks around month 10 and the craft headcount peaks around month 14, because steel, curtain wall, switchgear, and air handlers are enormous dollar values installed by small crews, while partitions, drywall, ceilings, and paint are enormous headcounts installing low unit value. Staff your general conditions off the headcount curve, not the money curve, or you will be short of supervision exactly when you have the most people on site.
Second, the point where the curve crosses 50 percent is a date, not a trivia item. On Northgate, retention drops from 10 percent to 5 percent at 50 percent complete, which put roughly $1.3 million of cash back in Kestrel's hands in month 10. Find that crossing on your own curve and circle it.
Problem 20 — Delay analysis capstone
⭐⭐⭐⭐ A fragnet, a time impact, a concurrent period, and an entitlement conclusion.
The setting. Willow Street Community Center. 425 calendar days from Notice to Proceed, which Chapter 14's checkpoint converted to 281 available work days (425 CD less 121 weekend days, 9 holidays, and 14 weather days). The data date of Update 8 is the end of work day 236, leaving 45 work days to contract substantial completion at work day 281.
The remaining-work network at the data date (day 0 below = the data date):
| ID | Remaining activity | Rem. dur (WD) | Predecessors |
|---|---|---|---|
| P1 | Complete MEP overhead rough-in, second floor | 10 | — |
| P2 | Inspect and close walls, second floor | 6 | P1 |
| P3 | Ceiling grid and tile, second floor | 8 | P2 |
| P4 | Install gymnasium floor system | 12 | — |
| P5 | Gym equipment, bleachers, and striping | 7 | P4 |
| P6 | Commercial kitchen equipment set and connect | 9 | — |
| P7 | Final finishes, paint touch-up, and final clean | 10 | P3, P5, P6 |
| P8 | Commissioning, punch, and substantial completion | 8 | P7 |
Two things then happen in the same window.
Event 1 (owner). On the data date, the City issues a bulletin changing the gymnasium floor from a floating maple system to a poured urethane system. The fragnet:
| ID | Fragnet activity | Dur (WD) | Predecessors |
|---|---|---|---|
| F1 | Price and negotiate the change (RFP through executed change order) | 8 | — (starts at the directive) |
| F2 | Resubmit and review the revised flooring submittal | 10 | F1 |
| F3 | Fabricate and deliver the revised system | 15 | F2 |
P4 becomes a successor of F3 and its duration drops to 9 work days — urethane installs faster.
Event 2 (contractor). In the same period, Kestrel's mechanical subcontractor cannot staff the second floor. P1 runs 40 work days instead of 10.
Find: (a) the baseline forecast from Update 8; (b) the time impact of the owner event alone; (c) the impact of the contractor event alone; (d) the impact of both; (e) the concurrent period; and (f) the entitlement conclusion, with the money.
Solution
(a) Update 8 baseline — the remaining-work forecast before either event
| ID | Dur | Preds | ES | EF | LF | LS | TF |
|---|---|---|---|---|---|---|---|
| P1 | 10 | — | 0 | 10 | 13 | 3 | 3 |
| P2 | 6 | P1 | 10 | 16 | 19 | 13 | 3 |
| P3 | 8 | P2 | 16 | 24 | 27 | 19 | 3 |
| P4 | 12 | — | 0 | 12 | 20 | 8 | 8 |
| P5 | 7 | P4 | 12 | 19 | 27 | 20 | 8 |
| P6 | 9 | — | 0 | 9 | 27 | 18 | 18 |
| P7 | 10 | P3 (24), P5 (19), P6 (9) | 24 | 34 | 37 | 27 | 3 |
| P8 | 8 | P7 | 34 | 42 | 45 | 37 | 3 |
Remaining duration = 42 work days, against 45 work days available. Project float = +3 WD.
The longest path runs P1 → P2 → P3 → P7 → P8. Note that nothing shows zero float, because the late dates are set by the contract date rather than by the calculated finish. That is normal on an update and it is what "project float" means.
(b) Owner event alone — insert the fragnet and recalculate
| ID | Dur | Preds | ES | EF |
|---|---|---|---|---|
| F1 | 8 | — | 0 | 8 |
| F2 | 10 | F1 | 8 | 18 |
| F3 | 15 | F2 | 18 | 33 |
| P4 | 9 | F3 | 33 | 42 |
| P5 | 7 | P4 | 42 | 49 |
| P1 | 10 | — | 0 | 10 |
| P2 | 6 | P1 | 10 | 16 |
| P3 | 8 | P2 | 16 | 24 |
| P6 | 9 | — | 0 | 9 |
| P7 | 10 | P3 (24), P5 (49), P6 (9) | 49 | 59 |
| P8 | 8 | P7 | 59 | 67 |
Remaining duration = 67 work days.
Time impact = 67 − 42 = 25 work days of delay to the forecast completion
Against the contract date at 45 WD: 45 − 67 = −22 WD
Read that carefully, because the two numbers are different and both matter. The event pushed the forecast 25 work days. But 3 of those days were absorbed by the project float that existed before the event, so the delay past the contract date is 22 work days. The critical path has moved from the second-floor MEP chain onto the flooring procurement chain — F1 → F2 → F3 → P4 → P5 → P7 → P8.
(c) Contractor event alone — P1 = 40, no fragnet
| ID | Dur | ES | EF |
|---|---|---|---|
| P1 | 40 | 0 | 40 |
| P2 | 6 | 40 | 46 |
| P3 | 8 | 46 | 54 |
| P4 | 12 | 0 | 12 |
| P5 | 7 | 12 | 19 |
| P6 | 9 | 0 | 9 |
| P7 | 10 | max(54, 19, 9) = 54 | 64 |
| P8 | 8 | 64 | 72 |
Remaining duration = 72 work days. Against the contract date: −27 WD.
(d) Both events together
| ID | Dur | ES | EF |
|---|---|---|---|
| F1 | 8 | 0 | 8 |
| F2 | 10 | 8 | 18 |
| F3 | 15 | 18 | 33 |
| P4 | 9 | 33 | 42 |
| P5 | 7 | 42 | 49 |
| P1 | 40 | 0 | 40 |
| P2 | 6 | 40 | 46 |
| P3 | 8 | 46 | 54 |
| P6 | 9 | 0 | 9 |
| P7 | 10 | max(54, 49, 9) = 54 | 64 |
| P8 | 8 | 64 | 72 |
Remaining duration = 72 work days. Against the contract date: −27 WD.
(e) The concurrent period
| Scenario | Remaining duration | Days past the contract date |
|---|---|---|
| Update 8, no events | 42 WD | +3 (float) |
| Owner event alone | 67 WD | −22 WD |
| Contractor event alone | 72 WD | −27 WD |
| Both events | 72 WD | −27 WD |
Now apportion, using the but-for test on each event separately:
- Total delay past the contract date: 27 WD.
- The owner event, on its own, would have caused 22 WD of that.
- The contractor event, on its own, would have caused 27 WD of that.
- The two overlap for 22 work days — a period during which either cause, standing alone, would have delayed completion. That is genuine concurrency.
- The remaining 5 work days are caused by the contractor's delay alone. The owner event does not reach that far.
In calendar days, on a five-day calendar:
Total delay: 27 WD × 1.4 = 37.8 → 38 CD
Concurrent period: 22 WD × 1.4 = 30.8 → 31 CD
Contractor-only period: 5 WD × 1.4 = 7.0 → 7 CD
(f) Entitlement, and the money
The usual treatment where true concurrency is found — and treatments vary by jurisdiction, by contract form, and by tribunal — is that the contractor gets time but not money, and the owner gets no liquidated damages, for the concurrent period.
| Period | Days | Character | Time extension? | Compensable? | LDs? |
|---|---|---|---|---|---|
| Project float consumed | 3 WD | Neither party's, spent first | n/a | No | No |
| Concurrent | 31 CD | Excusable, non-compensable | Yes | No | No |
| Contractor-only | 7 CD | Non-excusable | No | No | Yes |
The money, on Willow Street's canonical rates — extended general conditions $1,600/CD, liquidated damages $1,200/CD:
| Item | Calculation | Amount |
|---|---|---|
| Extended general conditions Kestrel absorbs (full 38 CD) | 38 × $1,600 | $60,800 |
| Liquidated damages on the non-excusable 7 CD | 7 × $1,200 | $8,400 |
| Total cost to Kestrel | $69,200 | |
| Extended GC Kestrel would have recovered but for the concurrency | 31 × $1,600* | *$49,600 |
The concurrency cost Kestrel $49,600 of recovery it would otherwise have had — and it cost it because of a subcontractor manpower failure that Kestrel could see coming and did not fix.
What this problem was teaching. Five things, and every one of them is a thing that decides real money.
One: a time impact analysis inserts the fragnet into the schedule update that was in effect when the event occurred, not into the baseline and not into the as-built. That is what makes it contemporaneous and it is why many contracts require this method by name. See Chapter 33.
Two: project float gets spent before entitlement starts. The event pushed the forecast 25 work days and produced 22 work days of delay past the contract date, because three days of float were consumed first. Under the common "float belongs to the project" position, nobody gets paid for that.
Three: concurrency is proved with the float column, not with a calendar. Two things happening in the same month are not concurrent. Two things each of which would independently have delayed completion are concurrent. If Kestrel's mechanical slip had run 24 days instead of 30, the MEP chain would have finished at day 48 against the flooring chain's 49 — it would have consumed all its float and driven nothing, and there would be no concurrency at all. The same subcontractor failure is worth $0 or an owner's entire compensable claim depending on a number that exists only in a schedule update somebody had to run at the time.
Four: entitlement, causation, and damages are three separate proofs, and you must win all three. This problem gave you causation. Entitlement lives in the contract's changes clause, its delay clause, and — the one that kills more claims than any tribunal ever has — its notice provision. Give the notice on time, in writing, in the form the contract requires, even when you do not yet know the number.
Five: run this analysis every month, not when the claim starts. The reason this problem is solvable at all is that Update 8 exists, with real logic, real remaining durations, and a float column somebody computed on a date nobody thought was interesting. The paper trail is the project's memory, and contemporaneous records are worth ten times reconstructed ones.
How to review a real schedule in thirty minutes
You will be handed schedules by subcontractors, owners, other contractors, and consultants, and you will be expected to have an opinion. Here is the routine, in order. It takes about half an hour on a schedule of any size.
Minute 0–5: ask for the file, not the PDF. A PDF is a picture. If the answer is "we can only send a PDF," you have learned something important before you have read anything: either there is no network behind the bars, or they do not want you to check it.
Minute 5–10: six numbers.
| Check | What you want to see | Why it matters |
|---|---|---|
| Activity count and average duration | Detail proportionate to the contract time | 200 activities on a two-year job means bars of a month each — unmanageable and unverifiable |
| Activities with no predecessor | Exactly one (the start milestone) | Anything else floats free at the front of the schedule |
| Activities with no successor | Exactly one (the finish milestone) | Open ends get enormous artificial float and vanish from management attention |
| Constrained activities | Few, each explainable, and zero mandatory constraints | Constraints break the propagation of delay — Problem 15 |
| Activities with total float over ~40 WD | A short list | A cluster of very high float almost always means missing logic, not genuine slack |
| Percentage of activities on the critical path | Neither near zero nor near everything | A schedule where 60 percent of activities are critical has been compressed to fit and has no room anywhere |
Minute 10–15: logic quality.
- Relationship types. What fraction are finish-to-start? A heavily FS schedule is normal for building work. A schedule dominated by SS and FF pairs with lags is often a bar chart wearing a network's clothes — the relationships were added to make the bars line up, not because they describe the work. And check the reverse defect from Problem 11: every SS relationship where the physical work also requires the predecessor to finish should have a companion FF.
- Lags. How many, and how long? Find every lag over 5 days and ask what it is. Cure time is a real answer — Problem 10. "That's when the sub said they'd get there" is not.
- Negative lags. Any at all is a defect. Convert them to SS relationships.
- Start-to-finish relationships. On a building project, assume somebody dragged an arrow the wrong direction.
- Out-of-sequence work (on an update, not a baseline): activities that started before their predecessors finished. Some is inevitable. A lot of it means the logic does not describe how the job is actually being built, and every calculation coming out of that schedule is suspect.
Minute 15–25: does the critical path make physical sense? Filter to the minimum total float, print it, and walk it out loud — narrate the sequence as if you were describing the job to somebody. You are listening for a break in the story. "Excavate, footings, walls, backfill, slab, steel, deck, fireproofing, curtain wall on the north, then… interior partitions on Level 4?" Stop. Why does Level 4 follow the north curtain wall and not Level 2? Sometimes there is an excellent answer (the material hoist is on the north elevation). Sometimes the answer is that somebody linked the wrong activity at 2:00 a.m. and nobody has read the critical path since.
Minute 25–30: the critical path test. Take a copy of the file. Add 100 days to one activity on the computed critical path and recalculate. The finish date should move exactly 100 days. If it moves less, something downstream is absorbing delay and the schedule cannot compute a true critical path. Then do the reverse: add 100 days to a non-critical activity carrying, say, 12 days of float. The finish should move exactly 88 days. If it moves a different amount, the float numbers are wrong.
And the check that costs nothing: confirm that the first activity's late start comes back to zero. If it does not, there is an imposed date in the file (Problem 15) or an arithmetic error, and you should find out which before you believe a single number on the page.
One closing thought. Every schedule in this appendix was arithmetically perfect, including the ones that were badly wrong — the network with the deleted finish-to-finish link, the one with the mandatory constraint, the one carrying twelve days of phantom float. The software calculates; it does not think. It performs arithmetic on your assumptions, flawlessly and instantly, and returns a result with the same confidence whether the assumptions were true or invented.
That is why you just did twenty of these by hand.
See also: Chapter 14 (the full method) · Chapter 27 (the six-week window where the schedule meets the field) · Chapter 29 (updates, acceleration, recovery) · Chapter 30 (measuring progress in dollars) · Chapter 33 (proving delay) · Appendix A §A.9 (the formulas on one page)