FPM is being rebuilt, learn more
PRODUCT

How FPM Works

FPM is the calculator. You are the mathematician. The platform handles exhaustive, deterministic measurement. Your expertise goes toward contractual interpretation, expert judgment, and professional opinion.

NETWORK BLUEPRINT Substantial Completion
Critical path SITE → EXCAV → FOUND → STEEL → SC

The Forensic Pipeline

From raw P6 exports to audit-ready impact attribution in four steps.

01

Import

Upload P6 XER schedule updates. FPM parses 140+ fields per table, reconstructing the full CPM network with calendars, constraints, and relationships.

02

Detect

Every change between consecutive updates is identified automatically across 11 categories: duration, progress, constraints, logic, calendar, structural adds and removes.

03

Measure

Each change is measured through the full dependency network against the changes upstream of it. Concurrent delays on parallel paths are measured independently, and each driving path to every tracked milestone is told alone, with the date the milestone would sit at without it.

04

Report

Results trace from high-level summary through per-milestone attribution to atomic field-level changes. Every number in the output has a source.

Core Algorithms

Two complementary views of the same measurement: the drivers, measured concurrently, and the paths, each told alone.

Path-Aware Impact Modeling

Every change traced through the full dependency network

Every change between two updates is measured against each milestone, through the full network of logic. Delays on parallel paths are measured concurrently, so the measurements name every driver and are never added up against the milestone's movement. Then each driving path to the milestone is told on its own, with the date it puts the milestone at and the date the milestone would sit at without it.

  • Every change measured, none sampled
  • Parallel paths measured concurrently
  • Five impact categories: Structural, Logic, Progress, Duration, Global
  • Path stories with rank float: a float of zero means concurrent paths
A100A110B200B210M1000

Milestone Paths

Each driving path told alone

For every tracked milestone in every window, FPM tells each driving path alone, one step per change on the path. Each path carries the date it puts the milestone at, the date without it, and the rank float to the next path. Every step carries the two dates it was read between, so any number can be checked against the dates.

  • One step per change, in working days on the milestone's own calendar, with the same span in calendar days
  • A but-for date per path, read on the same engine as everything else
  • Rank float between paths: zero means concurrent paths
  • Each change classified as lone, chain, masked, carried, folded or exposed by a stated rule order
  • The floor is shown with what moved it: schedule options and any sequence reversal
Driving path
Next paths
Rank float
Floor M1000 · 12 Mar Final 3 Apr
StructureB210 +8dC340 link +6d
3 Apr
Driving · reaches final
EnvelopeD420 lag +4dE118 +5d
31 Mar
Rank float 3d
MEP rough-inF207 +9d
31 Mar
Rank float 0 concurrent
12 Mar
31 Mar
3 Apr
Each path told alone. Rank float 0 means concurrent paths.

Built on AACE RP 29R-03

Automates contemporaneous windows analysis (MIP 3.3) on the longest path, with a contemporaneous split reading (MIP 3.4) for any window in What-if Worlds.

EXECUTION ANALYSIS

As-Planned vs As-Built

Day-by-day execution classification per MIP 3.3

Traditional as-planned vs as-built methods work within constraints imposed by the available tools: binary anchoring (beginning/end only), static endpoint float, and longest-baseline-wins rules. These heuristics compound uncertainty. WOET eliminates all three.

The Window-Observed Execution Timeline splits analysis into windows aligned with actual schedule updates. Each window uses the CPM state observed at that update. Every work day is classified: Progress, Extended Duration, or Void, with gain counted per block. The result explains when baseline work was actually earned, not just whether it was earned.

  • Per-window CPM anchor, not retroactive inference from endpoints
  • Void sub-classification: Weekend, Calendar, Delay, or No-Driver
  • Volume reconciliation: restructured, never-started, efficiency reduction
  • Multi-period rebaseline support for mid-stream baseline resets
WINDOW 4: 15-MAR TO 14-APR 151015202530EXCAV-200FOUND-310ELEC-150STEEL-400MECH-510ProgressExtended DurationGainVoid
CONCURRENT DELAY

