Skip to main content
CPP
Critical Path PartnersForensic schedule analysis
DWG · CAB-29R03 / SHEET A-00
Collapsed As-Built · MIP 3.8 · Subtractive
Collapsed As-Built / But-For Analysis

Collapsed As-Built Dashboard Larchmere Library and Community Hub (Demo Data) · AACE RP 29R-03 §3.8 (Modeled / Subtractive / Single Simulation)

Source XER
Larchmere_Library_current.xer
Data date
15-Oct-2025
Calendar
Standard 5 Day x 8 Hour
Generated
22-Oct-2026
Dual-Method Status
INVESTIGATE
Gap 76.7% · methods disagree >15%
Impact (wd)
20 wd
Events
7
Method
MIP 3.8
1

Summary of Findings

Removing the seven delay events from the as-built schedule brings completion 20 working days earlier, from 4 September 2026 to 7 August 2026. Removed in turn, the Owner's events account for 12 working days and the Contractor's for 8.

The windows analysis of the same schedules measures 86 working days of movement against the 20 working days found here, a gap of 76.7%; section 3 explains why.

As-built finish
4 September 2026
Finish with the events removed
7 August 2026
20 working days earlier
Removed together
20 working days
Seven delay events
Windows analysis
86 working days
gap 76.7%, investigate

Each cause, removed in turn, adds back the working days below; together 20 working days

Finish with the events removed
7 August 2026
As-built finish
4 September 2026
Owner: 12 working days
Curtain wall: RFI-14 anchor and sill revision adds field work at every floor (A2260, A2300, A2340, A2380)
12 working days
Contractor: 8 working days
Level 2 finishing re-planned: flooring crew shared with another project (A3610, A3620, A3630)
8 working days
Removed together
20 working days

The finish dates here are the opening of the working day after the last day worked: the as-built schedule’s last day of work is 3 September 2026.

The as-built update was filed at data date 5 August 2025 but records actual progress up to 14 October 2025, so it is read at 15 October 2025, as section 4 sets out.

2

What Was Removed

Each event was taken out of a copy of the as-built schedule, which was then recalculated: removed alone, the finish moves by the event’s own effect; removed in turn, each event adds to the ones before it.

EventCauseWhat was removedPartyRemoved aloneRemoved in turn
E1Curtain wall: RFI-14 anchor and sill revision adds field work at every floorA2260 shortened from 15 to 12 working daysOwner33
E2Curtain wall: RFI-14 anchor and sill revision adds field work at every floorA2300 shortened from 15 to 12 working daysOwner33
E3Curtain wall: RFI-14 anchor and sill revision adds field work at every floorA2340 shortened from 15 to 12 working daysOwner33
E4Curtain wall: RFI-14 anchor and sill revision adds field work at every floorA2380 shortened from 15 to 12 working daysOwner33
E5Level 2 finishing re-planned: flooring crew shared with another projectA3610 shortened from 7 to 4 working daysContractor33
E6Level 2 finishing re-planned: flooring crew shared with another projectA3620 shortened from 7 to 4 working daysContractor33
E7Level 2 finishing re-planned: flooring crew shared with another projectA3630 shortened from 5 to 3 working daysContractor22
Total20
3

Why the Result Differs From the Windows Analysis

The windows analysis measures 86 working days of movement between the schedules; removing the events here gives 20 working days, 66 working days apart.

The two methods measure different things. The windows analysis measures the whole movement of the finish between the schedules, whatever caused it. Collapsed as-built takes out only the events it is given, each as a shortened duration or a deleted activity, and holds completed work at its actual dates, so movement that comes from changed logic or progress lost is not an event it can remove.

Why the two methods disagree. The windows analysis measures the whole movement of the finish: 86 working days. This model removes only the duration growth on the driving path, the 7 activities that grew on it, 20 working days between them. Removed one at a time, each moves the finish by its full growth. Removed together they move it by the same 20 working days: no other chain takes over within that range. The other 66 working days of the windows drift come from changes this method cannot take out: 19 activities inserted on the driving path (61 working days of new work), 96 links added and 46 removed between the two schedules, and progress lost before the corrected data date. Collapsed as-built removes delay events from the as-built schedule and holds completed work as built, so a logic change or lost progress is not an event it can remove, and removing the growth of every activity that grew, all 13 of them, on the driving path or off it, moves the finish 20 working days. No honest set of events reaches 86, so this check reads INVESTIGATE.

