What ProjectOps is
Link to section “What ProjectOps is”In 30 seconds
Link to section “In 30 seconds”ProjectOps has no agreed definition. On this page it means the operating discipline of running one bounded project under control: agreeing what will be delivered, by when and for how much (the baselines); deciding in advance how far each can move before someone more senior must decide (the tolerances); measuring progress; forecasting honestly; and escalating early when a forecast breaks a tolerance. It is project management plus the project controls (schedule, cost, risk, change) that make it measurable.
For project managers, PMO analysts, technical leads, sponsors who take escalated decisions, and beginners.
At a glance
Link to section “At a glance”| Item | Summary |
|---|---|
| Term status | Ambiguous. No body, standard or certification uses “ProjectOps”; the practice is established as project management (PMBOK Guide, PRINCE2, ISO 21502). |
| Goal | Deliver an agreed outcome within agreed tolerances, and surface early, with options, when that is no longer likely. |
| In scope | Life cycle and stage gates; the triple constraint and tolerances; work breakdown structure (WBS); schedule logic and critical path; schedule risk; RAID log; change control; earned value; status reporting; stakeholders; the project PMO; tools. |
| Out of scope | Choosing and funding projects → PortfolioOps; team cadence and flow → AgileOps; product discovery → ProductOps; contracts → ProcurementOps; company cadence → BizOps. |
| Prerequisites | Spreadsheets, percentages, basic arithmetic. Python 3 helps for the labs. |
| Key outputs | Charter, WBS, logic-linked schedule, cost baseline, tolerance table, RAID and change logs, stakeholder register, status and exception reports, closure report. |
The problem it solves
Link to section “The problem it solves”Projects fail in ways that are predictable in kind, if not in size. Bent Flyvbjerg calls the record of large projects the “iron law of megaprojects”: “Over budget, over time, over and over again.”[4] In 5,392 IT projects, he and co-authors found that cost overruns follow a power law: many small overruns and a “fat tail” of extreme ones, which managers who assume a near-normal distribution grossly underestimate.[5] Two mechanisms recur:
- Problems are found late. GAO cites studies of more than 700 US defence programmes showing “limited opportunity for getting a program back on track once it is more than 15 percent to 20 percent complete”.[6] Control that starts halfway is mostly reporting.
- Bad news travels slowly. Research on “runaway” information systems projects describes “the reluctance of organizational members to transmit negative information concerning a project and its status” (the “mum effect”).[7]
| Operating reality | Without project control | With project control |
|---|---|---|
| Scope | Described in a slide; argued about at acceptance | WBS and dictionary; anything not in it is not in the project |
| Dates | A finish date chosen first, plan drawn backwards | Logic-linked schedule; critical path and float known |
| Progress | “80% done” for weeks | Earned value from objective measures |
| Problems | Raised when the date is missed | Forecast breach of a tolerance escalated with options |
| Change | Absorbed silently, then blamed | Logged, assessed for impact, decided at the right level |
What ProjectOps is not: naming and boundaries
Link to section “What ProjectOps is not: naming and boundaries”- Not a product or a tool. Microsoft Project, Jira or Dynamics 365 host plans; none decides scope or tells the sponsor bad news.
- Not portfolio management. Choosing which projects to fund and stopping the weakest belongs to PortfolioOps. This page starts once a project is mandated and ends at closure and benefits handover.
- Not agile delivery mechanics. Scrum events, Kanban flow metrics and team retrospectives belong to AgileOps. A project can use them inside its stages; this page covers the control layer around them.
- Not operations of a running service. Operations repeat; a project ends. When work has no definable end, a project frame is usually the wrong container (see when not to use).
Where it comes from and where it sits
Link to section “Where it comes from and where it sits”Origins and evolution
Link to section “Origins and evolution”The label is new; the practice is old.
| When | Idea or event |
|---|---|
| Late 1950s | Critical path method (CPM) developed by Morgan R. Walker (DuPont) and James E. Kelley Jr. (Remington Rand); PERT at about the same time by Booz Allen Hamilton and the US Navy[8] |
| 1989, 1996 | The UK government adopts PRINCE for IT projects (1989); PRINCE2 launched in 1996[9] |
| 1998 | ANSI and the Electronic Industries Alliance establish a national standard for earned value management systems, EIA-748[6] |
| From 2003 | Walt Lipke’s earned schedule derives time-based schedule indicators from earned value data[10] |
| 2005–2006 | Flyvbjerg and colleagues outline reference class forecasting (2005), building on Kahneman and Tversky’s work; a 2006 paper reports its first use in practice[11] |
| 2020 | ISO 21502 replaces ISO 21500:2012 as guidance on project management;[12] Dynamics 365 Project Operations announced for October[1] |
| 2023 | PRINCE2 7th edition, adding people and sustainability[9] |
| Nov 2025 | PMBOK Guide Eighth Edition: six principles, seven performance domains, reintroduced process guidance[13] |
| 2026 | Agile Practice Guide, Second Edition (July);[14] Project Online retired (30 September);[15] ISO 21502 marked “to be revised”[12] |
Glossary and mental model
Link to section “Glossary and mental model”| Term | Meaning on this page |
|---|---|
| Project | PMI: “temporary efforts to create value through unique products, services and processes”.[16] |
| Triple constraint | Scope, time and cost (the “iron triangle”), with quality at the centre; you cannot change budget, schedule or scope “without affecting at least one of the other two”.[17] A simplification: tolerances here also cover risk, benefits and sustainability, because a project can hit all three and deliver no benefit. |
| Baseline | The approved scope, schedule or cost that performance is measured against; GAO: “subjected to a configuration management control process”.[18] |
| WBS | Work breakdown structure: a “product-oriented family tree” of all deliverables.[19] |
| Critical path, float | The path of longest duration through the schedule; total float is how long an activity can slip before the finish date moves.[18] |
| Tolerance | The delegated room to move on time, cost, scope, quality, risk, benefits or sustainability before an issue must be escalated (management by exception, a PRINCE2 principle).[9] |
| RAID log | Risks, assumptions, issues and dependencies kept in one register (some teams add decisions). A common convention, not a standard. |
| PV, EV, AC, BAC | Planned value, earned value (the budget of work actually done), actual cost, budget at completion (GAO also uses BCWS, BCWP, ACWP).[6] |
| CPI, SPI, TCPI | EV/AC, EV/PV, and the cost efficiency the remaining work needs to hit a target.[6] |
| EAC | Estimate at completion: cost to date plus a forecast of the remaining work; best produced as a range.[6] |
| ES, SPI(t) | Earned schedule: the time at which the plan expected today’s EV; SPI(t) = ES / actual time.[10] |
| DCA, RAG | Delivery confidence assessment, rated red, amber or green; NISTA defines it as “an assessment of the likelihood of a project delivering its objectives to time and cost”.[20] |
Mental model: a thermostat with a contract. Baselines are the set point; forecasts are the thermometer; tolerances are the band in which the project manager adjusts without asking; outside it, the thermostat calls the building’s owner (sponsor or board), who may change the set point through change control. The reference architecture draws this loop.
How ProjectOps relates to other Ops
Link to section “How ProjectOps relates to other Ops”The boundaries below are this Atlas’s editorial distinctions.
| Neighbour | Shared scope | Its unique focus | ProjectOps focus |
|---|---|---|---|
| PortfolioOps | PMO, funding, prioritisation | Choosing and stopping projects across the portfolio | Running one mandated project; escalating when its case weakens |
| AgileOps | Iterations, hybrid delivery | Team cadence, Scrum, Kanban, flow metrics | Baselines, tolerances and forecasts around the team |
| ProductOps | Roadmaps, launches | Ongoing product line, discovery, analytics | Bounded undertakings with an end; handover to the product |
| ReleaseOps | Go-live | Exposing software changes safely | The cutover milestone and its readiness criteria |
| ProcurementOps | Suppliers | Sourcing, purchase orders, procure-to-pay controls | Supplier milestones and their place in the schedule |
| BizOps | Plans and reviews | Company cadence, KPI tree | Status that feeds the business reviews |
Diagram source (Mermaid)
flowchart TB BZ["`BizOps: company cadence`"] --> PF["`PortfolioOps: choose and fund`"] PF -->|"mandate"| PJ["`ProjectOps: baselines, tolerances, forecasts`"] PJ -->|"exceptions, status"| PF PC["`ProcurementOps: suppliers, contracts`"] --> PJ PJ --> AG["`AgileOps: team cadence and flow`"] PJ --> RL["`ReleaseOps: go-live`"] PJ -->|"handover"| PR["`ProductOps: run the product`"] classDef core fill:#e8f3f2,stroke:#16756f,color:#122029 classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029 class PJ core class BZ,PF,PC,AG,RL,PR neutral
Text equivalent: BizOps sets the company cadence, which feeds PortfolioOps. PortfolioOps chooses and funds a project and issues its mandate to ProjectOps, which returns exceptions and status. ProcurementOps supplies contracts and suppliers. ProjectOps works through AgileOps team cadence, hands software go-live to ReleaseOps and hands the result over to ProductOps to run. Green: this page; grey: neighbours.
Principles and operating model
Link to section “Principles and operating model”A proposed charter and principles
Link to section “A proposed charter and principles”No “ProjectOps manifesto” exists. The charter below is this Atlas’s proposal, drawn from the sources cited. PMBOK’s eighth edition names six principles: adopt a holistic view, focus on value, embed quality, lead accountably, integrate sustainability, and build empowered teams;[13] PRINCE2’s seven include continued business justification, manage by stages and manage by exception.[9]
Mission. Deliver the agreed outcome within tolerance; when that stops being likely, tell the owners of the money and the risk early and honestly.
- Baseline before you measure. Without an agreed, versioned baseline there is no variance.
- Logic before dates. Dates come from linked activities; a typed date is a constraint that needs a reason.
- Forecast, do not narrate. Status means “where will we land” against the baseline.
- Decide at the level that owns the tolerance. Inside tolerance the PM acts; outside it, forecasts go up with options.
- Ranges, not points. Estimates and finish dates carry a confidence level.
- Make bad news cheap. RAG rules are written in advance; the first person to report a problem is thanked.
- Proportion. Control effort follows size, novelty and consequence; a two-month internal project does not need EVM.
- Finish deliberately. Handover, acceptance, a benefits owner and lessons that change something are part of the work.
Non-goals. A perfect plan; maximum utilisation of people; putting ongoing product work into a project frame.
Building blocks
Link to section “Building blocks”| Artefact | What it answers | Owner | Changed by |
|---|---|---|---|
| Charter (project brief, business case) | Why, what outcome, for whom, constraints, who decides | Sponsor | Sponsor or board |
| WBS and WBS dictionary | What exactly is in scope, broken into deliverables | Project manager[19] | Change control |
| Schedule (logic-linked) | When, in what order, what drives the finish | Project manager, scheduler | Progress updates; re-baseline via change control |
| Cost baseline and reserves | How much, when spent, what is held back for risk | Project manager, finance | Change control; reserve release rules |
| Tolerance table | How far each target may move before escalation | Sponsor or board | Board |
| RAID log | What could happen, what we assume, what is wrong now, what we depend on | Project manager | Anyone may raise; owner per item |
| Change log | What was asked to change, its impact and the decision | Project manager | Decision authority per tolerance |
| Status and exception reports | Where we will land; whether a tolerance will break | Project manager | Each reporting period; ad hoc for exceptions |
| Closure report and lessons | What was delivered, accepted, handed over, learned | Project manager | Once, at closure |
NASA’s handbook describes the WBS as identifying “the hardware, software, services, and all other deliverables required to achieve an end project objective”, including contractors’ work: “Work scope not contained in the project WBS should not be considered part of the project”.[19] Practitioners call this the 100% rule: each element’s children add up to the whole of it. That makes the WBS the scope boundary and the basis for earned value.
Example: the WBS of the lab project (wbs.csv in the control pack;
illustrative budgets). Elements are deliverables, not departments; each discrete work package maps to one
Lab 1 activity and carries its acceptance test.
Example status: data file, not executed; the budget sums were checked by script.
wbs_id,deliverable,lab1_activity,budget_usd,accepted_when
1,Leased data centre exited,,600000,all children accepted
1.1,Project management and cutover plan,,60000,children accepted
1.1.1,Project management (level of effort),,45000,closure report accepted
1.1.2,Cutover plan and contracts agreed,A,15000,board approves plan
1.2,Target platform,,300000,children accepted
1.2.1,Hosting and network links in service,B,120000,links pass supplier test
1.2.2,Target environment built,C,180000,build checklist signed
1.3,Data migration,,110000,children accepted
1.3.1,Migration tooling,D,70000,dry run on a test copy
1.3.2,Migration rehearsed,E,40000,rehearsal fits the cutover window
1.4,Service accepted by users,G,30000,UAT exit criteria met
1.5,Support agents trained,F,20000,agents pass assessment
1.6,Service cut over,H,30000,live on the new platform
1.7,Old site closed,I,50000,racks removed; lease and contracts ended
The 100% rule in numbers: 1.1.1 + 1.1.2 = 60,000 = 1.1, 1.2.1 + 1.2.2 = 300,000 = 1.2, and the seven children of 1 add up to the 600,000 BAC used in Lab 2. Work package 1.1.1 is level of effort, with no schedule activity, at 7.5% of BAC, under GAO’s 15% scrutiny threshold (core practices).
Roles, ownership and RACI
Link to section “Roles, ownership and RACI”Names vary by method: in PRINCE2 a project board directs the project manager, with business, user and supplier interests represented;[9] UK government major projects have a senior responsible owner (SRO) who reports delivery confidence;[20] many companies simply say “sponsor”.
| Role | Accountable for |
|---|---|
| Sponsor or SRO (chairs the board) | Business case, tolerances, decisions outside them, benefits after closure; must be willing to stop the project |
| User and supplier representatives | That the result is usable; that it can be built and supported |
| Project manager | Plans, control within tolerance, honest forecasts, escalation |
| Team leads (team managers) | Work packages: estimates, delivery, progress data |
| Project controls or PMO analyst | Schedule and cost data quality, EV calculation, health checks |
| Finance partner | Actual costs, accruals, capitalisation |
RACI for recurring decisions (R responsible, A accountable, C consulted, I informed):
| Decision or task | Sponsor/board | Project manager | Team leads | PMO analyst | Finance |
|---|---|---|---|---|---|
| Approve charter and tolerances | A | R | C | C | C |
| Approve baselines | A | R | C | C | C |
| Change inside tolerance | I | A/R | C | I | I |
| Change beyond tolerance | A | R | C | C | C |
| Weekly progress and forecast | I | A | R | R | C |
| RAID log upkeep | I | A | R | C | I |
| Stage-gate go / no-go | A/R | R | C | C | C |
| Acceptance and closure | A | R | C | C | I |
Lifecycle: from mandate to benefits review
Link to section “Lifecycle: from mandate to benefits review”PRINCE2’s processes run from starting up and initiating through controlling stages and managing stage boundaries to closing, with the board directing throughout.[9] PMI treats predictive, adaptive and hybrid approaches as per-project choices;[21] the stage-and-gate skeleton below fits all three, because adaptive teams can deliver inside a stage.
Diagram source (Mermaid)
flowchart TB
M["`Mandate from
the portfolio`"] --> I["`Initiate: charter,
WBS, baselines`"]
I --> G1{{"Gate: approve plan?"}}
G1 -->|"yes"| S["`Deliver a stage:
control within tolerance`"]
G1 -->|"no"| X["Stop or reshape"]
S --> T{{"Forecast breaks tolerance?"}}
T -->|"no"| G2{{"Stage gate: next stage?"}}
T -->|"yes"| E["`Exception report
with options`"]
E --> B["`Board decides: new plan,
change or stop`"]
B --> S
B --> X
X -.->|"reshape"| I
G2 -->|"more stages"| S
G2 -->|"last stage done"| C["`Close: accept,
hand over, lessons`"]
C --> R["`Benefits review
by the sponsor`"]
classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
class I,S,C,R core
class G1,T,G2,B decision
class E,X risk
Text equivalent: A mandate from the portfolio leads to initiation (charter, WBS, baselines). At the first gate the board approves the plan, or stops the project or reshapes it, which sends it back to initiation (dashed line). Each stage is delivered under control within tolerance. If a forecast breaks a tolerance, an exception report with options goes to the board, which decides on a new plan, a change or stopping; otherwise the stage gate decides whether to run the next stage. After the last stage the project closes (acceptance, handover, lessons) and the sponsor later reviews benefits.
Exit criteria keep gates honest: initiation ends when the board approves the baselines; a stage, when its products are accepted and the next stage is planned; closure, when the sponsor signs off and a named owner takes the benefits. For the UK’s Government Major Projects Portfolio (GMPP: typically projects that need Treasury approval because the budget exceeds a department’s delegated authority and/or the project is “novel, complex, contentious, or requires primary legislation”), the authority NISTA uses a “five stage gate approach” and reviews projects leaving the GMPP, including “consideration of the ongoing tracking of project benefits”.[20]
Operating model and governance
Link to section “Operating model and governance”Management by exception. In PRINCE2, as Wikipedia summarises it, a higher level of management delegates authority to a lower one as tolerances; a tolerance forecast to be exceeded becomes an exception for the level that set it. The seventh edition has seven tolerance areas: scope, timescale, risk, quality, benefits, cost and sustainability.[9] An illustrative tolerance table for a mid-sized internal project:
| Area | Project tolerance (board → PM) | Stage tolerance (PM → team lead) | Measured by |
|---|---|---|---|
| Cost | +10% / −5% of BAC | +5% of work-package budget | EAC (Lab 2) |
| Time | +2 weeks on the go-live milestone | +3 days on a work package | Forecast finish; SPI(t) |
| Scope | No “must” requirement removed | Changes to “could” items | Change log |
| Risk | No single risk with expected impact above 5% of BAC | Escalate any new high risk | RAID log |
| Benefits | Business case remains positive | — | Benefits forecast at gates |
Cadence. A weekly team checkpoint collects progress and forecast; a fortnightly or monthly highlight report goes to the board; stage gates decide whether to continue; exception reports go up as soon as a breach is forecast, not at the next meeting. Change control routes every request through one log: impact on scope, schedule, cost, risk and benefits is assessed, then decided by whoever owns the affected tolerance.
Architecture and workflow
Link to section “Architecture and workflow”Reference architecture: the project control loop
Link to section “Reference architecture: the project control loop”A controlled project is a feedback loop with one rule about who closes it. Its systems are modest; what matters is that they agree.
Diagram source (Mermaid)
flowchart TB
BL["`Baselines: WBS, schedule,
budget, tolerances`"] --> EX["`Teams do the work
(any delivery method)`"]
EX --> MS["`Measure: progress,
actual cost, risks`"]
MS --> FC["`Compare and forecast:
variance, EAC, finish range`"]
FC --> Q{"Inside tolerance?"}
Q -->|"yes"| CA["`PM corrective action:
resequence, reassign`"]
CA --> EX
Q -->|"no, forecast breach"| ER["`Exception report
with options`"]
ER --> BD["Board decision"]
BD -->|"approved change"| CC["`Change control:
re-baseline, log`"]
CC --> BL
BD -->|"stop"| ST["Close early"]
classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
class BL,EX,MS,FC,CA,CC core
class Q,BD decision
class ER,ST risk
Text equivalent: Baselines (WBS, schedule, budget, tolerances) guide the teams’ work, whatever their method. Progress, actual cost and risks are measured and compared with the baselines to give variances, an estimate at completion and a finish range. Inside tolerance, the project manager corrects course (resequencing, reassigning) and work continues. If a breach is forecast, an exception report with options goes to the board; an approved change passes through change control, which re-baselines and logs it, or the board stops the project.
| Component | Holds | Integrity check |
|---|---|---|
| Schedule or work tracker | Activities, logic, progress, forecast dates | Every activity linked; no unexplained hard constraints |
| Cost ledger (finance system, timesheets) | Actual cost by work package | Reconciles to finance monthly; accruals included |
| Baseline store | Approved versions of scope, schedule, cost | Every change has a change-log entry |
| RAID and change logs | Risks, assumptions, issues, dependencies; requests, decisions | Owner and review date on every open item |
| Status pack | Variances, EAC range, finish range, RAG with reasons | Generated from the above by written rules (Lab 2) |
The commonest architectural fault is several sources of truth: schedule, tracker and status report each say something different. GAO makes the point for earned value: implemented correctly, EVM “prevents organizations from managing with one system and reporting from another”.[6] Trust boundary: status flows upwards through people with a stake in how it looks; assurance checks it independently.
End-to-end workflow: one reporting cycle and one exception
Link to section “End-to-end workflow: one reporting cycle and one exception”Trigger. The weekly checkpoint, or any event that changes the forecast (a supplier slip, a failed test, a resignation).
Happy path. Team leads update progress and remaining duration; the PMO analyst refreshes schedule and earned value, runs the Lab 1 logic checks and publishes the forecast; the project manager acts inside tolerance, records it in the RAID log and sends the highlight report.
Exception path. Below, the refreshed cost EAC breaks the cost tolerance.
Diagram source (Mermaid)
sequenceDiagram autonumber participant T as Team leads participant P as PM and PMO analyst participant B as Project board T->>P: Progress, actuals, revised estimates P->>T: Ask for cause and recovery options T->>P: Cause and three options P->>B: Exception report: breach, options, recommendation B->>P: Decision: option B, new cost tolerance P->>T: Re-baselined plan, change logged
Text equivalent: (1) Team leads send progress, actuals and revised estimates to the project manager and PMO. (2) The forecast shows a breach, so the project manager asks for cause and recovery options, and (3) the team leads return the cause with three options. (4) The project manager sends the board an exception report with the breach, options and a recommendation. (5) The board chooses option B with a new cost tolerance. (6) The project manager issues the re-baselined plan and logs the change.
Measure the exception path by two durations: data cut-off to forecast, and forecast breach to board decision. Options include using reserve, cutting scope, adding time or money, or stopping; a single-option report asks for approval, not a decision.
Practices, frameworks and tools
Link to section “Practices, frameworks and tools”Core practices and playbooks
Link to section “Core practices and playbooks”| Practice | Goal | Owner | Output | Verification |
|---|---|---|---|---|
| Decompose scope | Every deliverable named once | PM with team leads | WBS and dictionary | Children add up to parent; acceptance criteria per work package |
| Build schedule logic | Dates come from dependencies | PM, scheduler | Linked schedule, critical path | No open ends; constraints and lags justified (Lab 1) |
| Estimate in ranges | Honest uncertainty | Team leads | Min / likely / max per activity | Schedule risk analysis (Lab 3); outside-view check |
| Keep the RAID log | Nothing known goes unmanaged | PM | Owned, dated items | No open item without owner and next review date |
| Control change | Scope moves only by decision | PM; authority per tolerance | Change log, new baseline version | Baseline versions match logged decisions |
| Measure progress objectively | Progress you can audit | Team leads, PMO | EV, forecasts (Lab 2) | Earned value from observable completion, not effort spent |
| Report by rule | Status no one can spin | PM | Status with RAG reasons | RAG computed from written thresholds |
| Close deliberately | Value survives the project | PM, sponsor | Handover, lessons, benefits owner | Open items transferred; lessons with an owner |
Logic first. GAO’s schedule guide asks for all activities to be “logically sequenced and linked” and says “date constraints and lags should be minimized and justified”; it also flags dangling logic, an activity whose start no predecessor drives or whose finish drives nothing.[18] A schedule of typed dates computes no critical path. Logic is necessary but not sufficient: GAO warns that “the critical path method of scheduling assumes unlimited resources”. Its third best practice assigns resources to all activities; levelling then delays or reassigns work until people are free, so the path that drives the finish can run through a shared team (GAO’s “resource critical path”).[18] Check resource loading before trusting float.
Measure progress objectively. GAO lists accepted ways to claim earned value: fixed formulas (0/100, 50/50) for short work packages, weighted milestones for longer ones, and percent complete only when “based on objective and quantifiable work completion”.[6] Level-of-effort work (such as management itself) earns value with the passage of time; GAO suggests scrutinising it when more than 15% of a budget is classified that way.[6]
Estimate from outside, too. Flyvbjerg’s reference class forecasting takes the “outside view” in three steps: identify a class of similar past projects, establish the distribution of their outcomes, and place the new project in it.[11] Use it to cross-check the bottom-up estimate, not to replace it.
Stakeholder management: who decides, who must be told
Link to section “Stakeholder management: who decides, who must be told”Stakeholders are one of PMBOK’s seven performance domains.[13] The question: who can stop, change or fund the work, and by when?
- Identify and analyse (initiation). List everyone who can approve, block, fund, use or be harmed by the result. A common convention (not a standard) is a power/interest grid: manage closely those high on both, keep the powerful satisfied and the interested informed.
- Write decision rights down. For each: what they decide, what they are consulted on, by when. A tolerance owner’s decisions sit on the critical path of every exception.
- Engage on the reporting cadence. Board: highlight and exception reports; users: accepted increments each stage; operations: readiness checks before gates. The register, with a sample row, is in the control pack.
Two failure patterns recur. The sponsor who will not decide: exceptions wait for weeks. Put a “decision needed by” date on every exception report, measure decision latency, and escalate to the portfolio forum when they pass. The hidden veto holder: a security team, regulator or works council blocks go-live at acceptance. At initiation ask “who could stop go-live?”, put their criteria into the WBS and invite them to gate reviews.
Methods, standards and frameworks
Link to section “Methods, standards and frameworks”| Source | Type | What it gives you | Status (as of October 2026) |
|---|---|---|---|
| PMBOK Guide, 8th ed. (PMI) | Standard and guide | Six principles; seven performance domains (governance, scope, schedule, finance, stakeholders, resources, risk); non-prescriptive processes | Published November 2025[13] |
| PRINCE2, 7th ed. | Method | Principles, practices, processes; tolerances; roles; tailoring | 2023; owned by PeopleCert since 2021[9] |
| ISO 21502:2020 | International guidance | Practices for any project “regardless of purpose, delivery approaches, life cycle model” | Marked “to be revised”; draft under development[12] |
| GAO Schedule Assessment Guide (GAO-16-89G) | Audit criteria | Ten best practices for a reliable schedule | December 2015[18] |
| GAO Cost Estimating and Assessment Guide (GAO-20-195G) | Audit criteria | Cost estimating, EVM execution, EAC methods | March 2020[6] |
| EIA-748 | Industry standard (US) | Guidelines for earned value management systems | Revision E, 16 February 2026, listed as current;[22] GAO’s 2020 guide cites revision D (January 2019)[6] |
| Agile Practice Guide, 2nd ed. (PMI with Agile Alliance) | Guide | Choosing predictive, agile or hybrid life cycles; flow and DORA metrics | Published July 2026[14] |
| GovS 002 Project Delivery (UK) | Mandated in UK government | Expectations for directing and managing portfolios, programmes and projects | Version 2.1, September 2025[23][24] |
None of these binds a private company by itself. GovS 002 is “the approved and mandated reference for all government departments and arm’s length bodies” in the UK;[24] in the US, GAO reports that OMB has required EVM for all major capital acquisitions since 2006.[6] For everyone else they are references to tailor, with a known failure mode: keeping a method’s names and dropping its principles, which Wikipedia’s PRINCE2 article calls a “PINO project – PRINCE in Name Only”.[9]
Tooling landscape
Link to section “Tooling landscape”| Category | Examples (as of October 2026) | Strengths | Limits and watch-outs |
|---|---|---|---|
| Desktop and server scheduling | Microsoft Project desktop; Project Server Subscription Edition[15] | Full critical path method: zero total slack marks a task critical by default, threshold adjustable; negative slack shown[25][26] | Single scheduler bottleneck; weak link to team trackers |
| Cloud work management | Microsoft Planner premium plans (Planner and Project Plan 3 or 5): baselines, Gantt, all four dependency types with automatic rescheduling, critical path in the timeline view;[15][27] Jira Plans (Premium and Enterprise): cross-team plans, dependencies, capacity, scenarios[28] | Close to where teams work | Jira’s cited overview documents no critical-path or float analysis; for float, negative slack and baseline depth, test your tier |
| Open source | OpenProject: Gantt with predecessor and successor relations;[29] baseline comparison (Community edition: changes since yesterday only; other dates need the Enterprise add-on)[30] | Self-hosting, no licence lock-in | You run and patch it |
| Professional-services automation | Dynamics 365 Project Operations: quoting, resourcing, time and expense, project accounting[2] | Ties delivery to billing and revenue | Built for firms that sell projects; heavy for internal work |
| Spreadsheets and scripts | Any spreadsheet; the labs below | Transparent, auditable formulas | Version control and access are on you |
Lock-in is a project risk too. Microsoft announced on 5 September 2025 that Project Online would retire on 30 September 2026 (Project desktop, Project Server and Planner unaffected) and told customers to back up their data.[15] Keep baselines, logs and status history exportable in open formats.
Automation and AI
Link to section “Automation and AI”Automation helps where the work is mechanical: pulling actuals, recomputing forecasts, running schedule health checks, drafting status text from structured data. Examples as of October 2026: Microsoft’s Planner Agent (announced in September 2025 as the Project Manager agent, renamed in 2026) generates tasks, executes assigned tasks and writes status reports, and requires a Microsoft Copilot licence;[15][31][32][33] NISTA’s “Early Warning System” “uses existing GMPP data to flag projects at risk of transitioning to a Red rating”.[20] PMBOK’s eighth edition adds coverage of AI.[13]
Three limits apply. A model that drafts status from optimistic inputs produces fluent optimism, so keep the RAG rules deterministic and let AI explain them. An early-warning score is a prompt for a conversation, not a verdict. And anything a model writes into a baseline or a change log must be approved by the person who owns that tolerance.
ProjectOps in practice
Link to section “ProjectOps in practice”Reference implementation: a project control pack
Link to section “Reference implementation: a project control pack”The smallest useful implementation is one versioned file that states the control rules, plus the registers and the schedule it points to. Writing the rules down before the first report is what makes later status hard to spin. The values are illustrative.
Example status: syntax-checked (YAML), not executed; it is a configuration you adapt, not a tool.
project: exit-leased-data-centre # illustrative
sponsor: "Director of Infrastructure"
baselines:
version: 3 # bumped only by an approved change
scope: wbs.csv # WBS and dictionary
schedule: network.json # logic-linked activities (Lab 1)
cost: {bac: 600000, currency: USD, management_reserve: 45000}
tolerances: # board -> project manager
cost: {over_pct: 10, under_pct: 5} # Lab 2 tests over_pct (cost_pct)
time: {go_live_slip_days: 10}
scope: "no 'must' requirement removed without board approval"
risk: "no single risk with expected impact above 5% of BAC"
rag_rules: # computed, never typed by hand
red: "a forecast breaks a tolerance (cost: BAC / CPI; time: IEAC(t))"
amber: "CPI or SPI(t) < 1.0, or reported EAC fails the TCPI test"
green: "otherwise"
tcpi_test: "TCPI to the reported EAC > CPI + 0.05 (GAO rule of thumb)"
cadence:
checkpoint: weekly # team leads -> PM
highlight_report: fortnightly # PM -> board
exception_report: "within 2 working days of a forecast breach"
schedule_health_check: monthly # Lab 1 checks, by the PMO
registers:
raid_log:
fields: [id, type, description, owner, next_review, status]
example: [R-07, risk, "network links late; blocks C (critical)", "Infra lead",
"week 3 checkpoint", open]
change_log: {fields: [id, request, impact, decided_by, decision, date]}
stakeholders:
fields: [name, interest, influence, decides, consulted_on, cadence]
example: ["Head of Security", "no data exposed in migration", high,
"go-live security sign-off", "rehearsal plan (E)", "gate reviews"]
Hands-on labs
Link to section “Hands-on labs”Three labs on one illustrative project: moving a support platform out of a leased data centre whose lease ends on working day 60. Python 3 standard library only; no cost, no live system, 30–45 minutes each. Use a new, empty folder. All three scripts were executed with Python 3.8.10 (the only interpreter available) on 2026-10-23, and use only syntax valid on 3.8 and later; use a supported Python release. The outputs shown are the actual outputs.
Lab 1 (beginner): find the critical path and check the logic
Link to section “Lab 1 (beginner): find the critical path and check the logic”Objective: compute early and late dates, total float and the critical path, and catch broken logic before trusting any date. Prerequisites: Python 3. Risk: none (local files only).
- Save the JSON as
network.jsonand the script ascpm.py. - Run
python3 cpm.py network.json; echo $?. - Make a planning decision: the supplier offers an expedited order. Change activity B’s
daysfrom 15 to 9 and run again. - Break the logic on purpose: change H’s
afterto["G"](so training no longer feeds the cutover) and run again.
Diagram source (Mermaid)
flowchart TB A["A Plan, 10 d"] --> B["B Order links, 9 d"] A --> D["D Migration tooling, 12 d"] A --> F["F Train agents, 5 d"] B --> C["C Build target, 20 d"] C --> E["E Rehearse, 8 d"] D --> E E --> G["G Acceptance test, 6 d"] G --> H["H Cut over, 2 d"] F --> H H --> I["I Decommission, 5 d"] classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029 classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029 class A,B,C,E,G,H,I risk class D,F neutral
Text equivalent: Activity A (plan, 10 days) precedes B (order network links, 9 days after the expedited order), D (migration tooling, 12 days) and F (train agents, 5 days). B precedes C (build target, 20 days); C and D both precede E (rehearse, 8 days); E precedes G (acceptance test, 6 days); G and F both precede H (cut over, 2 days); H precedes I (decommission, 5 days). Red marks the critical path A, B, C, E, G, H, I (60 days); D and F (grey) have float.
{
"project": "Exit the leased data centre (illustrative)",
"deadline_day": 60,
"activities": {
"A": {"name": "Plan cutover and contracts", "days": 10, "after": []},
"B": {"name": "Order hosting and network links", "days": 15, "after": ["A"]},
"C": {"name": "Build target environment", "days": 20, "after": ["B"]},
"D": {"name": "Build data-migration tooling", "days": 12, "after": ["A"]},
"E": {"name": "Rehearse migration", "days": 8, "after": ["C", "D"]},
"F": {"name": "Train support agents", "days": 5, "after": ["A"]},
"G": {"name": "User acceptance test", "days": 6, "after": ["E"]},
"H": {"name": "Cut over", "days": 2, "after": ["G", "F"]},
"I": {"name": "Decommission old racks", "days": 5, "after": ["H"]}
}
}
Example status: verified by execution (Python 3.8.10, 2026-10-23).
"""Critical path, total float and basic logic checks for a small schedule.
Usage: python3 cpm.py network.json
Durations are working days; day 0 is the project start. Finish-to-start
links only. Exit code 1 if the logic is broken (unknown predecessor,
a loop, or more than one open start or end that is not listed under
"justified_open_ends") or the deadline is missed.
"""
import json
import sys
def topo_order(acts):
order, done, visiting = [], set(), set()
def visit(k):
if k in done:
return
if k in visiting:
raise ValueError("loop in logic at " + k)
visiting.add(k)
for p in acts[k]["after"]:
visit(p)
visiting.discard(k)
done.add(k)
order.append(k)
for k in sorted(acts):
visit(k)
return order
def main(path):
with open(path) as f:
net = json.load(f)
acts = net["activities"]
problems = []
for k, a in acts.items():
for p in a["after"]:
if p not in acts:
problems.append(f"{k}: unknown predecessor {p}")
succ = {k: [] for k in acts}
for k, a in acts.items():
for p in a["after"]:
if p in succ:
succ[p].append(k)
justified = set(net.get("justified_open_ends", [])) # e.g. hand-offs
starts = [k for k in acts if not acts[k]["after"] and k not in justified]
ends = [k for k in acts if not succ[k] and k not in justified]
if len(starts) > 1:
problems.append("open starts (no predecessor): " + ", ".join(starts))
if len(ends) > 1:
problems.append("open ends (no successor): " + ", ".join(ends))
if problems:
print("LOGIC PROBLEMS:\n " + "\n ".join(problems))
return 1
order = topo_order(acts)
es, ef = {}, {}
for k in order: # forward pass
es[k] = max([ef[p] for p in acts[k]["after"]], default=0)
ef[k] = es[k] + acts[k]["days"]
finish = max(ef.values())
ls, lf = {}, {}
for k in reversed(order): # backward pass
lf[k] = min([ls[s] for s in succ[k]], default=finish)
ls[k] = lf[k] - acts[k]["days"]
print(f"{'id':<3}{'activity':<32}{'dur':>4}{'ES':>4}{'EF':>4}"
f"{'LS':>4}{'LF':>4}{'float':>6}")
for k in order:
tf = ls[k] - es[k]
mark = " *" if tf == 0 else ""
print(f"{k:<3}{acts[k]['name']:<32}{acts[k]['days']:>4}{es[k]:>4}"
f"{ef[k]:>4}{ls[k]:>4}{lf[k]:>4}{tf:>6}{mark}")
path_ids = [k for k in order if ls[k] == es[k]]
print(f"\nCritical path: {' -> '.join(path_ids)} ({finish} days)")
slack = net["deadline_day"] - finish
print(f"Deadline day {net['deadline_day']}: margin {slack:+d} days")
return 0 if slack >= 0 else 1
if __name__ == "__main__":
sys.exit(main(sys.argv[1]))
Expected output (step 2, the exit code, then step 3’s last two lines):
id activity dur ES EF LS LF float
A Plan cutover and contracts 10 0 10 0 10 0 *
B Order hosting and network links 15 10 25 10 25 0 *
C Build target environment 20 25 45 25 45 0 *
D Build data-migration tooling 12 10 22 33 45 23
E Rehearse migration 8 45 53 45 53 0 *
F Train support agents 5 10 15 54 59 44
G User acceptance test 6 53 59 53 59 0 *
H Cut over 2 59 61 59 61 0 *
I Decommission old racks 5 61 66 61 66 0 *
Critical path: A -> B -> C -> E -> G -> H -> I (66 days)
Deadline day 60: margin -6 days
1
Critical path: A -> B -> C -> E -> G -> H -> I (60 days)
Deadline day 60: margin +0 days
Step 4 prints open ends (no successor): F, I and exits with 1: training now drives nothing, so a late training course could
never show up as a risk to the cutover. GAO accepts an open end only if “clearly justified” in the schedule documentation, for
example a hand-off to an external partner;[18] list such cases under justified_open_ends. Undo step 4
before Lab 3. Validation: in step 2 the float of D is 23 days (LS 33 − ES 10) and the critical path sums to 10 + 15 + 20 + 8 +
6 + 2 + 5 = 66 days. Troubleshooting: a misspelt predecessor prints unknown predecessor; a KeyError means an activity
lacks its days or after field; “loop in logic” means two activities wait for each other. Teardown: delete the folder.
What it teaches. The plan missed the lease by six days; only shortening a critical activity (B) helped; shortening D or F
would not. A zero margin is not safety (Lab 3). Float also assumes free people. If one team must build both D and C, model
levelling D first by adding "D" to C’s after list: with B at 9 days the run gives 63 days (margin −3), and D, which had
17 days of float on logic alone, becomes critical.
Lab 2 (intermediate): earned value status with a rule-based RAG
Link to section “Lab 2 (intermediate): earned value status with a rule-based RAG”Objective: turn month-3 data into variances, indexes, a range of EACs, TCPI, earned schedule and a RAG status computed from the tolerances. Prerequisites: Python 3; Lab 1 not required.
- Save
ev.jsonandevm.py. Runpython3 evm.py ev.json; echo $?.eac_reportedis the EAC the project reports to its board. - Change
acto235000and run again. Then also changeevto290000. - Test the realism rule: set
ev280000,ac295000 andeac_reported600000 (the project still claims “on budget”).
{
"project": "Exit the leased data centre (illustrative)",
"currency": "USD",
"bac": 600000,
"planned_months": 6,
"pv_cumulative": [80000, 180000, 300000, 420000, 520000, 600000],
"status_month": 3,
"ev": 240000,
"ac": 280000,
"eac_reported": 640000,
"tolerance": {"cost_pct": 10, "months": 0.5}
}
Example status: verified by execution (Python 3.8.10, 2026-10-23).
"""Earned value status: variances, indexes, a range of estimates at
completion (EAC), TCPI, earned schedule, and a rule-based RAG status.
Usage: python3 evm.py ev.json
Formulas follow GAO-20-195G (CPI, SPI, TCPI, index-based EACs) and
Lipke's earned schedule (ES, SPI(t), IEAC(t) = PD / SPI(t)).
RED: a forecast breaks a tolerance (cost: BAC / CPI; time: IEAC(t)).
AMBER: CPI or SPI(t) below 1.0, or the reported EAC fails GAO's realism
test (TCPI to that EAC more than 0.05 above CPI). Exit code 1 on RED.
"""
import json
import sys
def earned_schedule(pv, ev):
"""Months at which the plan expected today's EV (linear interpolation)."""
prev = 0.0
for month, cum in enumerate(pv, start=1):
if ev <= cum:
return month - 1 + (ev - prev) / (cum - prev)
prev = cum
return float(len(pv))
def main(path):
with open(path) as f:
d = json.load(f)
bac, ev, ac = d["bac"], d["ev"], d["ac"]
at = d["status_month"]
pv = d["pv_cumulative"][at - 1]
cpi, spi = ev / ac, ev / pv
print(f"PV {pv:,} EV {ev:,} AC {ac:,} BAC {bac:,}")
print(f"CV {ev - ac:+,} SV {ev - pv:+,} CPI {cpi:.3f} SPI {spi:.3f}")
eacs = {
"AC + (BAC-EV) [remaining work at plan]": ac + (bac - ev),
"BAC / CPI [cost efficiency persists]": bac / cpi,
"AC + (BAC-EV)/(CPI*SPI) [cost and schedule drag]":
ac + (bac - ev) / (cpi * spi),
}
for name, value in eacs.items():
print(f"EAC {name}: {value:,.0f}")
tol = d["tolerance"]
cost_limit = bac * (1 + tol["cost_pct"] / 100)
above = sum(v > cost_limit for v in eacs.values())
print(f"{above} of {len(eacs)} EACs above cost tolerance {cost_limit:,.0f}")
eac_rep = d["eac_reported"]
tcpi_bac = (bac - ev) / (bac - ac)
tcpi_rep = (bac - ev) / (eac_rep - ac)
print(f"TCPI to BAC {tcpi_bac:.3f}; to reported EAC {eac_rep:,} "
f"{tcpi_rep:.3f} (CPI {cpi:.3f})")
es = earned_schedule(d["pv_cumulative"], ev)
spi_t = es / at
ieac_t = d["planned_months"] / spi_t
print(f"ES {es:.2f} months at AT {at}: SV(t) {es - at:+.2f} "
f"SPI(t) {spi_t:.3f} forecast duration {ieac_t:.1f} months")
time_limit = d["planned_months"] + tol["months"]
reasons, notes = [], []
if bac / cpi > cost_limit:
reasons.append(f"EAC {bac / cpi:,.0f} > cost tolerance {cost_limit:,.0f}")
if ieac_t > time_limit:
reasons.append(f"duration {ieac_t:.1f} > time tolerance {time_limit}")
if tcpi_rep > cpi + 0.05:
notes.append(f"reported EAC not credible: TCPI {tcpi_rep:.2f} "
f"> CPI {cpi:.2f} + 0.05")
if reasons:
status = "RED"
elif notes or cpi < 1 or spi_t < 1:
status = "AMBER"
else:
status = "GREEN"
print(f"Status {status}" + "".join("\n - " + r for r in reasons + notes))
return 1 if status == "RED" else 0
if __name__ == "__main__":
sys.exit(main(sys.argv[1]))
Expected output (step 1, then the exit code):
PV 300,000 EV 240,000 AC 280,000 BAC 600,000
CV -40,000 SV -60,000 CPI 0.857 SPI 0.800
EAC AC + (BAC-EV) [remaining work at plan]: 640,000
EAC BAC / CPI [cost efficiency persists]: 700,000
EAC AC + (BAC-EV)/(CPI*SPI) [cost and schedule drag]: 805,000
2 of 3 EACs above cost tolerance 660,000
TCPI to BAC 1.125; to reported EAC 640,000 1.000 (CPI 0.857)
ES 2.50 months at AT 3: SV(t) -0.50 SPI(t) 0.833 forecast duration 7.2 months
Status RED
- EAC 700,000 > cost tolerance 660,000
- duration 7.2 > time tolerance 6.5
- reported EAC not credible: TCPI 1.00 > CPI 0.86 + 0.05
1
Validation by hand: CPI = 240,000 / 280,000 = 0.857; SPI = 240,000 / 300,000 = 0.800. The month-2 plan was 180,000 and
month 3 was 300,000, so ES = 2 + (240,000 − 180,000) / (300,000 − 180,000) = 2.50 months, and SPI(t) = 2.50 / 3 = 0.833.
TCPI to BAC = 360,000 / 320,000 = 1.125: the remaining work would have to run 31% more efficiently to land on budget. In step
2, AC at 235,000 removes the cost breach (BAC / CPI 587,500; only the highest EAC, 675,625, exceeds tolerance) but the time
breach keeps it red; with EV also at 290,000, SPI(t) is 0.972, the forecast 6.2 months, and the status amber (exit 0). Step 3
prints BAC / CPI 632,143 (inside tolerance), forecast 6.4 months, and AMBER with “reported EAC not credible: TCPI 1.05 > CPI
0.95 + 0.05”. Troubleshooting: ZeroDivisionError means AC or PV is zero (too early for EV) or AC equals BAC or the reported
EAC. Teardown: delete the folder.
What it teaches. The EACs are a range, not a menu; GAO calls developing more than one EAC a best practice. Its rule of thumb, “if the TCPI is more than 5 percentage points higher than the CPI, the EAC is too optimistic”, tests a reported EAC’s realism;[6] this lab uses it for amber and keeps red for forecasts that break a tolerance (this page’s adaptation). Testing TCPI to BAC instead would have turned step 3 red although every EAC is inside tolerance. The red cost rule uses BAC / CPI, this page’s choice: it assumes only that efficiency to date continues.
Lab 3 (advanced): how likely is day 60?
Link to section “Lab 3 (advanced): how likely is day 60?”Objective: run a Monte Carlo schedule risk analysis on the Lab 1 network (with B at 9 days) and read P50, P80 and the
criticality index. Prerequisites: Lab 1 completed, with step 3 kept and step 4 undone. network.json gives the logic,
ranges.json the durations; the script notes any mismatch.
- Save
ranges.json(minimum, most likely, maximum days) andsra.py. - Run
python3 sra.py network.json ranges.json. - Widen D’s range to
[10, 12, 36]and run again; watch D’s criticality index.
{
"A": [9, 10, 14], "B": [8, 9, 15], "C": [18, 20, 30],
"D": [10, 12, 20], "E": [6, 8, 12], "F": [4, 5, 6],
"G": [5, 6, 10], "H": [2, 2, 3], "I": [4, 5, 8]
}
Example status: verified by execution (Python 3.8.10, 2026-10-23); the fixed seed makes the numbers repeatable.
"""Monte Carlo schedule risk analysis for the Lab 1 network.
Usage: python3 sra.py network.json ranges.json [runs]
ranges.json gives (minimum, most likely, maximum) days per activity;
each run samples triangular durations and recomputes the forward pass.
Reports the deterministic finish (most likely durations), P50 and P80
finish days, the chance of meeting the deadline, and how often each
activity was on the longest path (its criticality index).
"""
import json
import random
import sys
def forward(acts, order, dur):
ef, driver = {}, {}
for k in order:
preds = acts[k]["after"]
start = max([ef[p] for p in preds], default=0)
driver[k] = max(preds, key=lambda p: ef[p]) if preds else None
ef[k] = start + dur[k]
last = max(ef, key=ef.get)
path, k = set(), last
while k:
path.add(k)
k = driver[k]
return ef[last], path
def main(net_path, ranges_path, runs):
with open(net_path) as f:
net = json.load(f)
with open(ranges_path) as f:
ranges = json.load(f)
acts = net["activities"]
order, seen = [], set()
while len(order) < len(acts): # simple topological sort
before = len(order)
for k in sorted(acts):
if k not in seen and all(p in seen for p in acts[k]["after"]):
order.append(k)
seen.add(k)
if len(order) == before: # nothing placed: bad id or a loop
stuck = ", ".join(k for k in sorted(acts) if k not in seen)
sys.exit("unknown predecessor or loop in logic at: " + stuck)
mode = {k: ranges[k][1] for k in acts} # durations come from ranges
for k in acts:
if mode[k] != acts[k]["days"]:
print(f"Note: {k} most likely {mode[k]} d, network.json "
f"{acts[k]['days']} d; ranges.json is used")
det, _ = forward(acts, order, mode)
rng = random.Random(42) # fixed seed: repeatable output
finishes, crit = [], {k: 0 for k in acts}
for _ in range(runs):
dur = {k: rng.triangular(ranges[k][0], ranges[k][2], ranges[k][1])
for k in acts}
finish, path = forward(acts, order, dur)
finishes.append(finish)
for k in path:
crit[k] += 1
finishes.sort()
p50 = finishes[int(0.50 * runs)]
p80 = finishes[int(0.80 * runs)]
hit = sum(f <= net["deadline_day"] for f in finishes) / runs
print(f"Deterministic finish: day {det}")
print(f"P50 day {p50:.1f} P80 day {p80:.1f} "
f"P(finish <= day {net['deadline_day']}) = {hit:.0%}")
print("Criticality index (share of runs on the longest path):")
for k in order:
print(f" {k} {acts[k]['name']:<32}{crit[k] / runs:>6.0%}")
if __name__ == "__main__":
n = int(sys.argv[3]) if len(sys.argv) > 3 else 10000
main(sys.argv[1], sys.argv[2], n)
Expected output (step 2):
Deterministic finish: day 60
P50 day 67.8 P80 day 71.2 P(finish <= day 60) = 1%
Criticality index (share of runs on the longest path):
A Plan cutover and contracts 100%
B Order hosting and network links 100%
C Build target environment 100%
D Build data-migration tooling 0%
E Rehearse migration 100%
F Train support agents 0%
G User acceptance test 100%
H Cut over 100%
I Decommission old racks 100%
In step 3, D’s criticality index rises from 0% to 2% (and B’s and C’s fall to 98%): a parallel path that is usually safe
sometimes becomes the one that sets the date. Validation: no Note: lines appear, so the most-likely durations match Lab 1’s
network, and the deterministic finish (60) equals Lab 1’s step 3. Troubleshooting: “unknown predecessor or loop” stops the
run on a bad id or circular logic; if every percentile equals the deterministic finish, the ranges are all [x, x, x].
Teardown: delete the folder.
What it teaches. The plan built from most-likely durations has about a 1% chance of meeting day 60 under these (invented) ranges, mostly because each range runs further late than early, so the finish distribution is right-skewed, as GAO says schedule distributions tend to be; merging paths add “merge bias”.[18] GAO calls the 80th percentile “a conservative promise date” for some programmes and sizes contingency as the gap between the deterministic date and the chosen percentile.[18]
Use cases and scenarios
Link to section “Use cases and scenarios”All three scenarios are illustrative, not descriptions of real organisations.
| Scenario | Context | Approach | Trade-off | Success measure |
|---|---|---|---|---|
| Hard-dated infrastructure exit | Lease ends on a fixed day; hardware lead times | Predictive: full logic, critical path, schedule risk analysis | Scheduling effort; little room for late scope | Cutover by the P80 date; site empty before lease end |
| Fixed budget, open scope | A team builds a new self-service capability | Adaptive inside a cost tolerance; earned value from accepted increments | Scope flexes; date and budget held | Accepted increments per stage; benefits measured after release |
| The project that never ends | “Customer portal phase 4” | Stop the project frame; fund a durable team (ProductOps) | No end date; needs product metrics | Outcome metrics owned by a product manager |
Pitfalls. A vendor’s “on track” is weak evidence until acceptance tests pass (supplier milestones and contract terms: ProcurementOps); team velocity is not earned value. For the never-ending project, Sriram Narayan describes the alternative, product mode, as “durable, ideate-build-run teams working on a persistent business issue” instead of “temporary, build-only teams”, and lists its costs, such as lower staff utilisation and new silos.[34]
Measure, govern, pay
Link to section “Measure, govern, pay”Metrics and KPIs
Link to section “Metrics and KPIs”| KPI | Definition or formula | Data source | Pitfall | Cadence |
|---|---|---|---|---|
| CPI | EV / AC (cumulative and recent periods)[6] | EV from work packages; AC from ledger | Accruals missing make CPI look good | Each period |
| SPI(t) | ES / AT; forecast duration = planned duration / SPI(t)[10] | PV curve, EV | Cost-based SPI drifts to 1.0 on late projects | Each period |
| EAC range vs tolerance | Lowest and highest index-based EAC against BAC plus tolerance; the red rule uses BAC / CPI | Lab 2 | Reporting only the most pleasant EAC | Each period |
| EAC realism | TCPI to the reported EAC minus CPI; above 0.05 the EAC is “too optimistic” (GAO) | Lab 2 | Testing against BAC and calling a credible overrun red[6] | Each period |
| Finish-date confidence | Probability of meeting the committed date; P80 date | Lab 3 | Ranges guessed once, never updated | Monthly, and at gates |
| Schedule health | Open ends, unjustified hard constraints, very high float | Lab 1 checks | A clean check on a schedule nobody updates | Monthly |
| Decision latency | Working days from exception report to board decision | Change log | Decisions deferred “to the next board” | Per exception |
| Benefits realised | Measured benefit / benefit in the approved case | Sponsor, after closure | Measured by the team that wants credit | At benefits review |
Worked calculation (Lab 2, month 3). CPI 0.857; SPI(t) 0.833; EACs 640,000–805,000 against a 660,000 cost tolerance; forecast 7.2 months against 6.5 allowed; the reported 640,000 needs a TCPI of 1.000. Red by rule three months before the planned finish, while options are still cheap.
Leading and lagging. Logic quality, estimate ranges, overdue RAID items and decision latency lead; CPI, SPI(t) and milestones lag; GAO notes that “a negative schedule variance can be a predictor of later cost problems”.[6] Vanity measures: effort-based percent complete, reports produced, the share of green projects.
Quality, security, privacy and compliance
Link to section “Quality, security, privacy and compliance”- Quality is a baseline like the others: acceptance criteria per work package, agreed before work starts, and a quality tolerance where trade-offs are allowed.[9]
- Audit trail. Every baseline version must trace to a logged decision; keep baselines, change log and status history for the retention period your organisation or contract requires.
- Confidentiality. Project data holds commercial terms, supplier prices and personal data (timesheets, remarks in RAID entries). Limit write access, keep personal data out of shared logs and follow your data-protection rules.
- Regulated contexts. Public bodies and contractors may be bound by specific standards (GovS 002 in UK government; EVM for major US federal acquisitions);[23][6] check your jurisdiction and contract.
Cost, capacity and sustainability
Link to section “Cost, capacity and sustainability”Contingency and reserve. Hold contingency for known risks inside the baseline, sized by Lab 3, and a management reserve outside it that only the sponsor releases, through the change log. Capacity. Writing about short activities, GAO warns that “people are rarely, if ever, 100 percent productive” and puts a productive workday at roughly 60 to 80 percent of eight hours;[18] by extension, plans that load everyone at 100% are late by construction. Cost of control. Full EVM, schedule-risk runs and independent assurance cost real effort; spend it where the decision framework says so. Sustainability. PMBOK’s eighth edition makes “integrate sustainability” a principle, and PRINCE2’s seventh edition adds sustainability as a tolerance area, so environmental targets can be escalated like cost or time.[13][9]
Assurance of the operating model
Link to section “Assurance of the operating model”Assurance asks whether the control system tells the truth. Four checks: a monthly schedule health check (Lab 1 plus GAO’s ten best practices);[18] reconciliation of actual cost with the ledger; independent review at major gates by someone outside the reporting line; and comparing each forecast with what later happened (always beaten or always missed means bias). The UK’s split between self-reported and independent delivery-confidence ratings for GMPP projects is a public example of the third check.[20]
When things go wrong
Link to section “When things go wrong”Common failures and troubleshooting
Link to section “Common failures and troubleshooting”| Symptom | Likely cause | Diagnosis | Remediation | Prevention |
|---|---|---|---|---|
| Finish date never moves, then jumps | Dates typed in; logic missing | Lab 1 checks; count hard constraints | Re-link logic; replace constraints with dependencies | Monthly health check |
| “90% done” for weeks | Effort-based percent complete | Compare EV method with GAO’s accepted methods[6] | Weighted milestones or 0/100 for short packages | Agree EV method per work package at baseline |
| CPI fine, SPI(t) falling | Work started, not finished | Count open work packages and their age | Finish before starting | WIP limits (AgileOps) |
| Scope grows, baseline unchanged | Changes accepted informally | Compare delivered items with the WBS | Log retrospectively; re-baseline with board | Change log as the only route for scope |
| Status green, sponsor surprised | RAG by judgement | Compare recent reports with the forecasts behind them | RAG by rule; independent review | Written RAG rules |
| Supplier “on track” until it is not | Self-reported vendor status | Ask for tests passed, items delivered | Milestones tied to acceptance | Acceptance criteria in the contract |
Worked runbook: the watermelon project
Link to section “Worked runbook: the watermelon project”“Watermelon” status is green outside and red inside: the summary hides what the data says.
- Contain (day 0). Publish no further green report. Tell the sponsor in writing today that a breach is likely and options follow within two working days.
- Verify (days 0–1). Reconcile AC with the ledger; check how EV was claimed (effort-based percentages are the usual cause); run the logic checks; ask for remaining durations as ranges.
- Diagnose (days 1–2). Separate estimate error, unlogged scope growth, productivity (people shared with operations) and risk events; each has a different remedy.
- Options (day 2). Cost and date for at least three: re-plan within reserve; cut “could” scope; move the date; stop at the next gate. Run Lab 3 on each for a confidence level.
- Decide (within a week). The board chooses; the change log records the new baseline and tolerances.
- Prevent. Adopt written RAG rules, objective EV methods and a monthly independent check of the forecast; record what the six green reports were based on as a lesson with an owner. A lesson that causes no change has been identified, not learned, as PRINCE2’s “learn from experience” principle is summarised.[9]
Anti-patterns and myths
Link to section “Anti-patterns and myths”- “Adding people will recover the date.” Brooks’s law says adding people to a late software project makes it later (under certain conditions); Steve McConnell wrote in 1999 that he no longer thought it true as a general rule.[35] Add people early, to separable work, or not at all.
- “The plan is the commitment.” A single-point plan from most-likely durations is the optimistic end of the range (Lab 3). Commit to a percentile, not a point.
- “Agile projects do not need baselines.” One of budget, date or scope is still fixed for the sponsor; the others flex.
- “More process means more control.” Heavy templates on small projects produce reports, not decisions.
- “Red means failure.” NISTA notes that red ratings are not unusual early in a GMPP project’s life;[20] red with options is a working control system, while red discovered at the end is a failed one.
Deciding and adopting
Link to section “Deciding and adopting”When to use and when not to use
Link to section “When to use and when not to use”Use project control when the work has a definable end and result, a sponsor who owns the money, a deadline or budget that matters outside the team, and dependencies across teams or suppliers. Use it lightly (charter, linked plan, RAID log, fortnightly forecast) for small internal projects. Do not use a project frame for ongoing product development or operations with no end; fund a durable team and manage outcomes instead (ProductOps, AgileOps). Do not use full EVM where work cannot be budgeted per deliverable or actual costs cannot be collected per work package; the numbers will be invented. Hidden costs: someone must keep the logic current, and the sponsor must actually decide.
Decision framework
Link to section “Decision framework”Diagram source (Mermaid)
flowchart TB
Q1{"Definable end and result?"} -->|"no"| P["`Durable team:
ProductOps, AgileOps`"]
Q1 -->|"yes"| Q2{"`Requirements stable,
late change costly?`"}
Q2 -->|"yes"| PR["Predictive life cycle"]
Q2 -->|"partly"| HY["`Hybrid: predictive shell,
adaptive delivery`"]
Q2 -->|"no"| AD["`Adaptive inside
budget tolerance`"]
PR --> Q3{"Large, novel or high consequence?"}
HY --> Q3
AD --> Q3
Q3 -->|"no"| L["`Light control: charter,
linked plan, RAID`"]
Q3 -->|"yes"| F["`Full control: EVM, risk
analysis, assurance`"]
classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
class Q1,Q2,Q3 decision
class PR,HY,AD,L,F core
class P neutral
Text equivalent: Does the work have a definable end and result? If not, use a durable team (ProductOps, AgileOps). If so, are requirements stable and late change costly? Yes leads to a predictive life cycle, partly to a hybrid (predictive shell, adaptive delivery), no to adaptive delivery inside a budget tolerance. Then: is the project large, novel or high-consequence? If not, use light control (charter, linked plan, RAID log); if so, full control (earned value, schedule risk analysis, independent assurance).
Assumptions. The second question follows PMI: predictive when requirements are “well-defined and stable at the beginning”, adaptive when they are “subject to high level of uncertainty and volatility”, hybrid in between.[21] A common hybrid runs hard-dated parts (orders, cutover) predictively around adaptive software delivery. For “large” or “high consequence”, ask whether a 30% overrun would change what the organisation can do next year. Treat IT-heavy projects as riskier than their budget suggests: Flyvbjerg’s data show their cost overruns are fat-tailed.[5]
Maturity model
Link to section “Maturity model”This Atlas’s model, not an industry standard; assess one project or one PMO’s projects.
| Level | Observable behaviour | Evidence | Next step |
|---|---|---|---|
| 1 Ad hoc | Dates chosen first; status by opinion | No baseline versions; no change log | Charter, WBS and a linked plan for the next project |
| 2 Planned | Baselines exist but drift silently | Plan and tracker disagree | Change log as the only route for scope; monthly logic check |
| 3 Controlled | Tolerances, RAG rules, exception reports | Exceptions decided within days | Objective EV methods; forecast ranges |
| 4 Forecasting | EAC ranges, P80 dates, reference-class checks | Forecast error tracked over time | Independent assurance at gates |
| 5 Learning | Lessons change templates and estimates | Estimating data reused; bias falling | Feed portfolio decisions (PortfolioOps) |
Adoption roadmap: 30/60/90 days
Link to section “Adoption roadmap: 30/60/90 days”| Window | Actions | Measure of progress |
|---|---|---|
| Days 1–30 | Pick one live project. Write the control pack. Run Lab 1’s checks on its schedule; start one change log. | Every scope change since day 1 logged; no unjustified open ends |
| Days 31–60 | Agree EV methods per work package; produce the first EAC range; compute RAG by rule; run an exception drill with the sponsor. | Status computed from data; decision latency measured |
| Days 61–90 | Run a schedule risk analysis before the next gate; commit the next milestone at a percentile; check forecast history for bias; decide what to standardise. | Committed date carries a confidence; forecast bias known |
Toolkit
Link to section “Toolkit”Checklists
Link to section “Checklists”Initiation readiness
- Sponsor named, with authority over budget and scope
- Charter states outcome, constraints, tolerances and who decides what
- WBS covers all work, including handover, training and decommissioning
- Schedule logic-linked; constraints and lags justified in writing
- Estimates as ranges; deadline committed at a stated confidence
Each reporting period
- Actual cost reconciled with finance; EV claimed by the agreed method
- Forecasts refreshed; RAG computed from the written rules
- RAID items past their review date followed up
- Any forecast breach escalated within the agreed time
Closure
- Products accepted against criteria; open issues transferred to named owners
- Benefits owner named, with measures and review date
- Lessons recorded with an owner and the change they should cause
Templates
Link to section “Templates”Template status: plain-text forms; adapt the fields to your method.
PROJECT CHARTER (one page)
Project: Sponsor: Project manager:
Outcome and benefit: (what changes, for whom, how measured)
In scope / out of scope:
Baselines: budget ____ key milestones ____ version __
Tolerances: cost +__% / -__% time +__ days scope ______
Key risks and assumptions (top 5):
Decision rights: inside tolerance -> PM; outside -> board
Approved by / date:
EXCEPTION REPORT
Project / date / author:
Tolerance forecast to break: (area, baseline, forecast, tolerance)
Cause (estimate, scope, productivity, risk event):
Options (at least two, one may be "stop"):
Option | cost | finish (P50 / P80) | scope | risk | benefits
Recommendation and reason:
Decision needed by (date) and from (who):
CHANGE REQUEST
ID / raised by / date: Description:
Reason: Affected WBS elements:
Impact: cost ___ time ___ scope ___ risk ___ benefits ___
Decision level (per tolerance): PM / board
Decision / by / date / new baseline version:
Deep comparisons
Link to section “Deep comparisons”How the references in Methods, standards and frameworks differ in use (editorial judgement):
| PMBOK Guide (8th ed.) | PRINCE2 (7th ed.) | ISO 21502 | Agile Practice Guide (2nd ed.) | |
|---|---|---|---|---|
| Strongest at | Breadth of knowledge areas | Governance: stages, tolerances, roles | Short, neutral vocabulary | Choosing and running adaptive delivery |
| Weaker at | Prescribing one way to run a project | Detailed scheduling technique | Practical detail | Fixed-date, contractual control |
Neighbouring pages are compared in How ProjectOps relates to other Ops.
Is ProjectOps a job title or a certification? Neither is established. Related titles exist, such as “PMO operations manager”; the certifications are for project management (for example PMI’s and PRINCE2’s).
Do I need earned value on an agile project? Only if a sponsor needs cost-to-complete forecasts and you can budget accepted increments; otherwise a budget burn-up against accepted scope gives most of the signal.
What is the difference between float and buffer? Float is computed from the logic (Lab 1) and vanishes when a parallel path slips; a buffer is time you deliberately add, sized by risk analysis (Lab 3), owned and released.
Why does SPI say 1.0 on a project that finished late? Because cost-based SPI compares earned with planned value; at completion both equal the budget. Lipke notes “SV = 0.0 and SPI = 1.0 at the conclusion of a late project, falsely indicating perfect performance”; use SPI(t).[10]
When should a project be stopped? When the business case no longer holds at the forecast cost and benefits (PRINCE2’s “continued business justification”),[9] or when the outcome is better pursued another way. Stopping is an option in every exception report.
Going further
Link to section “Going further”Advanced topics and emerging direction
Link to section “Advanced topics and emerging direction”- Established but under-used: earned schedule for time forecasts;[10] reference class forecasting;[11] integrated cost-schedule risk analysis, which GAO compares with EVM-based EACs as a cross-check.[6]
- Active change (as of October 2026): PMBOK 8 reintroduces process guidance in a “non-prescriptive way”;[13] ISO 21502 is being revised;[12] Microsoft’s shift from Project Online to Planner premium and the Planner Agent.[15][31]
- Speculative: AI that predicts project failure. NISTA says its early-warning tool “has already proved helpful”;[20] no independent evaluation was found.
Learning path
Link to section “Learning path”| Stage | What to do |
|---|---|
| Prerequisites | Spreadsheets; percentages; reading a simple budget |
| 1-day primer | This page’s first three parts; run Lab 1; read GAO’s ten schedule best practices[18] |
| 1 week to 30 days | Labs 2 and 3; write a control pack and WBS for a real project; run it with written RAG rules, tracking forecast error |
| Specialise | Project controls (EVM, schedule risk); a method (PMBOK or PRINCE2); hybrid delivery with AgileOps; portfolio work in PortfolioOps |
| Portfolio project | An anonymised forecast-versus-actual history of a finished project, with lessons and resulting changes |
Wrap-up
Link to section “Wrap-up”Executive recap and cheat sheet
Link to section “Executive recap and cheat sheet”| Topic | Remember |
|---|---|
| Term | “ProjectOps” is a label, not a discipline; teach and hire for project management and project controls |
| Control system | Baselines, tolerances, forecasts, exceptions, change control |
| Schedule | Logic first; critical path and float from the network; commit at a percentile (P80 is a conservative promise date)[18] |
| Money | CPI, SPI(t), a range of EACs, a TCPI realism test of the reported EAC[6][10] |
| Status | RAG by written rule; independent review where stakes are high |
| Watch-outs | Typed dates, effort-based progress, silent scope change, single-point plans |
| When not to | Ongoing product work; tiny tasks; EVM without per-deliverable budgets |
A judgement call: crash the plan or buy time?
Link to section “A judgement call: crash the plan or buy time?”Option A: crash. Pay for the second crew to shorten C and keep day 60; it looks decisive. Option B: buy time. Take the extension, commit to the P80 day, and add the crew only if C still dominates the risk.
How to decide. Re-run Lab 3 with C as the crew proposal claims. Setting C to 13 days with a range of 12 to 20 in both files (executed 2026-10-23 with the same seed) lifts the chance of finishing by day 60 from about 1% to about 48%, with P80 at day 63. Crashing helps, but buys a coin flip on a costly, irreversible deadline, because the other critical activities keep their right-skewed ranges; and Brooks’s warning applies where work cannot be split cleanly.[35]
Assumptions and uncertainty. The ranges are invented; real ones come from the teams and a reference class.[11] Without the extension, A plus scope cuts (decommissioning after the date, if the contract allows) would be the remaining lever. A defensible choice: B, since the extension (about 21 working days) covers the P80 date; add the crew only if it costs less than the delay it removes. Record the decision and assumptions in the change log.
Learning objectives and mastery check
Link to section “Learning objectives and mastery check”After this page you should be able to: explain what the label does and does not mean; build a logic-linked schedule and find its critical path; calculate CPI, SPI(t), EAC ranges and TCPI; commit a date at a stated confidence; design tolerances and written RAG rules; and decide whether a project frame fits the work at all.
Your 66-day schedule has an activity that finishes on day 15 with no successor and 51 days of float. What do you suspect?
Missing logic. High float and an open end usually mean the activity’s output feeds nothing in the network; GAO notes that unreasonably high float “indicates that schedule logic might be missing or invalid”.[18] Link it (training feeds cutover) and rerun, unless the open end is a justified hand-off.
Month 4 of 8, schedule on plan, CPI 0.95; the project reports EAC = BAC, which needs a TCPI of 1.06. Red, amber or green?
Amber. GAO’s rule of thumb (TCPI more than 5 points above CPI) says the “on budget” EAC is too optimistic, so ask for a realistic one.[6] But BAC / CPI is about 5% over budget, inside a +10% tolerance: no tolerance breaks, so it is not red. Report the EAC range and escalate only if a forecast leaves the tolerance.
A sponsor asks for “the date”. The plan’s deterministic finish is day 60; P50 is 68 and P80 is 71. What do you say?
Give the date with its confidence: day 60 is unlikely (about 1% here); day 68 is a coin flip; day 71 is a conservative commitment. Then show which activities drive the spread (criticality index) and what would change it.
A team’s velocity doubled. Did earned value double?
Not necessarily. Velocity is output in the team’s own estimation units, which can inflate; earned value is the budget of accepted, in-scope work.
Six green reports, then a red one. What is the first process fix?
Compute status from written rules (EAC range against tolerance, SPI(t), EAC realism) and add periodic independent review. Fix the reporting system before blaming the individual.
Conclusion
Link to section “Conclusion”“ProjectOps” is a word in search of a discipline; the discipline it points to has existed since the critical path method. What makes it work is a small, honest control loop, summarised in the recap above: run it proportionately, thank whoever reports bad news first, and drop it where the work has no end.
Sources and further reading
Link to section “Sources and further reading”All sources were opened on 2026-10-23; pages refusing automated access were read from the Internet Archive captures cited.
Re-check by April 2027: ISO 21502 revision; EIA-748 revision; Planner and Planner Agent names and licences; Jira Plans tiers.
Further reading (not opened for this page): Brooks, The Mythical Man-Month; PMI, Practice Standard for Earned Value Management.
Changelog. 2026-10-23, r0: first draft (research, ledger, three labs executed, six diagrams); not yet independently reviewed.
2026-10-23, r1: revised after independent review projectops-r1: RAG rule uses GAO’s TCPI test for EAC realism (amber), not
for red; PRINCE2 wording attributed to Wikipedia’s summary; Planner critical path, Planner Agent, EIA-748-E and GovS 002
mandate updated with new sources; stakeholder management and triple constraint added; GMPP scope; lab guards; trimmed.
2026-10-23, r2: after scoring projectops-score (91): WBS example with the 100% rule; resource levelling (GAO) and a Lab 1
levelling run; full GMPP criteria; right-skew wording; sample RAID and stakeholder rows; second Planner Agent source; trims.
2026-10-23, post-score polish: OpenProject baseline tier; WBS level of effort split from activity A; manual underspend check;
GAO productivity context; trims.
Optimize your project-centric business with Dynamics 365 Project Operations — Microsoft Dynamics 365 Blog, 2020-09-23. Checked 2026-10-23. ↩︎ ↩︎
Dynamics 365 Project Operations — Microsoft Learn, updated 2026-09-18. Checked 2026-10-23. ↩︎ ↩︎
ProjectOps (HubSpot App Marketplace listing) — Atlantic Ops, current listing. Checked 2026-10-23. ↩︎
What You Should Know About Megaprojects, and Why: An Overview — Bent Flyvbjerg, Project Management Journal, 2014 (arXiv). Checked 2026-10-23. ↩︎
The Empirical Reality of IT Project Cost Overruns: Discovering A Power-Law Distribution — Flyvbjerg, Budzier, Lee, Keil, Lunn, Bester; Journal of Management Information Systems 39(3), 2022 (arXiv). Checked 2026-10-23. ↩︎ ↩︎
Cost Estimating and Assessment Guide (GAO-20-195G) — US Government Accountability Office, March 2020 (Internet Archive copy). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Keeping Mum as the Project Goes Under: Toward an Explanatory Model — H. Jeff Smith, Mark Keil, Gordon Depledge, Journal of Management Information Systems 18(2), 2001 (abstract). Checked 2026-10-23. ↩︎
Critical path method — Wikipedia, current revision. Checked 2026-10-23. ↩︎
PRINCE2 — Wikipedia, current revision (secondary source for the method’s structure). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Earned Schedule: Schedule Analysis from EVM Measures — Walt Lipke, Project Landscape, July 2008. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
From Nobel Prize to Project Management: Getting Risks Right — Bent Flyvbjerg, Project Management Journal 37(3), August 2006 (arXiv). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎
ISO 21502:2020 Project, programme and portfolio management — Guidance on project management — ISO (Internet Archive capture of 2026-10-05). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎
PMBOK Guide — Project Management Institute, Eighth Edition published November 2025 (Internet Archive capture of 2026-10-01). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Agile Practice Guide — Project Management Institute with Agile Alliance, Second Edition, July 2026 (Internet Archive capture of 2026-10-01). Checked 2026-10-23. ↩︎ ↩︎
Microsoft Project Online is retiring: What you need to know — Microsoft Planner Blog, 2025-09-05. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
What is Project Management? — Project Management Institute (Internet Archive capture of 2024-04-25). Checked 2026-10-23. ↩︎
The project triangle — Microsoft Support, undated. Checked 2026-10-23. ↩︎
GAO Schedule Assessment Guide: Best Practices for Project Schedules (GAO-16-89G) — US Government Accountability Office, December 2015 (Internet Archive copy). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
NASA Work Breakdown Structure (WBS) Handbook (NASA/SP-20210023927) — NASA, November 2021. Checked 2026-10-23. ↩︎ ↩︎ ↩︎
NISTA Major Projects Annual Report 2025-26 — National Infrastructure and Service Transformation Authority, GOV.UK, 2026-07-13. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
What Is Project Management? — Project Management Institute (Internet Archive capture of 2026-10-12). Checked 2026-10-23. ↩︎ ↩︎
SAE EIA 748E:2026-02-16 Earned Value Management Systems — DIN Media catalogue listing (status “current”). Checked 2026-10-23. ↩︎
Government Functional Standard GovS 002: Project Delivery — Government Project Delivery and Cabinet Office, GOV.UK, version 2.1, updated 2025-09-17. Checked 2026-10-23. ↩︎ ↩︎
Government Functional Standard GovS 002: Project delivery — Government Project Delivery Function library, version 2.1, 2025-09-01. Checked 2026-10-23. ↩︎ ↩︎
Show slack in your project in Project desktop — Microsoft Support, undated. Checked 2026-10-23. ↩︎
Manage your project’s critical path — Microsoft Support, undated. Checked 2026-10-23. ↩︎
Advanced capabilities with premium plans in Planner — Microsoft Support, undated. Checked 2026-10-23. ↩︎
What are plans in Jira Premium? — Atlassian Support, current page. Checked 2026-10-23. ↩︎
Gantt charts — OpenProject documentation, current page. Checked 2026-10-23. ↩︎
Baseline comparison — OpenProject documentation, current page. Checked 2026-10-23. ↩︎
Access Planner Agent — Microsoft Support, undated. Checked 2026-10-23. ↩︎ ↩︎
MC1250279 – Microsoft 365 Copilot: Planner Agent rename and rollout to premium and basic plans — third-party archive of a Microsoft 365 Message Center post, last updated 2026-05-15. Checked 2026-10-23. ↩︎
Planner Agent Delivers AI Help for Tasks — Tony Redmond, Office 365 for IT Pros, 2026-03-19 (independent report of MC1250279). Checked 2026-10-23. ↩︎
Products Over Projects — Sriram Narayan, martinfowler.com, first published 2017-11-16, revised 2018-02-20. Checked 2026-10-23. ↩︎
Brooks’s law — Wikipedia, current revision (summarises Brooks 1975 and McConnell 1999). Checked 2026-10-23. ↩︎ ↩︎