Concurrent Delay Matrix

Cross-window impact attribution at a glance

The matrix shows how delays from different categories interact and offset across the project timeline. Each cell captures impact by category per window. Net calculations reveal the true milestone effect after concurrency is resolved.

The measure is concurrent: parallel paths are measured independently, so the cells name the drivers. The milestone paths are the other view, each told alone.

  • Impact by category: Structural, Logic, Progress, Duration, Global
  • Direction filtering: delay only, mitigation only, or both
  • Parallel paths measured independently
CONCURRENT DELAY MATRIX W1W2W3W4W5W6Structural—+4d—-2d+8d—Logic+3d—+5d—-3d+2dProgress—+7d+2d+11d+4d+6dDuration+5d—+8d+3d—-4d Net +8d+11d+15d+12d+9d+4d
DELAY DRIVERS

Top Movers

Find the needle in 10,000 activities

A project schedule can contain thousands of activities. Most don't materially affect the completion date. Top Movers automatically ranks activities by the magnitude of their milestone impact, surfacing the handful that actually drove the outcome.

Both delay drivers and mitigation efforts are ranked. The analyst sees immediately which activities pushed milestones out and which pulled them back.

  • Ranked by impact magnitude across all windows
  • Separates delay from mitigation for clear accountability
  • Drill from ranking into per-window impact detail
TOP MOVERS: SUBSTANTIAL COMPLETION MECH-4200+18d ELEC-3150+14d CONC-2080+11d PLMB-3400+8d STRL-1900-6d FIRE-5100+5d ROOF-4600-4d MITIGATION DELAY
WHAT-IF

What-if Worlds

Time impact and collapsed as-built modeling as a selection

The but-for question is usually answered by hand: copy the schedule, insert one delay, recalculate, read the date, repeat. A what-if world makes that a selection. Pick any set of a window's changes and read where every tracked milestone lands with those changes applied to the base schedule, or removed from the update.

Every world stands on the same floor, the window's schedule options and any sequence reversal, so each date is read on the schedule's own logic. Changes that only make sense together are offered together. A saved scenario is an ordered list of steps, read one at a time, so a narrative can be built and replayed.

  • Apply a chosen set to the base, or remove it from the update
  • Saved scenarios: ordered steps, each read at the window's milestones
  • No analysis run needed: every read is keyed by window
  • Same worlds over MCP, so an AI client builds and reads them in a conversation
Selected
Not selected
Milestone date
Window
Apply to base Remove from update
B210Duration +8d
C340Link added
A115Progress
D420Lag +4d
E118Calendar
M1000
12 Mar
Base 12 Mar
M2000
2 Apr
Base 2 Apr
One selection, one date per milestone.
Period Analysis

Windows Analysis

The project timeline divided into contemporaneous periods, each framed by consecutive schedule updates. This is the foundation of AACE MIP 3.3 analysis.

Contemporaneous Splits

Each window captures the schedule state as it was known at the time. No retroactive revision from the final schedule.

Per-Window Changes

Every change between two consecutive updates is detected and categorized. 11 change categories cover duration, logic, constraints, calendars, and structural changes.

Milestone Narrative

Each window tells which paths carried a milestone's movement, what pushed it out and what pulled it back. The milestone's trend across windows assembles from them.

NETWORK ANALYSIS

Driving Path and Network Explorer

Trace the chain from any activity to any milestone

Driving path analysis walks backward from any milestone to identify the longest chain of dependent activities controlling the completion date. The result is a subgraph with driving flags on every link, not a flat list.

FPM decomposes relationship float into three tiers: Actual, Constraint-Aware, and Stall-Adjusted. This separation explains why float exists on each relationship: is it logic-driven, constraint-driven, or caused by a stall? The butterfly network view radiates outward from any focal activity, showing this context visually.

  • Longest path to any milestone with full driving subgraph
  • Focus-activity mode: trace a specific activity's path to milestone
  • Three-tier float decomposition: logic, constraint, and stall components
  • Float delta tracking: Became Driving / Became Non-Driving transitions per relationship