The results differ by more than 15%, so this result does not corroborate the windows figure: what it measures is the effect of the events it removes, not the whole movement of the finish.

The 5% and 15% bands are CPP practice thresholds, not figures from AACE RP 29R-03; exhibit A-04 sets out the comparison.

4

How Far the Figures Can Be Relied On

The figures come from the as-built schedule recalculated with each event taken out; completed work stays where it happened.

Method: AACE 29R-03 MIP 3.8 (modeled, subtractive, single simulation). For each event the as-built schedule is copied, the event removed (its added duration shortened, or the activity deleted with its links) and the schedule recalculated; the change in the finish is that event’s effect. Removed together, the events give the cumulative figure. The default removal is shorten.

Completed activities are held at their actual dates, so a delay that sits on completed work cannot be removed here: such an event is marked locked and reports 0 working days, which is not a finding that it had no effect.

Anchor check: the schedule’s stored finish and the recalculated finish agree, so every date here starts from the schedule as filed.

How the Schedule Was Read

Data date corrected.

This update has actual dates after its data date of 05-Aug-2025 00:00.

The latest is A2910's actual finish, 14-Oct-2025 17:00, so this report moves the data date to the start of the next day, 15-Oct-2025, and reschedules the update as P6 does.

62 activities had actual dates after 05-Aug-2025.

102 activities that hadn't started were forecast to start before 15-Oct-2025; they now start on or after it.

The file reports a finish of 24-Jun-2026.

At the corrected data date its logic gives 03-Sep-2026, 49 working days after the file's finish on the project calendar. This report uses 03-Sep-2026.

Basis of Measurement

Basis of measurementHow to read the numbers in this report
Day unit
Working days
Every day count in this deliverable is in working days. No calendar-day figure is displayed. Where a contract clause is quoted verbatim in calendar days, the computed equivalent is given in working days alongside.
Calendar
Standard 5 Day x 8 Hour
Deltas are counted on the activity's own P6 calendar via work_day_delta. Where no project calendar is available the documented fallback is Monday to Friday with no holidays, and that fallback is disclosed on the affected figure.
Date fields read
P6 Start and Finish columns only
Scheduling mode as read
retained logic (SCHEDOPTIONS sched_retained_logic=Y)
A positive number is working days attributed to the removed event
Convention: event-attribution: impact = as-built finish - but-for finish (positive = working days attributed to the removed event)
Impact is computed one way only: as-built finish minus but-for finish, counted in working days on the stated calendar. Removing a delay pulls the but-for finish earlier, so a genuine impact is always positive. A negative value would mean the removal pushed the finish later, which flags a modeling error, not time recovered.

Diagnostics

The run raised four diagnostics; exhibit A-05 lists every one with what it means for the result.

The Evidence

The exhibits behind these findings follow in full, each under its drawing code:

  • A-01Methodology
  • A-02Per-Event Subtractive Pass
  • A-03Cumulative Roll-Up
  • A-04Dual-Method Gap
  • A-05Diagnostics and Warnings
A-01

Methodology

AACE RP 29R-03 §3.8 · Modeled / Subtractive / Single Simulation
Method

For each documented delay event, the as-built network is cloned, the event's impact removed (by either shorten, reducing affected activity durations, or remove, deleting the affected activities and their TASKPRED edges), and the CPM forward pass re-run. The resulting project finish is the but-for [event] date. The differential between the as-built finish and the but-for finish is the event's attributed impact under the Modeled / Subtractive method.

Configuration. Default removal method is shorten (a per-event override applies when an event specifies its own removal_method). Contractor filter: No, every event in the input list contributes to the cumulative pass.

Actual-date lock. Completed activities are held at their actual dates in every pass, and remaining work is never scheduled before the data date, so delay that sits on completed work cannot be collapsed here. Such an event is marked locked by actuals and reports 0 working days; that 0 is not a finding that the event had no impact.

