VDOT CPM scheduling requirements: the progress-schedule special provisions

The Virginia Department of Transportation publishes its progress-schedule requirement as special provisions that replace a numbered section of the Road and Bridge Specifications, in tiers. The documents read for this page:

Clause numbers differ between tiers and the difference is not cosmetic. Category III inserts Cost Loading and Resource Loading clauses that Category II does not have, so every clause from (11) onwards sits two lower in Category II. Citing "clause (13)" on a Category II project cites a different clause altogether. Category III numbering is used throughout this page.

What Category III requires

Requirement What the Category III provision states Clause
Scheduling software The Baseline Schedule must be prepared using Primavera P6 and submitted in .xer format — and seven named P6 Schedule Options settings must be applied. II.2.A(13), II.8
Baseline schedule Within 60 days of the Contract execution date. A preliminary schedule is due within 15 days of execution, or 7 days before beginning work. II.2, II.1
Update frequency Monthly, within 7 days after the estimate date. The Update Schedule's data date is the 4th, 11th or 20th of the month, chosen against the Contractor's estimate date. II.3.A(8)
Narrative Required with the preliminary schedule, the baseline, each update and each revised baseline. II.2.B, II.3.B, II.4.B
Recovery or revised schedule trigger No clause named "recovery schedule". The analogue is the Revised Baseline Progress Schedule, with a 7-day resubmittal clock on written notice. II.4
Time impact analysis Not stated under that name in Category III. Time extensions route through Section 109.08(a); the provision carries Prospective and Retrospective Schedule Impact Analyses at V.1 and V.2. Section 109.08(a)
Float ownership Total float is a project property shared among all parties and is not for the exclusive use of any one of them. II.2.A
Activity durations Limited to 20 work days, unless the Engineer accepts otherwise. II.2.A(6)(c)
Relationship types Finish-to-start, start-to-start and finish-to-finish only, which prohibits start-to-finish by omission. Lag is prohibited unless the Engineer permits it. II.2.A(9)(a), (9)(e)
Constraints Limited to milestones the Contract specifies. Start On, Finish On, Mandatory Start and Mandatory Finish are prohibited outright. II.2.A(10), (10)(c)

The seven Schedule Options settings

Clause II.2.A(13) is the most distinctive requirement of any agency described on this site. It does not describe a schedule; it prescribes the P6 scheduling settings the file must declare, by name, in the agency's own contract language:

Setting What the clause requires Rule
Make open-ended activities critical Unmarked. II.2.A(13)(a)
Use Expected Finish Dates Unmarked. II.2.A(13)(b)
Level resources during scheduling Unmarked; resource levelling is not to determine sequence, order or timing. II.2.A(13)(c)
Scheduling progressed activities Retained Logic. II.2.A(13)(d)
Definition of critical activities Longest Path. II.2.A(13)(e)
Total float computation Finish Float — late finish minus early finish. II.2.A(13)(f)
Calendar for relationship lags Predecessor Activity Calendar. II.2.A(13)(g)

Why this matters more than its length suggests: each of these is a declared fact the exported file carries, not an inference from the network. Six live in P6's SCHEDOPTIONS record, one field each. The seventh — the definition of critical activities — is not a SCHEDOPTIONS field at all; P6 stores it on the project record as the critical path type, which is why a checker looking only at scheduling options would find nothing to read and abstain on every file in existence.

The consequence is that these seven checks read what the file declares and touch nothing this project computed. They do not consult its own forward pass, float or critical path, and none of them changes if the engine's arithmetic changes. Marking "make open-ended activities critical", for instance, makes every dangling activity report zero float, and the critical path becomes the set of everything nobody tied down — a schedule with very little logic can then present well. The clause forecloses that before any analysis begins.

The rule that checks the critical-activity definition is deliberately not a comparison between a computed longest path and a computed set of zero-float activities. Two chains tied at zero float make those sets differ on a schedule whose setting is exactly right, so a failure there would be a finding about network topology filed under a clause about a setting.

VDOT's own P6 tooling

VDOT publishes a P6 Schedule Scrubber tool and a guide for using it, along with a guide to conducting a scheduling conference. The Scrubber's stated purpose is import hygiene: it rewrites a submitted .xer so that global records become project records before the file reaches the agency's database, and it lists its actions under fourteen headings. Thirteen are namespace surgery on the file. The fourteenth analyses the schedule calculation options — the same seven settings above. It is worth knowing that a state DOT built and published a P6 conformance utility without anyone asking for one.

Two contradictions in VDOT's own documents

Reported plainly, without commentary, because a reader deciding which tier applies will meet both.

What this page does not tell you

Source: web/pages/vdot-scheduling.md. Source commit date: 2026-09-11.

See it in practice

Follow the evidence, from the schedule to the finding.

Explore the sample