TIER 2TIER 1FOCUSTIER 1MILESTONEEXCAV-100FORM-150REBAR-160INSP-170CURE-180CONC-2080BKFL-210WTRP-220SCDrivingNon-driving
TRACEABILITY

Change Tracking and Audit Trail

Every change recorded. Every result traceable.

In P6, tracking changes means opening each XER and comparing activity properties one update at a time. FPM automates this entirely, detecting changes across 11 categories: duration, progress, constraints, calendar assignment, calendar definition, relationship logic, relationship lag, structural adds and removes, schedule options, and external dates.

Activity history shows the complete evolution of any activity across every schedule update in a single query. Stall detection flags activities that aren't progressing as expected: unchanged remaining duration between updates, late starts against the baseline, or progress that began but stopped moving.

  • 11 change categories with field-level granularity
  • Complete activity history across all schedule updates in one query
  • Logic changes: predecessor and successor adds and deletes per window
  • Stall detection: late starts, stalled progress, and unchanged remaining duration
CONC-2080 — WINDOW 4 CHANGES 5 changesFIELDBEFOREAFTERCATEGORYRemaining Duration45d58dDurationPhysical % Complete20%35%ProgressStart ConstraintNoneSNET 15-MarConstraintCalendar5d/wk5d/wkPred: EXCAV-100 (FS)Lag 0dLag 5dRel. LagPred: DEMO-050 (FS)PresentRemovedStructural
Data Quality

Schedule Health Verification

P6 exports often contain stale dates. Users modify the schedule without recalculating, and P6 stores the outdated values. FPM catches this.

FPM recalculates every schedule from the raw network and compares against P6's stored dates. When they disagree, FPM flags the discrepancy and uses recalculated dates as the source of truth. Know the quality of your inputs before you analyze.

Violation Detection

Identifies P6 stored dates that violate the schedule's own network logic. High-confidence classification separates real issues from rounding noise.

Re-CPM Strategy

All base XERs are recalculated from the raw network. Recalculated dates are the source of truth. Discrepancies between P6 stored and recalculated dates are documented per project.

Health Indicators

Schedule health summary with violation counts, rebaseline discrepancies, and data quality normalization tracking across every imported update.

Defensibility

Built for the Courtroom

Litigation-grade analysis requires three guarantees: auditable (every result traces to source data), reproducible (same inputs produce identical outputs), and accurate (validated against P6 ground truth). FPM delivers all three. The analyst brings contractual context and professional judgment. That separation is what makes the output defensible.

Same inputs, same outputs

Deterministic

Every calculation uses a fixed topological ordering with no hash-based dependencies. Run the analysis today, next month, or next year. The results are identical.

Real XER files with exact date parity

Validated

The CPM calculator matches P6, covering every relationship type, constraint type, and calendar configuration. Where P6's own dates violate its network logic, FPM flags the discrepancy and uses recalculated dates as the source of truth.

10,000+ test assertions

Regression-Tested

The full forensic pipeline is tested exhaustively. Any code change that alters any result fails the test.

Engine versioning on every result

Transparent

Every analysis records which algorithm version produced it. If the engine improves, old results are preserved. Re-run and compare. Full changelog, no black box.

Summary to single change

Traceable

Drill from high-level delay summary to per-milestone attribution, to per-category breakdown, to individual field-level change. Every number in the output has a verifiable source.

Completed analyses are read-only

Immutable

Finished analysis results cannot be modified. Re-running creates a new result set. Historical results are preserved for comparison against newer engine versions.

Enterprise-Ready Platform

Built on modern cloud infrastructure with enterprise-grade security and scalability.

Platform

Backend
.NET 10 / PostgreSQL 17
Frontend
Angular 22
Deployment
Cloud-based SaaS

Data

Import Format
P6 XER files (.xer, .zip)
Processing
Asynchronous job queuing
AI Integration
40 MCP tools

Security

Encryption
TLS in transit, AES at rest
Authentication
OAuth 2.1 / OpenID Connect
SSO Login Providers
Microsoft, Google

Ready to See Your Schedule Objectively?

We're building the next generation of forensic schedule analysis. Join our early access program.