Anonymised, illustrative composite. A roofing subcontractor running two jobs at once, both priced on CCDC 2 stipulated-price subcontracts, watched a membrane and insulation material spike hit both sites in the same month. One job absorbed the loss in full. The other didn’t lose a dollar of it.
At a glance
Both jobs had gone to tender within a few months of each other, priced by the same estimator, using the same supplier quotes for membrane and insulation. On paper the two subcontracts looked interchangeable: same trade, same systems, same rough square footage, same general region. The only meaningful difference was in the fine print each owner’s counsel had negotiated into the subcontract before signing.
The roofer had two projects running at once, both priced and contracted the same way — a CCDC 2 – 2020 subcontract for the roofing scope, each stipulated as a single fixed lump sum for the work. Neither subcontract was unusual by the trade’s standards; CCDC 2 is the industry-standard prime contract form and most subcontracts mirror its structure downward.
A supply shock hit the roofing membrane and insulation market that month, pushing material cost up roughly 19% on the systems both projects specified. Both jobs were mid-construction, both had firm material take-offs already priced into their stipulated sums, and both roofers on the crew were billing the same supplier at the new, higher price.
CCDC describes the CCDC 2 form itself as establishing “a single, pre-determined fixed price, or lump sum, for the project.” That description is not incidental — it is the whole structure of the contract. Nothing in the standard form adjusts the price for a material cost increase after signing. Any protection against exactly this kind of spike has to be drafted in as a separate, explicit rider; it is never assumed, and it never appears by default just because a spike feels unfair.
Job A had that rider: a material-price escalation clause tied to a named published price index for roofing membrane, triggering a price adjustment once the index moved more than a stated threshold above its value at bid date. Job B’s subcontract, negotiated a few months earlier for a different owner, had no such clause — just the CCDC 2 stipulated sum, unmodified.
Roughly 19% material cost increase on the affected membrane and insulation systems, hitting both jobs in the same billing cycle. On Job A, the escalation rider recovered the incremental cost above its threshold in full — about $31,000. On Job B, the same percentage increase, applied to a larger material quantity, produced roughly $46,000 of cost the roofer had no contractual mechanism to recover and simply absorbed against its margin.
The kind of volatility that hit both jobs shows up in the published numbers, not just on this one crew’s supplier invoices: Statistics Canada’s Building Construction Price Index recorded non-residential building construction costs up 3.6% year over year in the first quarter of 2026, citing ongoing material sourcing constraints as a contributing factor — exactly the kind of published, third-party series an escalation rider is meant to be tied to, rather than a single supplier’s own price list.
This is the bind in its cleanest form: identical contract type, identical market event, opposite result, and the only variable between the two jobs was one negotiated paragraph. CCDC 2’s stipulated-price structure assumes the contractor has priced and absorbed its own risk within the lump sum — that is the trade-off for a fixed, predictable number the owner can budget against. A rider does not modify that assumption for the whole contract; it just carves out one specific, named risk and puts it back on whoever the rider says should bear it.
Had Job A’s rider not existed, its $31,000 would have gone the same way as Job B’s $46,000 — absorbed, with the CCDC 2 stipulated sum standing exactly as signed regardless of what happened to the roofer’s supplier pricing in between.
The roofer now insists on the same escalation rider language, modelled on Job A’s clause, on every new stipulated-price subcontract it signs, and tracks the named material index monthly so a future threshold breach can be evidenced quickly rather than argued for after the fact. Job B’s owner was not asked to share the $46,000, and would not have had an obligation to even if asked — the CCDC 2 form gave the roofer no basis to reopen a stipulated sum it had agreed to without a rider protecting it.
For the underlying contract type this all sits on top of, see what a CCDC 2 stipulated-price contract actually fixes, and for how a different trade proved a cost claim of its own kind on the same kind of contract, see a steel erector proved an acceleration claim.
For how AI now helps keep a change-order paper trail current in real time, see AI-assisted change order management.
A 30-minute call is enough to tell you whether AI pays for itself here.