Default Removal
shorten
Contractor Filter
No
Base Schedule
Single
Method
MIP 3.8
Modeled
Subtractive
Single Simulation
29R-03 §3.8
Basis of measurementHow to read the numbers in this report
Day unit
Working days
Every day count in this deliverable is in working days. No calendar-day figure is displayed. Where a contract clause is quoted verbatim in calendar days, the computed equivalent is given in working days alongside.
Calendar
Standard 5 Day x 8 Hour
Deltas are counted on the activity's own P6 calendar via work_day_delta. Where no project calendar is available the documented fallback is Monday to Friday with no holidays, and that fallback is disclosed on the affected figure.
Date fields read
P6 Start and Finish columns only
Scheduling mode as read
retained logic (SCHEDOPTIONS sched_retained_logic=Y)
A positive number is working days attributed to the removed event
Convention: event-attribution: impact = as-built finish - but-for finish (positive = working days attributed to the removed event)
Impact is computed one way only: as-built finish minus but-for finish, counted in working days on the stated calendar. Removing a delay pulls the but-for finish earlier, so a genuine impact is always positive. A negative value would mean the removal pushed the finish later, which flags a modeling error, not time recovered.
Citations
  • AACE RP 29R-03, Forensic Schedule Analysis Recommended Practice, §3.8 Modeled/Subtractive/Single Simulation (Collapsed As-Built / But-For), §3.9 Modeled/Subtractive/Multiple Base.
  • SCL Delay & Disruption Protocol, 2nd ed., §11.5: TIA (forward) vs Collapsed As-Built (backward).
  • CPP heuristic thresholds: the 5%/15% dual-method convergence bands are CPP's own, not a published standard.
Input-uncertainty caveat

The subtractive method is sensitive to the input impact_days values. A ±20% input uncertainty on the per-event impact durations can swing the cumulative result by a similar amount. CPP practice (not an AACE 29R-03 §3.8 requirement) is to run a schedule risk analysis (Monte Carlo with duration uncertainty distributions) against the input durations and report the P50 ± P90 range alongside the deterministic figures shown here. This dashboard reports a deterministic point estimate; opposing counsel should be expected to attack the input uncertainty on cross-examination. See the schedule-risk-analysis skill output for the corresponding probabilistic envelope.

A-02

Per-Event Subtractive Pass

clone · remove impact · re-run forward pass

For each delay event below, the as-built network was cloned, the event's impact removed using the indicated method, and the CPM forward pass re-run. The resulting "but-for" finish and computed impact are shown.

A-02Subtractive register, all events listed
7 events, all listedExport CSV
Event IDNameAffected ActivitiesRemovalAs-Built FinishBut-For FinishImpact (wd)ResponsibleContractor?
E1Curtain wall: RFI-14 anchor and sill revision adds field work at every floorA2260shorten04-Sep-202601-Sep-20263 wdOwnerN
E2Curtain wall: RFI-14 anchor and sill revision adds field work at every floorA2300shorten04-Sep-202601-Sep-20263 wdOwnerN
E3Curtain wall: RFI-14 anchor and sill revision adds field work at every floorA2340shorten04-Sep-202601-Sep-20263 wdOwnerN
E4Curtain wall: RFI-14 anchor and sill revision adds field work at every floorA2380shorten04-Sep-202601-Sep-20263 wdOwnerN
E5Level 2 finishing re-planned: flooring crew shared with another projectA3610shorten04-Sep-202601-Sep-20263 wdContractorY
E6Level 2 finishing re-planned: flooring crew shared with another projectA3620shorten04-Sep-202601-Sep-20263 wdContractorY
E7Level 2 finishing re-planned: flooring crew shared with another projectA3630shorten04-Sep-202602-Sep-20262 wdContractorY
Removal Basis & Finish-Driver Disclosure , all events listed

For each event: the duration removed and the basis used, plus what drives the but-for finish. A completed activity whose finish is on or before the data date cannot pull a successor whose start is pinned at the data-date floor, so the computed impact is 0 working days even when a duration was removed. A completed successor is held at its actual dates, with the same result. An event stopped either way is marked locked by actuals below: the delay has already happened, this tool cannot collapse it, and its 0 is not a finding that the event had no impact.

