About
Who
Charley Forey. Iowa State University alumnus. This is independent research carried out alone. There is no company, no funding, no employees and no customer.
No PE licence, no AACE PSP, no CFCC. That is a real limitation and it bounds what this can be, deliberately: it is a tool, not an opinion. It reports what a clause says and what the file contains. It does not render a professional judgment about whether a schedule is reasonable, whether a delay is excusable, or who is responsible — and in the places where a specification asks for exactly that judgment, it refuses to answer and hands the evidence to the person who is qualified to.
The governing sentence for the whole project: it supplies a computation; a person supplies the opinion.
Why it exists
Reading a specification and checking a schedule against it is work that is done by hand, by people who are expensive, in the first hours of a review, before anything interesting happens. The mechanical part of that is a computation. The part that decides a dispute is not, and no tool should pretend otherwise.
Both halves are on this site. The what it does page is the first half. The what this cannot do page is longer, and that proportion is the honest one.
What is built on
The CPM engine in cpmcore is a fork of MassingPlan's core package
(github.com/MassingCloud/massingplan), used under the MIT licence and vendored
into this tree — which is the use its authors designed it for. Changes made in
the fork are recorded in the repository. Attribution travels with it in the
repository's notice file.
That disclosure appears here because it should be made on the first page anybody outside the project reads, rather than only in files nobody outside the project sees.
The engine has no third-party runtime dependencies of any kind, which is enforced as a build failure rather than as a convention. That is a choice about vendorability and about removing an entire class of supply-chain question from a security review. It is not a boast.
What is used, and by what right
Comparison engines, JDKs, corpus files and jars are fetched by pinned, hash-verified scripts and never committed. What the repository contains is the fetch script, the manifest and the provenance record — never the payload. The obligation to pass on a notice attaches to distribution, and none of it is distributed.
Most of the source repositories the schedule corpus comes from state no licence, which is a finding and not a permission. Nothing was downloaded in bulk, no account was created and no terms were accepted; two candidate sources were stopped at exactly the point where proceeding would have required one of those, and are recorded as blocked rather than as negatives.
The standards this tool implements are a mix. GAO's Schedule Assessment Guide and the UFGS sections are United States federal works and carry no copyright. AACE, ASCE, SCL and the rest are copyrighted private-body standards. A rule pack may implement the method and must never carry the expression — so the packs cite clause numbers and state conditions rather than reproducing text, and shipped output measures zero words of any restricted standard.
The discipline, stated so it can be checked
This project's credibility rests on a small number of habits, and they are worth naming because they are checkable rather than asserted:
- Never tune to an agreement number. Agreement is a measurement; the moment it becomes a target it stops measuring. A leak whose removal dropped the headline was removed and the fall published. A plausible fix that would have raised it was falsified and refused.
- An invariant that cannot fail is not a check. Nine rules were found quantifying over a population they could not observe — returning passes no schedule could falsify — and withdrawn. Four mutation scores in the high nineties were withdrawn when the harness was caught reporting kills it had not made. Two published defects turned out not to be defects and were withdrawn too.
- State evidence, not inference. A conclusion that is true can sit above a reason that is false, and every check of the conclusion will pass.
- A figure has an owner, and the owner wins. Every number this project
publishes about itself is bound to the document that measured it, by a test
that goes red when a quoting page and its owner disagree. This website is
bound the same way; how, and what is deliberately not bound, is in
web/SPEC.md. - A struck figure is kept and struck, dated, rather than deleted, so the record of how something was understood survives.
What is wanted
Two things, and neither is a sale.
Schedule files that a CPM engine can be tested against. Specifically: a sanitised derivative of a file from a project where no dispute exists or is anticipated, sanitised by you rather than by anyone here. Activity names, WBS names, resource names, costs and narratives are all irrelevant — what is needed is the computed columns against the input columns. Ten such files would settle the accuracy question. A realistic expectation for six months of asking is three to eight; anybody promising more has not tried.
Half an hour of a reviewer's time, telling us which of these clauses actually get enforced and which are ignored. That is the one that could kill the idea, which is why it is asked first.
Before you send anything. Where a project is in dispute or a dispute is anticipated, route the file through your counsel of record rather than here. Analysis produced outside a litigation instruction may not attract work-product protection, and a file handed to a third party is a disclosure your opponent can ask about. "Completed" is not the test — a project can be finished and its claim still live. The question is whether a dispute exists or is anticipated, not whether the work is done.
How this compares to what you already have
The honest difference, in one sentence: those tools check whether a schedule is good against a general-purpose metric library with configurable thresholds; this one checks whether a schedule complies with the clause in your contract, cites the clause, and refuses to score the clauses it could not reach.
Three things follow from that, and each is checkable:
- The authority is external and free. UFGS 01 32 01.00 10 is a public government document. Nobody is being asked to accept this project's opinion of what a good schedule is. "Fails UFGS §3.3.11: seven open-ended activities, limit two" is not a claim anyone argues with. A generic threshold — "5% lag ratio" — is.
- Judgment clauses cannot pass, structurally.
- It reads how the file was computed, from the schedule's own scheduling options, and not only what it displays.
And what they do better, which should be said first. The established products have cloud authorisations, security certifications, web interfaces, far larger metric libraries, and years of production use across real portfolios. This has a command line, no interface, no certifications and no users. On any question of maturity they win, and saying so is what makes the rest of the comparison believable.
This site describes competitors only from their own published pages, on a stated date, and never characterises how any of them computes anything internally.
Are you reading the standards correctly?
Sometimes, probably not. That is a real question only the people who wrote them can settle. If you spot a misreading, that is the most useful thing you could send back.
Contact
Charley Forey — charley.s.forey@gmail.com
Source: web/pages/about.md. Source commit date: 2026-09-06.