What it does

In one paragraph

You give it one or more schedule files. It reads them without opening Primavera, computes the dates and floats itself, and reports what the specification or standard that governs your contract says about what it found. It never says the submission is approved or rejected. That determination belongs to the reviewing authority, and the report says so at the top of every run.

It never writes a schedule file. Nothing you give it is modified.

What it reads

Four formats, and the format is decided by the contents of the file rather than by the extension — so a P6 XML export renamed to .mspdi is still read correctly, and a file matching none of the four is refused as unreadable rather than guessed at.

It does not read a binary .mpp. Export from Microsoft Project as XML instead.

They are read; they are not equally evidenced. The validation corpus is 68 files and every one of them is XER. No P6 XML or MSPDI file produced by Primavera or by Microsoft Project has ever been read by this engine — the other three readers rest on this project's own tests. A fourth format in that group is a fourth thing unvalidated, not a fourth thing proved. The P6 XML and MSPDI readers also carry no resources and no costs, which the report states; a cost or quantity question wants the XER.

Conformance: 351 rules across fourteen packs

Pack Specification
ufgs UFGS 01 32 01.00 10
asce67 ANSI/ASCE/CI 67-17
aace29 AACE RP 29R-03
scl SCL Delay and Disruption Protocol, 2nd edition
aace_review AACE RP 78R-13 and 53R-06
vdot VDOT progress-schedule special provisions
gao GAO Schedule Assessment Guide (GAO-16-89G)
aace84 AACE RP 84R-13
caltrans Caltrans 2025 Standard Specifications §8-1.02C
paseg NDIA IPMD PASEG
nysdot NYSDOT Item 639.2X010011 Type 2, and the NYSDOT CPM best-practices manual
navfac UFGS 01 32 17.00 20 (NAVFAC)
wisdot WisDOT SE Region CPM review guidance (December 2023)
wvdoh WVDOH 2023 Standard Specifications §108.3 and CPM Schedule Review Manual

The exact rule counts per pack are published in the repository's docs/CONFORMANCE.md, which owns them and derives them from the code.

That is the size of the library, and not what any one command runs. A us_federal run is 120 rules; us_state_or_private and uk_scl are 72 each; neutral is 107. The rest are elected: --review adds the AACE review pack, and a contract-named pack is added by naming the document it comes from. Naming a guide does not make it bind — it makes it visible, and where a guide states no requirement in its own voice (WisDOT's review comments are the case), every rule in that pack returns an observation rather than a failure.

No state department of transportation has seen any of this. The agency packs were written from published specifications with no agency contact. That is a different and more important sentence than "none is implemented".

What it checks that reading the schedule cannot tell you

It reads the schedule's own SCHEDOPTIONS record, so it can check how the file was computed — retained logic versus progress override, longest path versus total float, the lag calendar — and not only what it displays. A submission can satisfy every visible requirement and still have been calculated under the wrong critical-path definition.

Delay analysis

All nine AACE RP 29R-03 Methods of Implementation run end to end, plus prospective time impact analysis under AACE RP 52R-06.

"Runs end to end" means exactly that. It does not mean any result has been checked against Primavera, against a published expert analysis, or against a real project. Five of the nine were built in a single session and none has been run on a real schedule.

The method is an input to the answer, not a detail of it. The repository records one delay event worth nought working days under MIP 3.8's subtractive collapse and five working days under MIP 3.7's additive impact — neither figure wrong and neither method misapplied. A number without its method is not an answer, which is why the tool refuses to run until a method is named and prints the method above the findings.

The commands

Command What it does
construct FILE --jurisdiction J Conformance check. check is the default and the word is optional.
construct unanswered FILE ... Groups the abstentions by the input a person would have to supply, largest group first. This is the worklist.
construct clause CLAUSE What one clause asks, what it looks at, and what input would let it be decided. Runs nothing.
construct health FILE The DCMA 14-point screening metrics, reporting which of the fourteen could not run rather than scoring them as passes. Never exits 1.
construct index FILE ... One row per submission, for reviewing a batch of unrelated schedule files.
construct validate A.xer B.xer --baseline 0 Source validation: is this set fit to be analysed at all, before any delay analysis is worth doing.
construct analyse ... --method 3.6 --delays d.json A retrospective delay analysis under a named AACE method.
construct concurrency FILE --delays periods.json Reports the answer under all four combinations of the two concurrency theories and the two causation doctrines.
construct tia FILE --fragnet f.json --delay-start DATE Prospective time impact analysis, walking the eight steps of RP 52R-06 and recording for each what it did, what it assumed, and whether the tool or a person decided it.
construct record FILE --json --out record.json The provenance record.
construct verify record.json FILE Re-runs the files against the record and either reproduces the answer or names the first value that differs.
construct serve A local page at http://127.0.0.1:8765/ over the commands above. It binds 127.0.0.1, which no other machine on any network can reach.

Exit codes are the same across every command: 0 means nothing blocking was found, 1 means there was a blocking finding or a withheld result, 2 means the inputs could not be read or were refused. A report with findings exits 1 by design.

health is the exception and never exits 1: GAO-16-89G appendix VII states that DCMA's thresholds "are not compliance triggers", so a red metric there is a prompt to look, not a finding. Where a specification does mandate one of those quantities, check runs it as a cited clause at that specification's own threshold, which is usually not DCMA's.

Which commands need a file you write, and why

check, validate and record run on a schedule alone. analyse with methods 3.6 to 3.9, concurrency and tia cannot run without a JSON file describing delay events, delay periods or a fragnet — and that is deliberate rather than an omission. Which delays happened, when they bit, whose they were, and what a fragnet contains are all facts about the project record. They are not in the schedule file, and a tool that inferred them would be answering the disputed question by itself. So they are read from a file you write, and the report states them as your input rather than as its finding.

Those files reject an unrecognised key and list the ones they accept, because a key nothing reads is a value nothing applied.

Two things it will not produce

It will not hand back a corrected schedule. UFGS 01 32 17.00 20 (NAVFAC, 05/25) makes third-party processing of an XER cause for rejection: the submission a contractor sends must come from their own Primavera, not from anything this tool wrote. The engine contains writers for all three P6 formats and no shipped command reaches any of them.

It will not tell you the cause of a delay. It computes overlap; you supply the party. If you do not know whose delay a period was, undetermined is a real answer, and it keeps that period out of every pairing and lists it as an open question instead of filing it against somebody.

Where it runs

Locally. It makes no network calls, contains no language model anywhere in the answer path, and has no third-party runtime dependencies at all — which is enforced as a build failure rather than as a policy. A file processed on your machine does not leave it. There is no cloud service to breach because there is no cloud service.

What this project does not have, said plainly: no SOC 2, no ISO 27001, no FedRAMP, no penetration test, and no cyber liability insurance. If your office requires any of those before a file can be shared, it does not meet the bar today, and it would rather you applied that bar than waived it.

Source: web/pages/what-it-does.md. Source commit date: 2026-09-09.

See it in practice

Follow the evidence, from the schedule to the finding.

Explore the worked example