E1 · Curtain wall: RFI-14 anchor and sill revision adds field work at every floor
Duration removed & basis: A2260: 15.0→12.0 working days on CPM duration_days
Finish driver after removal: But-for finish is driven by activity 'A1050' via the live driving chain. The removed duration sits on that chain, so the collapse pulled the finish from 04-Sep-2026 to 01-Sep-2026.
E2 · Curtain wall: RFI-14 anchor and sill revision adds field work at every floor
Duration removed & basis: A2300: 15.0→12.0 working days on CPM duration_days
Finish driver after removal: But-for finish is driven by activity 'A1050' via the live driving chain. The removed duration sits on that chain, so the collapse pulled the finish from 04-Sep-2026 to 01-Sep-2026.
E3 · Curtain wall: RFI-14 anchor and sill revision adds field work at every floor
Duration removed & basis: A2340: 15.0→12.0 working days on CPM duration_days
Finish driver after removal: But-for finish is driven by activity 'A1050' via the live driving chain. The removed duration sits on that chain, so the collapse pulled the finish from 04-Sep-2026 to 01-Sep-2026.
E4 · Curtain wall: RFI-14 anchor and sill revision adds field work at every floor
Duration removed & basis: A2380: 15.0→12.0 working days on CPM duration_days
Finish driver after removal: But-for finish is driven by activity 'A1050' via the live driving chain. The removed duration sits on that chain, so the collapse pulled the finish from 04-Sep-2026 to 01-Sep-2026.
E5 · Level 2 finishing re-planned: flooring crew shared with another project
Duration removed & basis: A3610: 7.0→4.0 working days on CPM duration_days
Finish driver after removal: But-for finish is driven by activity 'A1050' via the live driving chain. The removed duration sits on that chain, so the collapse pulled the finish from 04-Sep-2026 to 01-Sep-2026.
E6 · Level 2 finishing re-planned: flooring crew shared with another project
Duration removed & basis: A3620: 7.0→4.0 working days on CPM duration_days
Finish driver after removal: But-for finish is driven by activity 'A1050' via the live driving chain. The removed duration sits on that chain, so the collapse pulled the finish from 04-Sep-2026 to 01-Sep-2026.
E7 · Level 2 finishing re-planned: flooring crew shared with another project
Duration removed & basis: A3630: 5.0→3.0 working days on CPM duration_days
Finish driver after removal: But-for finish is driven by activity 'A1050' via the live driving chain. The removed duration sits on that chain, so the collapse pulled the finish from 04-Sep-2026 to 02-Sep-2026.
A-03

Cumulative Roll-Up

all events removed together · single subtractive pass
As-Built Finish
post-impact actual
Cumulative But-For Finish
all events removed
Cumulative Impact (Subtractive)
20 wd
as-built minus but-for (working days)
Collapse Sequence · Finish StepsA2260 → A2300 → A2340 → A2380 → A3610 → A3620 → A3630
-20 wd0 wd (as-built)04-Sep-202601-Sep-202627-Aug-202624-Aug-202619-Aug-202614-Aug-202611-Aug-202607-Aug-2026As-built (all delays in)- E1 · A2260 -3 wd- E2 · A2300 -3 wd- E3 · A2340 -3 wd- E4 · A2380 -3 wd- E5 · A3610 -3 wd- E6 · A3620 -3 wd- E7 · A3630 -2 wd
As-built finish (all delays in) Finish after each additional removal
Each row removes one more event, in input order, and re-runs the CPM; the final row is the cumulative but-for finish. Marker position is scaled in working days from the as-built finish. The per-event register at A-02 removes each event alone, so its but-for dates legitimately differ from these progressive steps when events share the driving chain.
Per-Event Impact DistributionE1 → E7
0 wd3 wd (max)E1 · Curtain wall: RFI-14 anchor and sill revision adds field work at every floor3 wdE2 · Curtain wall: RFI-14 anchor and sill revision adds field work at every floor3 wdE3 · Curtain wall: RFI-14 anchor and sill revision adds field work at every floor3 wdE4 · Curtain wall: RFI-14 anchor and sill revision adds field work at every floor3 wdE5 · Level 2 finishing re-planned: flooring crew shared with another project3 wdE6 · Level 2 finishing re-planned: flooring crew shared with another project3 wdE7 · Level 2 finishing re-planned: flooring crew shared with another project2 wd
Largest single-event impact Subordinate impactE1 = 3 wd · E2 = 3 wd · E3 = 3 wd · E4 = 3 wd · E5 = 3 wd · E6 = 3 wd · E7 = 2 wd
Bars are scaled to the largest single-event impact; bar length is relative, not an absolute magnitude of delay.
A-04

