Technical Program Management Plan
Six documents and four sheets, including a dependency register that carries the giving team's date and the receiving team's last usable date on every handoff.
Free download · No account needed
Dependency Register, one row
D-NN. What one team hands another, named as a thing that arrives
Giver Date
The date the producing team says it lands, in their own words, from their own plan.
Receiver Need By
The last date the consuming team can take it and still hold their own commitment.
Handoff Float Working days between the two, derived rather than typed. Zero or below is a programme problem on the day the row is written.
Last Confirmed / Confirmed By The day the giver last said this date in writing, after the current plan was drawn, and who said it.
Shock Result What moved when this date was pushed out fifteen working days. Propagates, absorbed by float, no link, or pinned.
Status
Confirmed, unconfirmed, at risk, or broken. Four values, no colours, and broken is arithmetic: the giver date has passed the need-by.
Notes
What the receiving team does on the first morning the input has not arrived.
A cross-team handoff has two dates, and almost every register records one. The producing team's date is not the consuming team's deadline, and the working days between them are the only float that handoff has. Every row in this pack carries both, with the float derived rather than typed in. The US Department of Energy's guidance on reviewing a programme schedule asks reviewers the same question directly: was there an agreement between the sender and the receiver on the date of this handoff.
The worked example follows one row at Marchmont Logistics, a freight firm moving customs declarations onto a new broker interface before the old one is switched off on 26 February 2027. The credential store handoff read green in eight consecutive weekly updates. Its confirmation was 69 days old, and the real date turned out to be 20 working days later. Five sat inside the handoff float. The other 15 moved the programme finish from 5 February to 26 February, which was the whole buffer.
Then the register gets shock tested: each giver date pushed out 15 working days, one at a time, with whatever moves downstream recorded. At Marchmont, 14 of 23 handoffs moved nothing. Six were genuine float. Five had no join between the two teams' plans and three were pinned behind fixed dates, so eight slips would have landed nowhere and been absorbed in silence. What the register finds feeds the engineering status update the same week.
What is in the pack
Dependency Register
One row per handoff with the giver's date, the receiver's need-by, the float derived between them, and the day it was last confirmed.
Milestone Interlock
One row per milestone, rolling up the handoffs that feed it: how many are confirmed, the worst float among them, and the oldest confirmation.
Critical Path
The chain from today to the finish, each step carrying its duration and the working days left against the one date nobody can move. Whether that finish is actually safe to ship is a separate question the launch readiness review answers, not this register.
Risk Register
Everything that will not resolve into a dated commitment, each row with a named decision, a fallback, and the day after which choosing stops helping. A risk that needs its own checkable indicator rather than a line in this programme's register belongs in the dedicated technical risk register.
Dependency Standard
How a handoff gets recorded here: the two dates, the two named people, the four status values, and what is a request rather than a dependency.
Running the Shock Test
The twenty minute exercise that separates a dependency register from a dependency plan, with what each of the four results means and who fixes it.
Escalation Path
The four options two leads have before anything goes up, written before it happens, so it is about a date rather than about the people. A team's pattern of slipping commitments is a separate, ongoing conversation, not something this path re-litigates per handoff.
Status Format
A weekly page written as a diff against last week's, leading with what moved and ending with the handoffs nobody has data on.
How it works
- 1
Open it in River, or download it
Edit with AI installs the pack as a private Space with the agent primed to fill it in. Download gives you the same documents as Word files and the sheets as CSV, with no account.
- 2
Send the plans and the threads
Team plans, roadmap exports, design docs and the conversations where two engineers agreed a date. The threads usually hold more real dependencies than the documents do.
- 3
Get both dates on every handoff
River asks the producing and consuming teams separately, derives the float, and records when each date was last confirmed and by whom. Four counts come back before any commentary.
- 4
Shock test before you trust it
Every giver date gets pushed out in turn and what moves is recorded, so the handoffs written down but joined to nothing are found before a slip finds them for you.
Frequently asked questions
Is this template free?
Yes. The zip is Word documents and CSV sheets, and it needs no account and no card. Edit with AI is the optional half: the agent reads the plans you already have, builds the register, and runs the shock test. The rest of the template library works the same way.
What format are the downloaded files?
The six documents come as .docx and the four sheets as .csv, so nothing needs converting. Word, Pages, Google Docs, Excel, Numbers and Sheets all open them directly. The register, interlock, critical path and risk sheets arrive with the worked example already in them.
What does Edit with AI actually do?
It reads whatever you send and writes one row per cross-team handoff, with both dates and both named owners. Then it shock tests the register and reports four counts: total handoffs, how many carry both dates, how many were confirmed this cycle, and how many sit at zero float today.
Why does every handoff need two dates?
Because the gap between them is the only float that handoff has, and a single Due Date column has already averaged the producer's date and the consumer's deadline into one number. Afterwards nobody reading the row can tell which team it came from or how much room is left.
What does a pinned shock result mean?
The successor holds its date however late its input arrives, because it is anchored to a calendar date. Microsoft documents that inflexible constraints override task dependencies, and Oracle is blunter: the system lets you record the dependency and then does not enforce it.
Does this replace the weekly exec update?
No. This pack runs the programme and holds the handoffs between teams, and the engineering status update is the reporting surface above it, reporting variance against the dates this register keeps. An incident postmortem covers the outage that is not a missed handoff.
Where do the design decisions themselves live?
Not here. A programme space holds dates and owners, so the argument that produced a date belongs in an RFC and design doc register and the settled outcome in an architecture decision record. What this register keeps is the handoff those decisions created, and the day somebody last confirmed it.