Dual-Method Gap

MIP 3.3 (Windows) vs MIP 3.8 (Subtractive)
Convergence StatusINVESTIGATE · 76.7% GAPThreshold> 15%
MIP 3.3 (Windows)
observational dynamic (working days)
MIP 3.8 (Collapsed As-Built / Subtractive)
modeled subtractive (working days)
Gap (Δ)
66 wd
windows minus subtractive (working days)
Gap %
76.7%
of windows result
INVESTIGATE

Methods disagree by more than 15%. The forensic conclusion is NOT defensibly grounded under practitioner-consensus convergence cut-offs. Significant further investigation is required before submitting the claim.

Thresholds: AGREE ≤ 5% · WARN 5-15% · INVESTIGATE > 15%. Bands are CPP heuristic thresholds. They are NOT codified numeric cut-offs in AACE RP 29R-03 (which permits more than one method in §5 but describes no cross-check and publishes no numeric tolerance percentages).

A-05

Diagnostics & Warnings

4 diagnostics · 4 detectors, all listed

4 diagnostics across 4 detector codes. The triage strip below states, per detector, what its findings mean for the reliability of the but-for result; the full registers follow, grouped by detector, every entry listed.

DetectorALERTWARNINFOWhat it means for the but-for result
cpm/constraint-violated100A date constraint affected (or failed to affect) the pass as noted. A constrained date can hold the but-for finish in place and mask logic-driven movement.
cpm/out-of-sequence100Work progressed out of logic order, so the as-built chain the removal walks may not be the chain the work actually followed; the removed duration can land on the wrong path.
collapsed-calendar-basis001States which calendar the working-day figures are counted on (or that it had to be guessed). A different calendar changes working-day magnitudes, not the but-for dates themselves.
collapsed-schedule-options001States the P6 scheduling mode and relationship-lag calendar every CPM pass ran under, and how they were read from the export (SCHEDOPTIONS row, or the P6 default when the export omits it). Informational; a different mode or lag calendar would move the computed dates.
cpm/constraint-violated · 1 entry, all listed
ALERT
cpm/constraint-violated
Start On on A4410 violated: ES=14-Aug-2026 is after constraint date 04-Jun-2026. Predecessor logic governs; P6 does not pull a Start On activity back ahead of its drivers.
cpm/out-of-sequence · 1 entry, all listed
ALERT
cpm/out-of-sequence
Activity A2240 started 25-Aug-2025 08:00 but 1 predecessor(s) started AFTER it (retained-logic anomaly): A1930 (started 25-Sep-2025 08:00)
collapsed-calendar-basis · 1 entry, all listed
INFO
collapsed-calendar-basis
Working-day figures (impact_workdays_collapsed, cumulative_impact_workdays and the dual-method gap) are stated on calendar 'Standard 5 Day x 8 Hour', resolved from PROJECT.clndr_id. The file carries 1 calendar(s).
collapsed-schedule-options · 1 entry, all listed
INFO
collapsed-schedule-options
CPM passes run under scheduling mode 'retained_logic' (SCHEDOPTIONS sched_retained_logic=Y) with relationship lag on 'rcal_Successor' (SCHEDOPTIONS sched_calendar_on_relationship_lag=Successor (as P6 exports it; read as rcal_Successor)).
Generated
22-Oct-2026
Source XER
Larchmere_Library_current.xer
Data date
15-Oct-2025
Calendar
Standard 5 Day x 8 Hour
Method
AACE 29R-03 §3.8
Standards
SCL §11.5 · CPP heuristic thresholds
Input files: Larchmere_Library_current.xer SHA-256 e5cba9fbd494323aaeed96ade700dc08e4293788284a825c081b4910595440fa
Collapsed As-Built / But-For Analysis · AACE RP 29R-03 §3.8 (Modeled/Subtractive/Single Simulation) · Generated 22-Oct-2026 · Engine cpm-engine v2.10.13Reproducible · AACE 29R-03 §3.8 / SCL §11.5