Portfolio Roadmap
tasleemat asset PMO-00.01 template --lang en
Deliverable Summary & Governance Boundaries
Lifecycle Phase Alignment
Phase 00: Program and Portfolio Management
Sizing Tier Requirements
Tier 1
Validation Contract
This deliverable conforms to a strict companion Draft 2020-12 JSON Schema for automated structural and semantic validation.
tasleemat validate PMO-00.01 ./completed_data.json
Template Markdown (Bilingual)
<!--
LLM INSTRUCTIONS: Fill in the [ Add details... ] placeholders based on project context.
A portfolio roadmap is a time-phased, visual representation of the programs,
projects, and operations in a portfolio, showing their sequence, expected
outcomes, and the dependencies between them. Its purpose is to communicate
strategy and to let decision-makers see the consequence of a change before the
change is made, rather than discovering it a quarter later when funding has
already been committed.
The intent behind carrying dependencies, funding, and capacity as separate
sections is that a roadmap listing only initiatives and dates is a calendar, not
a plan. It looks complete while telling the reader nothing about what will
happen if one initiative runs late.
Alignment: the portfolio roadmap should be aligned and consistent with the
following documents: Program charter, Business case, Portfolio management plan,
Resource capacity matrix.
Writing guidance:
* Give every initiative a stable identifier. A roadmap reviewed over several
cycles is unreadable if an initiative is referred to by a different name
each time it appears, and the reader cannot tell whether two rows are the
same initiative or two of them.
* Write dates at the precision the decision actually needs. An annual
portfolio may legitimately be planned by quarter; a release with a fixed
commercial date may not. Mixed precision in one table is the thing to
avoid, because the reader compares the rows against each other.
* Record the status as a value from a fixed set such as Proposed, Funded,
In Progress, On Hold, or Complete. A free-text status cannot be sorted or
filtered, and a roadmap that cannot be filtered is a picture.
* Record funding as a planned envelope rather than a spend forecast. The
roadmap answers whether the money is available in the period, not whether it
is being spent, and the two are routinely confused.
* Where an initiative is dependent on another, name the predecessor in the
dependency section rather than in a free-text note. A dependency recorded
only in prose is a dependency nobody can query.
Tailoring Notes:
* A programme-level portfolio roadmap may aggregate to programmes only, and
the initiative rows may be several levels down where a division plans its
own portfolio.
* The roadmap may be presented graphically rather than as a table. The
sections below carry the same content in either form, and the form should
say which presentation is expected.
* Add or remove rows as needed. If an initiative carries more detail than the
roadmap can hold, link to its charter or business case rather than
compressing it here.
* Where the organisation runs a fixed planning cycle, record the cycle in the
context section and reuse it, so that successive roadmaps are comparable.
Column guidance, by column:
Initiative rows:
* **ID:** The stable identifier for the initiative, used by every later cycle
of this roadmap and by the dependency and funding sections.
* **Initiative Name:** The name of the program, project, or operation. Use the
name from its charter so the same initiative is not tracked under two.
* **Type:** Whether the row is a Program, Project, or Operation. The type
determines what governance applies, so an initiative recorded without one
has no defined approval path.
* **Strategic Objective:** The specific objective this initiative serves, named
from the strategy rather than from the initiative's own charter. An
initiative that maps to no objective is a candidate for removal, and the
roadmap is where that is visible.
* **Start:** When the initiative is expected to start.
* **End:** When the initiative is expected to deliver its outcomes, which is
not the same as when its budget is spent.
* **Budget:** The funding envelope allocated to the initiative for the
planning period.
* **Status:** Where the initiative currently stands against the fixed set
used in this roadmap.
Dependency rows:
* **ID:** The identifier of the initiative whose dependency is being recorded.
* **Dependent Initiative:** The initiative that cannot proceed without the
predecessor.
* **Dependency Type:** Whether the dependency is Finish to Start, Start to
Start, Finish to Finish, or Start to Finish. The type determines the amount
of float the successor has, so an untyped dependency cannot be planned.
* **Predecessor:** The initiative on which this one depends.
* **Required By:** The date by which the dependency must be satisfied for the
dependent initiative to hold its own date.
* **Impact if Late:** What happens to the dependent initiative if the
predecessor does not deliver in time.
Funding and capacity rows:
* **Period:** The planning period the row covers.
* **Planned Funding:** The money available in the period across the portfolio.
* **Planned Capacity:** The resource capacity available in the period, in the
unit the organisation uses.
* **Committed Load:** The capacity already committed to initiatives in the
period.
* **Available:** The difference between planned and committed, which is the
figure that tells the reader whether the plan is feasible.
* **Notes:** Anything that changes the interpretation of the row, such as a
known shortage or a hiring assumption the row depends on.
Assumption and constraint rows:
* **ID:** The identifier for the assumption or constraint.
* **Type:** Whether the row is an Assumption or a Constraint.
* **Description:** What is being assumed or constrained.
* **Impact on Roadmap:** The effect on the roadmap if this proves false or
proves tighter than stated.
* **Owner:** Who is responsible for confirming or managing it.
* **Review Date:** When it will next be checked, because an assumption nobody
revisits is indistinguishable from a fact.
Roadmap change rows:
* **Change ID:** The identifier for the change.
* **Description:** What changed in the roadmap.
* **Reason:** Why it changed, which is what the next reader needs in order to
judge whether the same reasoning applies again.
* **Affected Initiatives:** The initiatives the change touches.
* **Approved By:** Who authorised the change.
* **Date:** When the change was approved, which fixes the version of the
roadmap in which it took effect.
-->
<h3 dir="ltr" align="right">{{Company_Name}}</h3>
<h2 dir="ltr" align="right">{{Portfolio_Name}} - {{Portfolio_ID}}</h2>
<h1 dir="ltr" align="center">PORTFOLIO ROADMAP</h1>
| **Date Prepared:** {{Current_Date}} | **Portfolio Director:** {{Portfolio_Director_Name}} | **Prepared By:** {{Prepared_By}} |
| :--- | :--- | :--- |
---
## 1. Portfolio Context and Planning Basis
<!-- What this portfolio covers, over what period, and how often the roadmap is
refreshed. Record the planning cycle here rather than in a note, because
successive roadmaps are only comparable if they were built on the same basis.
Record the roadmap status as a version statement: which planning cycle this
represents and which meeting approved it. Without that, two roadmaps differing
by a few initiatives cannot be read as a change of direction rather than as two
views of the same portfolio. -->
**Portfolio Purpose and Scope:** [ Add details... ]
**Planning Period:** [ Add details... ]
**Roadmap Horizon:** [ Add details... ]
**Portfolio Owner:** [ Add details... ]
**Planning Cycle:** [ Add details... ]
**Roadmap Version and Status:** [ Add details... ]
---
## 2. Roadmap Initiatives
<!-- One row per program, project, or operation, ordered by start date. Use the
names from each initiative's charter so the same initiative is not tracked
under two names across cycles. Record the status from the fixed set agreed for
this roadmap, because a free-text status cannot be filtered, and a roadmap that
cannot be filtered is a picture rather than a plan. Where an initiative serves
no strategic objective, leave that cell saying so explicitly rather than
leaving it blank, since the blank is indistinguishable from an oversight. Add
or remove rows as needed. -->
| ID | Initiative Name | Type | Strategic Objective | Start | End | Budget | Status |
| :---: | :--- | :--- | :--- | :---: | :---: | ---: | :---: |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
---
## 3. Dependencies and Sequencing
<!-- Where one initiative cannot proceed until another delivers, record it here
with a typed dependency rather than in a free-text note, because a dependency
recorded only in prose is a dependency nobody can query. Finish to Start is
the common case; Start to Start and Finish to Finish arise where two
initiatives must move together. State the impact of a late predecessor in
money, schedule, or both, since a dependency with no stated impact is not
actionable when the predecessor slips. -->
| ID | Dependent Initiative | Dependency Type | Predecessor | Required By | Impact if Late |
| :---: | :--- | :--- | :--- | :--- | :--- |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
---
## 4. Funding and Capacity by Period
<!-- Whether the plan is feasible, not merely what is planned. The Available
column is the one that matters: it is planned funding or capacity less what is
already committed, and a roadmap where that figure is negative in some period
is a roadmap that will be broken in that period. Record assumptions the row
depends on, such as a hiring date or a funding decision that has not yet been
taken, because a capacity row without them reads as a commitment. Add or remove
rows as needed. -->
| Period | Planned Funding | Planned Capacity | Committed Load | Available | Notes |
| :---: | ---: | ---: | ---: | ---: | :--- |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
---
## 5. Assumptions and Constraints
<!-- What the roadmap takes for granted, and what limits it. An assumption
without an owner and a review date is indistinguishable from a fact, and the
roadmap then carries it forward indefinitely after the conditions that made it
true have gone. Record constraints with the same seriousness, since a
constraint recorded without its impact cannot be traded off against anything.
Add or remove rows as needed. -->
| ID | Type | Description | Impact on Roadmap | Owner | Review Date |
| :---: | :--- | :--- | :--- | :--- | :---: |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
---
## 6. Roadmap Changes
<!-- What changed between this version of the roadmap and the last, and why. A
reader comparing two roadmaps needs the reason as much as the change, because
the reason is what tells them whether the same reasoning applies to the next
change. Record the approver, since a roadmap altered without one is a roadmap
nobody owns. Add or remove rows as needed. -->
| Change ID | Description | Reason | Affected Initiatives | Approved By | Date |
| :---: | :--- | :--- | :--- | :--- | :---: |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
| [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] | [ Add details... ] |
---
## 7. Sign-off and Approvals
| Role | Name | Signature | Date |
| :--- | :--- | :---: | :---: |
| **Portfolio Manager** | {{Portfolio_Manager_Name}} | _______________________ | [ .... - .... - .... ] |
| **Head of PMO** | {{PMO_Lead_Name}} | _______________________ | [ .... - .... - .... ] |
| **Executive Sponsor** | {{Executive_Sponsor_Name}} | _______________________ | [ .... - .... - .... ] |
---
<div dir="ltr" align="right" style="margin-top: 20px; font-size: 12px; color: #7f8c8d;">
<span>Electronic Audit Trail: Hash SHA256: {{Audit_Trail_SHA256_Hash}}</span> <br>
<strong>Template:</strong> Portfolio Roadmap | <strong>Ref:</strong> PMO-00.01 <br>
<i>Generated on: {{Current_Timestamp}}, by <a href="https://github.com/fakhruldeen/Tasleemat/" style="color: #7f8c8d;">Tasleemat</a></i>
</div>
User Guide & Practitioner Instructions
Tasleemat Forms Guide
Project Artifact: Portfolio Roadmap
Document Reference: PMO-00.01
This document provides a comprehensive, professional reference to understand the purpose and effective usage of the Portfolio Roadmap in alignment with the Tasleemat framework.
1. What?
A formal Tasleemat-aligned project document known as the Portfolio Roadmap, a time-phased, visual representation of the programs, projects, and operations in a portfolio, showing their sequence, expected outcomes, and the dependencies between them.
It records the basis on which the portfolio is planned, the initiatives themselves with their type, strategic objective, dates, budget and status, the dependencies between them, whether the funding and capacity behind the plan is actually available, the assumptions and constraints the plan rests on, and what changed between this version of the roadmap and the last.
2. Why?
Because a roadmap listing only initiatives and dates is a calendar rather than a plan. It looks complete while telling the reader nothing about what will happen if one initiative runs late, and the funding and capacity section is where that becomes visible. Without a version and a change log, two roadmaps differing by a few initiatives cannot be read as a change of direction rather than as two views of the same portfolio.
3. When?
This artifact is prepared at the PROGRAM AND PORTFOLIO MANAGEMENT Process Group, and refreshed on the planning cycle recorded in the context section, typically at the start of each financial period or ahead of each investment review.
4. Who?
Responsibilities: Owned by the Portfolio Manager and prepared with the portfolio's initiative owners. Approved by the governance forum that holds the funding, typically the investment board, and signed by the sponsor and the finance business partner who can confirm the funding rows are real.
Tailoring Tips
- A programme-level portfolio roadmap may aggregate to programmes only, and the initiative rows may be several levels down where a division plans its own portfolio.
- The roadmap may be presented graphically rather than as a table. The sections below carry the same content in either form, and the form should say which presentation is expected.
- Add or remove rows as needed. If an initiative carries more detail than the roadmap can hold, link to its charter or business case rather than compressing it here.
- Where the organisation runs a fixed planning cycle, record the cycle in the context section and reuse it, so that successive roadmaps are comparable.
- The funding section may be omitted where the roadmap is purely sequencing-focused, but the form should say so explicitly rather than leaving the reader to assume funding was considered.
Alignment & Dependencies
1. Pre-requisites & Inputs (Upstream Dependencies)
- Mandatory:
- Enterprise Strategic Plan
- Portfolio Capital Budget & Allocations
- Optional / Contextual:
- Program Charters (PMO-00.02)
- Interdependency Register (PMO-00.03)
- Resource Capacity Matrix (PMO-00.04)
2. Downstream Dependents
- Mandatory:
- Program Charters (PMO-00.02)
- Project Charters (PMO-03.01)
- Portfolio Capacity Allocations
- Optional / Contextual:
- Business Cases (PMO-01.01)
- AI Readiness Assessment (PMO-02.03)
5. How?
To accurately and professionally complete the PORTFOLIO ROADMAP, the
responsible party must populate the following sections based on the project
context (ensure parameters.md is referenced for global project variables):
- Portfolio Purpose and Scope: What this portfolio covers and what it deliberately excludes, in the terms the strategy uses. A roadmap that does not state its boundaries cannot be read against a strategy that is wider than the portfolio, and the gap is mistaken for missing initiatives.
- Planning Period: The period the roadmap plans for, and whether it is a financial year, a rolling three years, or a fixed cycle agreed elsewhere. Successive roadmaps are only comparable if this is the same each time.
- Roadmap Horizon: How far ahead the roadmap looks. Record the horizon even where it equals the planning period, because the two are frequently confused and the confusion shows up later as a gap between what was planned and what was expected.
- Portfolio Owner: The single role accountable for the portfolio as a whole, which is usually not the owner of any one initiative in it. Where this is left blank, the roadmap has an author but no owner, and reprioritisation becomes nobody's decision.
- Planning Cycle: How often the roadmap is refreshed and by what governance forum, such as a quarterly investment board. The cycle is what makes two versions of the roadmap comparable, and a roadmap refreshed on no cycle is a document nobody can diff.
- Roadmap Version and Status: Which planning cycle this represents, its version number, and whether it is draft or approved. Without a version, two roadmaps differing by a few initiatives cannot be read as a change of direction rather than as two views of the same portfolio.
- ID: The stable identifier for the initiative, used by every later cycle of this roadmap and by the dependency and funding sections. A roadmap reviewed across several cycles is unreadable if an initiative is named differently each time, because the reader cannot tell whether two rows are one initiative or two.
- Initiative Name: The name of the program, project, or operation, taken from its charter so the same initiative is not tracked under two names. Where a name has changed, record the former name rather than replacing it, or the history becomes impossible to follow.
- Type: Whether the row is a Program, Project, or Operation. The type determines what governance applies, so an initiative recorded without one has no defined approval path, and the roadmap cannot answer what kind of decision is needed about it.
- Strategic Objective: The specific objective this initiative serves, named from the strategy rather than from the initiative's own charter. An initiative that maps to no objective is a candidate for removal, and the roadmap is the only place that becomes visible; where the mapping is genuinely absent, say so in the cell rather than leaving it blank.
- Start: When the initiative is expected to start, at the precision this table uses throughout. Mixed precision within one table is the thing to avoid, because the reader compares the rows against each other and a month beside a quarter invites a wrong conclusion.
- End: When the initiative is expected to deliver its outcomes, which is not the same as when its budget is spent. An initiative that delivers early and closes its accounts later is normal, and recording the accounts date as the end date moves every dependent initiative on the roadmap.
- Budget: The funding envelope allocated to the initiative for the planning period, not a spend forecast. The roadmap answers whether the money is available in the period, not whether it is being spent, and the two are routinely confused when the figure is taken from a finance system.
- Status: Where the initiative currently stands against the fixed set agreed for this roadmap, such as Proposed, Funded, In Progress, On Hold, or Complete. A free-text status cannot be sorted or filtered, and a roadmap that cannot be filtered is a picture rather than a plan.
- ID: The identifier of the initiative whose dependency is being recorded, matching the ID used in the initiatives section so the row can be joined to it.
- Dependent Initiative: The initiative that cannot proceed, or cannot proceed on its own dates, without the predecessor. Name it rather than describing it, because a dependency stated in terms of a category rather than a named initiative cannot be actioned when it is threatened.
- Dependency Type: Whether the dependency is Finish to Start, Start to Start, Finish to Finish, or Start to Finish. The type determines how much float the successor has, so an untyped dependency cannot be planned; Finish to Start is the common case and the others arise where two initiatives must move together.
- Predecessor: The initiative on which this one depends, named and identified. A dependency recorded only in prose is a dependency nobody can query, and it is therefore a dependency that will not be checked before the predecessor slips.
- Required By: The date by which the dependency must be satisfied for the dependent initiative to hold its own dates. Where the required date is later than the predecessor's planned finish, the gap is the risk and should be visible here rather than discovered later.
- Impact if Late: What happens to the dependent initiative if the predecessor does not deliver in time, in money, schedule, or scope terms. A dependency with no stated impact is not actionable when the predecessor slips, because nobody knows whether to escalate, re-sequence, or absorb the delay.
- Period: The planning period the row covers, using the same periods as the planning basis section so the two can be read together. Where a quarter appears in one table and a month in another, the reader has to reconcile them before drawing any conclusion.
- Planned Funding: The money available in the period across the whole portfolio, from the approved budget rather than from requests. The roadmap's purpose is to test the plan against what is actually available, so a figure taken from requests tests nothing.
- Planned Capacity: The resource capacity available in the period, in the unit the organisation uses, whether that is person-days, FTEs, or machine hours. The unit matters because a capacity row expressed in a different unit from the rest of the roadmap cannot be added up with anything else.
- Committed Load: The capacity already committed to initiatives in the period, including work that will not finish inside it. Excluding the part that spills into the next period is the most common way a capacity table overstates what is free.
- Available: The difference between planned and committed. This is the column that tells the reader whether the plan is feasible; a roadmap where this figure is negative in some period is a roadmap that will break in that period, and the shortfall is visible here or nowhere.
- Notes: Anything that changes how the row should be read, such as a known shortage, a hiring assumption the row depends on, or a funding decision not yet taken. A capacity row without its assumptions reads as a commitment, and the reader treats it as one.
- ID: The identifier for the assumption or constraint, so it can be referred to from the change log and from the initiative rows that depend on it.
- Type: Whether the row is an Assumption or a Constraint. An assumption may prove false and be replaced; a constraint may not be replaced at all, only planned around, and recording both under one heading loses that distinction exactly where it matters.
- Description: What is being assumed, or what is limiting the portfolio. State it as a testable statement rather than a sentiment, since an assumption phrased as a hope cannot be shown to have failed.
- Impact on Roadmap: The effect on the roadmap if this proves false, or proves tighter than stated. An assumption recorded without its impact cannot be prioritised for testing, because nothing distinguishes the consequential ones from the trivial.
- Owner: Who is responsible for confirming or managing it. An assumption with no owner is not being watched, and the roadmap carries it forward indefinitely after the conditions that made it true have gone.
- Review Date: When the assumption will next be checked. This is what separates an assumption from a fact in practice: an assumption nobody revisits is indistinguishable from a fact, and it stops being questioned precisely when it should be.
- Change ID: The identifier for the change, used to link it to the decision record and to the meeting that authorised it.
- Description: What changed in the roadmap, stated concretely enough to be diffed against the previous version. A change described only as a realignment cannot be checked to see whether it actually happened.
- Reason: Why it changed. A reader comparing two roadmaps needs the reason as much as the change itself, because the reason is what tells them whether the same reasoning applies to the next change or whether the reasoning has been overtaken.
- Affected Initiatives: The initiatives the change touches, by identifier where possible. This is what allows the reader to see whether a change described as minor has in fact moved a committed date.
- Approved By: Who authorised the change. A roadmap altered without an approver is a roadmap nobody owns, and the next alteration is as likely to be an error as a decision.
- Date: When the change was approved, which fixes the version of the roadmap in which it took effect and lets the change log be read in order.
📥 Associated Templates
- 📄 Printable Template (Markdown)
- 🤖 LLM Generation Prompt
- 📊 Data Structure (JSON)
- 📈 Tabular Data (CSV)
6. Reference Example
A fully completed, gold-standard reference example illustrating this artifact in practice is available:
📖 Completed Example: 00_01_Portfolio_Roadmap_Example.md
LLM Generation Prompt & Agent Instructions
PORTFOLIO ROADMAP - LLM GENERATION GUIDE
System Prompt / Instructions: This document serves as the detailed instruction set for generating the
PORTFOLIO ROADMAP. When asked to populate this form, use the guidance provided for each section below to accurately generate the required content. Referenceparameters.mdfor global project variables.Context & Definition: A portfolio roadmap is a time-phased, visual representation of the programs, projects, and operations in a portfolio, showing their sequence, expected outcomes, and the dependencies between them. Its purpose is to communicate strategy and to let decision-makers see the consequence of a change before the change is made, rather than discovering it a quarter later when funding has already been committed.
Alignment: This portfolio roadmap must be consistent with: Program charter, Business case, Portfolio management plan, Resource capacity matrix.
Portfolio Context and Planning Basis
Portfolio Purpose and Scope
Instruction: What this portfolio covers and what it deliberately excludes, in the terms the strategy uses. A roadmap that does not state its boundaries cannot be read against a strategy that is wider than the portfolio, and the gap is mistaken for missing initiatives.
Generated value: [ Add details... ]
Planning Period
Instruction: The period the roadmap plans for, and whether it is a financial year, a rolling three years, or a fixed cycle agreed elsewhere. Successive roadmaps are only comparable if this is the same each time.
Generated value: [ Add details... ]
Roadmap Horizon
Instruction: How far ahead the roadmap looks. Record the horizon even where it equals the planning period, because the two are frequently confused and the confusion shows up later as a gap between what was planned and what was expected.
Generated value: [ Add details... ]
Portfolio Owner
Instruction: The single role accountable for the portfolio as a whole, which is usually not the owner of any one initiative in it. Where this is left blank, the roadmap has an author but no owner, and reprioritisation becomes nobody's decision.
Generated value: [ Add details... ]
Planning Cycle
Instruction: How often the roadmap is refreshed and by what governance forum, such as a quarterly investment board. The cycle is what makes two versions of the roadmap comparable, and a roadmap refreshed on no cycle is a document nobody can diff.
Generated value: [ Add details... ]
Roadmap Version and Status
Instruction: Which planning cycle this represents, its version number, and whether it is draft or approved. Without a version, two roadmaps differing by a few initiatives cannot be read as a change of direction rather than as two views of the same portfolio.
Generated value: [ Add details... ]
Roadmap Initiatives
ID
Instruction: The stable identifier for the initiative, used by every later cycle of this roadmap and by the dependency and funding sections. A roadmap reviewed across several cycles is unreadable if an initiative is named differently each time, because the reader cannot tell whether two rows are one initiative or two.
Generated value: [ Add details... ]
Initiative Name
Instruction: The name of the program, project, or operation, taken from its charter so the same initiative is not tracked under two names. Where a name has changed, record the former name rather than replacing it, or the history becomes impossible to follow.
Generated value: [ Add details... ]
Type
Instruction: Whether the row is a Program, Project, or Operation. The type determines what governance applies, so an initiative recorded without one has no defined approval path, and the roadmap cannot answer what kind of decision is needed about it.
Generated value: [ Add details... ]
Strategic Objective
Instruction: The specific objective this initiative serves, named from the strategy rather than from the initiative's own charter. An initiative that maps to no objective is a candidate for removal, and the roadmap is the only place that becomes visible; where the mapping is genuinely absent, say so in the cell rather than leaving it blank.
Generated value: [ Add details... ]
Start
Instruction: When the initiative is expected to start, at the precision this table uses throughout. Mixed precision within one table is the thing to avoid, because the reader compares the rows against each other and a month beside a quarter invites a wrong conclusion.
Generated value: [ Add details... ]
End
Instruction: When the initiative is expected to deliver its outcomes, which is not the same as when its budget is spent. An initiative that delivers early and closes its accounts later is normal, and recording the accounts date as the end date moves every dependent initiative on the roadmap.
Generated value: [ Add details... ]
Budget
Instruction: The funding envelope allocated to the initiative for the planning period, not a spend forecast. The roadmap answers whether the money is available in the period, not whether it is being spent, and the two are routinely confused when the figure is taken from a finance system.
Generated value: [ Add details... ]
Status
Instruction: Where the initiative currently stands against the fixed set agreed for this roadmap, such as Proposed, Funded, In Progress, On Hold, or Complete. A free-text status cannot be sorted or filtered, and a roadmap that cannot be filtered is a picture rather than a plan.
Generated value: [ Add details... ]
Dependencies and Sequencing
ID
Instruction: The identifier of the initiative whose dependency is being recorded, matching the ID used in the initiatives section so the row can be joined to it.
Generated value: [ Add details... ]
Dependent Initiative
Instruction: The initiative that cannot proceed, or cannot proceed on its own dates, without the predecessor. Name it rather than describing it, because a dependency stated in terms of a category rather than a named initiative cannot be actioned when it is threatened.
Generated value: [ Add details... ]
Dependency Type
Instruction: Whether the dependency is Finish to Start, Start to Start, Finish to Finish, or Start to Finish. The type determines how much float the successor has, so an untyped dependency cannot be planned; Finish to Start is the common case and the others arise where two initiatives must move together.
Generated value: [ Add details... ]
Predecessor
Instruction: The initiative on which this one depends, named and identified. A dependency recorded only in prose is a dependency nobody can query, and it is therefore a dependency that will not be checked before the predecessor slips.
Generated value: [ Add details... ]
Required By
Instruction: The date by which the dependency must be satisfied for the dependent initiative to hold its own dates. Where the required date is later than the predecessor's planned finish, the gap is the risk and should be visible here rather than discovered later.
Generated value: [ Add details... ]
Impact if Late
Instruction: What happens to the dependent initiative if the predecessor does not deliver in time, in money, schedule, or scope terms. A dependency with no stated impact is not actionable when the predecessor slips, because nobody knows whether to escalate, re-sequence, or absorb the delay.
Generated value: [ Add details... ]
Funding and Capacity by Period
Period
Instruction: The planning period the row covers, using the same periods as the planning basis section so the two can be read together. Where a quarter appears in one table and a month in another, the reader has to reconcile them before drawing any conclusion.
Generated value: [ Add details... ]
Planned Funding
Instruction: The money available in the period across the whole portfolio, from the approved budget rather than from requests. The roadmap's purpose is to test the plan against what is actually available, so a figure taken from requests tests nothing.
Generated value: [ Add details... ]
Planned Capacity
Instruction: The resource capacity available in the period, in the unit the organisation uses, whether that is person-days, FTEs, or machine hours. The unit matters because a capacity row expressed in a different unit from the rest of the roadmap cannot be added up with anything else.
Generated value: [ Add details... ]
Committed Load
Instruction: The capacity already committed to initiatives in the period, including work that will not finish inside it. Excluding the part that spills into the next period is the most common way a capacity table overstates what is free.
Generated value: [ Add details... ]
Available
Instruction: The difference between planned and committed. This is the column that tells the reader whether the plan is feasible; a roadmap where this figure is negative in some period is a roadmap that will break in that period, and the shortfall is visible here or nowhere.
Generated value: [ Add details... ]
Notes
Instruction: Anything that changes how the row should be read, such as a known shortage, a hiring assumption the row depends on, or a funding decision not yet taken. A capacity row without its assumptions reads as a commitment, and the reader treats it as one.
Generated value: [ Add details... ]
Assumptions and Constraints
ID
Instruction: The identifier for the assumption or constraint, so it can be referred to from the change log and from the initiative rows that depend on it.
Generated value: [ Add details... ]
Type
Instruction: Whether the row is an Assumption or a Constraint. An assumption may prove false and be replaced; a constraint may not be replaced at all, only planned around, and recording both under one heading loses that distinction exactly where it matters.
Generated value: [ Add details... ]
Description
Instruction: What is being assumed, or what is limiting the portfolio. State it as a testable statement rather than a sentiment, since an assumption phrased as a hope cannot be shown to have failed.
Generated value: [ Add details... ]
Impact on Roadmap
Instruction: The effect on the roadmap if this proves false, or proves tighter than stated. An assumption recorded without its impact cannot be prioritised for testing, because nothing distinguishes the consequential ones from the trivial.
Generated value: [ Add details... ]
Owner
Instruction: Who is responsible for confirming or managing it. An assumption with no owner is not being watched, and the roadmap carries it forward indefinitely after the conditions that made it true have gone.
Generated value: [ Add details... ]
Review Date
Instruction: When the assumption will next be checked. This is what separates an assumption from a fact in practice: an assumption nobody revisits is indistinguishable from a fact, and it stops being questioned precisely when it should be.
Generated value: [ Add details... ]
Roadmap Changes
Change ID
Instruction: The identifier for the change, used to link it to the decision record and to the meeting that authorised it.
Generated value: [ Add details... ]
Description
Instruction: What changed in the roadmap, stated concretely enough to be diffed against the previous version. A change described only as a realignment cannot be checked to see whether it actually happened.
Generated value: [ Add details... ]
Reason
Instruction: Why it changed. A reader comparing two roadmaps needs the reason as much as the change itself, because the reason is what tells them whether the same reasoning applies to the next change or whether the reasoning has been overtaken.
Generated value: [ Add details... ]
Affected Initiatives
Instruction: The initiatives the change touches, by identifier where possible. This is what allows the reader to see whether a change described as minor has in fact moved a committed date.
Generated value: [ Add details... ]
Approved By
Instruction: Who authorised the change. A roadmap altered without an approver is a roadmap nobody owns, and the next alteration is as likely to be an error as a decision.
Generated value: [ Add details... ]
Date
Instruction: When the change was approved, which fixes the version of the roadmap in which it took effect and lets the change log be read in order.
Generated value: [ Add details... ]
Portfolio Roadmap (Reference Example)
🏆 Gold Standard Reference Example: This document illustrates a fully completed, production-grade artifact adhering to the Tasleemat PMO Framework (
PMO-00.01). All company names, project references, and figures are realistic fictional simulations.
Apex Global Solutions
Enterprise Digital Transformation & Cloud Operations Portfolio - PORT-2026-X01
PORTFOLIO ROADMAP
1. Portfolio Context and Planning Basis
Portfolio Purpose and Scope: Drive comprehensive enterprise digital transformation, cloud modernization, and operational supply chain automation across all business units.
Planning Period: 2026 - 2028 (Rolling 3-Year Strategic Cycle)
Roadmap Horizon: 24-Month Active Execution Horizon with Quarterly Reprioritization
Portfolio Owner: Elena Vance, PfMP (Portfolio & Enterprise Transformation Director)
Planning Cycle: Annual Strategic Planning Cycle (Quarterly Rolling Review)
Roadmap Version and Status: Version 1.0 (Formally Approved)
2. Roadmap Initiatives
| ID | Initiative Name | Type | Strategic Objective | Start | End | Budget | Status |
|---|---|---|---|---|---|---|---|
| INIT-01 | Dr. Muna Al-Ghamdi (Executive VP of Technology & Operations) | Technical & Integration | Digital Transformation & Operational Agility | 2026-04-01 | 2026-06-30 | $950,000 USD | In Progress |
| REQ-02 | Sultan Al-Dossary (VP of Operations) | Operational & Functional | Process Automation & 40% Cycle Time Reduction | 2026-06-01 | 2026-09-30 | $1,150,000 USD | Completed |
| ACT-03 | Nasser Al-Ghamdi (Commercial Client Director) | Governance & Compliance | Real-time Data-Driven Executive Decision Making | 2026-08-15 | 2026-11-30 | $780,000 USD | Planned |
| BEN-04 | Abdulaziz Al-Zahrani (Compliance & Governance Director) | Cloud Infrastructure | 100% Security & Regulatory Compliance Assurance | 2026-10-01 | 2027-01-31 | $520,000 USD | Approved |
| WBS-05 | Tariq Al-Mansoor, PfMP (PMO Director) | Cybersecurity | Digital Transformation & Operational Agility | 2026-12-01 | 2027-03-31 | $350,000 USD | In Progress |
3. Dependencies and Sequencing
| ID | Dependent Initiative | Dependency Type | Predecessor | Required By | Impact if Late |
|---|---|---|---|---|---|
| INIT-01 | Unified Cloud ERP Core Architecture | Finish-to-Start (FS) | INIT-01 (Cloud ERP Core) | 2026-06-30 | 2-week schedule slippage on integration testing window |
| REQ-02 | Automated Procurement & Smart Supply Chain Engine | Start-to-Start (SS) | INIT-02 (Supply Chain) | 2026-09-30 | Rescheduling of operational pilot rollout date |
| ACT-03 | Executive Business Intelligence & Reporting Platform | Finish-to-Finish (FF) | INIT-01 (Cloud Architecture) | 2026-11-30 | Minor reallocation of cloud professional services |
| BEN-04 | Employee Self-Service & HR Capital Portal | Finish-to-Start (FS) | INIT-03 (Data Layer) | 2027-01-31 | Postponement of cohort 2 training wave |
4. Funding and Capacity by Period
| Period | Planned Funding | Planned Capacity | Committed Load | Available | Notes |
|---|---|---|---|---|---|
| 2026-Q2 | $950,000 USD | 480 FTE Hours / mo | 420 FTE Hours / mo | 60 FTE Hours (Buffer) | Validated against enterprise ISO27001 cloud security standards. |
| 2026-Q3 | $1,150,000 USD | 620 FTE Hours / mo | 580 FTE Hours / mo | 40 FTE Hours (Buffer) | Weekly steering coordination meetings on schedule. |
| 2026-Q4 | $780,000 USD | 540 FTE Hours / mo | 490 FTE Hours / mo | 50 FTE Hours (Buffer) | Contingency reserve allocated for critical path dependencies. |
5. Assumptions and Constraints
| ID | Type | Description | Impact on Roadmap | Owner | Review Date |
|---|---|---|---|---|---|
| INIT-01 | Technical & Integration | Deploy hardened cloud environment and master databases | 2-week schedule slippage on integration testing window | Elena Vance, PfMP | 2026-06-30 |
| REQ-02 | Operational & Functional | Automate procurement requisition and inventory workflows | Rescheduling of operational pilot rollout date | Faisal Al-Harbi, PMP | 2026-09-30 |
| ACT-03 | Governance & Compliance | Build interactive executive dashboards and KPI reports | Minor reallocation of cloud professional services | Tariq Al-Mansoor, PfMP | 2026-11-30 |
6. Roadmap Changes
| Change ID | Description | Reason | Affected Initiatives | Approved By | Date |
|---|---|---|---|---|---|
| CR-2026-01 | Deploy hardened cloud environment and master databases | Security baseline compliance enhancement | Unified Cloud ERP Core Architecture | Elena Vance, PfMP | 2026-06-30 |
| CR-2026-02 | Automate procurement requisition and inventory workflows | Operational scope extension for branch logistics | Automated Procurement & Smart Supply Chain Engine | Faisal Al-Harbi, PMP | 2026-09-30 |
| CR-2026-03 | Build interactive executive dashboards and KPI reports | Alignment with quarterly fiscal cutover milestones | Executive Business Intelligence & Reporting Platform | Tariq Al-Mansoor, PfMP | 2026-11-30 |
7. Sign-off and Approvals
| Role | Name | Signature | Date |
|---|---|---|---|
| Portfolio Manager | Elena Vance, PfMP | [Electronically Signed] | 2026-03-18 |
| Head of PMO | Tariq Al-Mansoor, PfMP | [Electronically Signed] | 2026-03-18 |
| Executive Sponsor | Dr. Muna Al-Ghamdi (Executive Vice President) | [Electronically Signed] | 2026-03-18 |
| --- |
Generated on: 2026-03-15 10:00 UTC, by Tasleemat
Draft 2020-12 JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://tasleemat.pmo/schemas/completed/PMO-00.01.schema.json",
"title": "Completed Portfolio Roadmap Data Contract",
"description": "Additive structural schema validating completed Portfolio Roadmap artifact data payloads (PMO-00.01).",
"type": "object",
"properties": {
"artifact_id": {
"type": "string",
"const": "PMO-00.01"
},
"metadata": {
"type": "object",
"properties": {
"project_name": {
"type": "string",
"minLength": 1
},
"project_code": {
"type": "string"
},
"date_prepared": {
"type": "string",
"format": "date"
},
"project_manager": {
"type": "string",
"minLength": 1
},
"prepared_by": {
"type": "string",
"minLength": 1
},
"version": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"baselined",
"in_review",
"approved"
]
}
},
"required": [
"project_name",
"date_prepared",
"project_manager",
"prepared_by"
]
},
"portfolio_context_and_planning_basis": {
"type": "object",
"properties": {
"portfolio_purpose_and_scope": {
"type": "string",
"minLength": 1,
"description": "What this portfolio covers and what it deliberately excludes, in the terms the strategy uses. A roadmap that does not state its boundaries cannot be read against a strategy that is wider than the portfolio, and the gap is mistaken for missing initiatives."
},
"planning_period": {
"type": "string",
"minLength": 1,
"description": "The period the roadmap plans for, and whether it is a financial year, a rolling three years, or a fixed cycle agreed elsewhere. Successive roadmaps are only comparable if this is the same each time."
},
"roadmap_horizon": {
"type": "string",
"minLength": 1,
"description": "How far ahead the roadmap looks. Record the horizon even where it equals the planning period, because the two are frequently confused and the confusion shows up later as a gap between what was planned and what was expected."
},
"portfolio_owner": {
"type": "string",
"minLength": 1,
"description": "The single role accountable for the portfolio as a whole, which is usually not the owner of any one initiative in it. Where this is left blank, the roadmap has an author but no owner, and reprioritisation becomes nobody's decision."
},
"planning_cycle": {
"type": "string",
"minLength": 1,
"description": "How often the roadmap is refreshed and by what governance forum, such as a quarterly investment board. The cycle is what makes two versions of the roadmap comparable, and a roadmap refreshed on no cycle is a document nobody can diff."
},
"roadmap_version_and_status": {
"type": "string",
"minLength": 1,
"description": "Which planning cycle this represents, its version number, and whether it is draft or approved. Without a version, two roadmaps differing by a few initiatives cannot be read as a change of direction rather than as two views of the same portfolio."
}
},
"required": [
"portfolio_purpose_and_scope",
"planning_period",
"roadmap_horizon",
"portfolio_owner",
"planning_cycle",
"roadmap_version_and_status"
]
},
"roadmap_initiatives": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The stable identifier for the initiative, used by every later cycle of this roadmap and by the dependency and funding sections. A roadmap reviewed across several cycles is unreadable if an initiative is named differently each time, because the reader cannot tell whether two rows are one initiative or two."
},
"initiative_name": {
"type": "string",
"minLength": 1,
"description": "The name of the program, project, or operation, taken from its charter so the same initiative is not tracked under two names. Where a name has changed, record the former name rather than replacing it, or the history becomes impossible to follow."
},
"type": {
"type": "string",
"minLength": 1,
"description": "Whether the row is a Program, Project, or Operation. The type determines what governance applies, so an initiative recorded without one has no defined approval path, and the roadmap cannot answer what kind of decision is needed about it."
},
"strategic_objective": {
"type": "string",
"minLength": 1,
"description": "The specific objective this initiative serves, named from the strategy rather than from the initiative's own charter. An initiative that maps to no objective is a candidate for removal, and the roadmap is the only place that becomes visible; where the mapping is genuinely absent, say so in the cell rather than leaving it blank."
},
"start": {
"type": "string",
"minLength": 1,
"description": "When the initiative is expected to start, at the precision this table uses throughout. Mixed precision within one table is the thing to avoid, because the reader compares the rows against each other and a month beside a quarter invites a wrong conclusion."
},
"end": {
"type": "string",
"minLength": 1,
"description": "When the initiative is expected to deliver its outcomes, which is not the same as when its budget is spent. An initiative that delivers early and closes its accounts later is normal, and recording the accounts date as the end date moves every dependent initiative on the roadmap."
},
"budget": {
"type": "string",
"minLength": 1,
"description": "The funding envelope allocated to the initiative for the planning period, not a spend forecast. The roadmap answers whether the money is available in the period, not whether it is being spent, and the two are routinely confused when the figure is taken from a finance system."
},
"status": {
"type": "string",
"minLength": 1,
"description": "Where the initiative currently stands against the fixed set agreed for this roadmap, such as Proposed, Funded, In Progress, On Hold, or Complete. A free-text status cannot be sorted or filtered, and a roadmap that cannot be filtered is a picture rather than a plan."
}
},
"required": [
"id",
"initiative_name",
"type",
"strategic_objective",
"start",
"end",
"budget",
"status"
]
},
"dependencies_and_sequencing": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The identifier of the initiative whose dependency is being recorded, matching the ID used in the initiatives section so the row can be joined to it."
},
"dependent_initiative": {
"type": "string",
"minLength": 1,
"description": "The initiative that cannot proceed, or cannot proceed on its own dates, without the predecessor. Name it rather than describing it, because a dependency stated in terms of a category rather than a named initiative cannot be actioned when it is threatened."
},
"dependency_type": {
"type": "string",
"minLength": 1,
"description": "Whether the dependency is Finish to Start, Start to Start, Finish to Finish, or Start to Finish. The type determines how much float the successor has, so an untyped dependency cannot be planned; Finish to Start is the common case and the others arise where two initiatives must move together."
},
"predecessor": {
"type": "string",
"minLength": 1,
"description": "The initiative on which this one depends, named and identified. A dependency recorded only in prose is a dependency nobody can query, and it is therefore a dependency that will not be checked before the predecessor slips."
},
"required_by": {
"type": "string",
"minLength": 1,
"description": "The date by which the dependency must be satisfied for the dependent initiative to hold its own dates. Where the required date is later than the predecessor's planned finish, the gap is the risk and should be visible here rather than discovered later."
},
"impact_if_late": {
"type": "string",
"minLength": 1,
"description": "What happens to the dependent initiative if the predecessor does not deliver in time, in money, schedule, or scope terms. A dependency with no stated impact is not actionable when the predecessor slips, because nobody knows whether to escalate, re-sequence, or absorb the delay."
}
},
"required": [
"id",
"dependent_initiative",
"dependency_type",
"predecessor",
"required_by",
"impact_if_late"
]
},
"funding_and_capacity_by_period": {
"type": "object",
"properties": {
"period": {
"type": "string",
"minLength": 1,
"description": "The planning period the row covers, using the same periods as the planning basis section so the two can be read together. Where a quarter appears in one table and a month in another, the reader has to reconcile them before drawing any conclusion."
},
"planned_funding": {
"type": "string",
"minLength": 1,
"description": "The money available in the period across the whole portfolio, from the approved budget rather than from requests. The roadmap's purpose is to test the plan against what is actually available, so a figure taken from requests tests nothing."
},
"planned_capacity": {
"type": "string",
"minLength": 1,
"description": "The resource capacity available in the period, in the unit the organisation uses, whether that is person-days, FTEs, or machine hours. The unit matters because a capacity row expressed in a different unit from the rest of the roadmap cannot be added up with anything else."
},
"committed_load": {
"type": "string",
"minLength": 1,
"description": "The capacity already committed to initiatives in the period, including work that will not finish inside it. Excluding the part that spills into the next period is the most common way a capacity table overstates what is free."
},
"available": {
"type": "string",
"minLength": 1,
"description": "The difference between planned and committed. This is the column that tells the reader whether the plan is feasible; a roadmap where this figure is negative in some period is a roadmap that will break in that period, and the shortfall is visible here or nowhere."
},
"notes": {
"type": "string",
"minLength": 1,
"description": "Anything that changes how the row should be read, such as a known shortage, a hiring assumption the row depends on, or a funding decision not yet taken. A capacity row without its assumptions reads as a commitment, and the reader treats it as one."
}
},
"required": [
"period",
"planned_funding",
"planned_capacity",
"committed_load",
"available",
"notes"
]
},
"assumptions_and_constraints": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The identifier for the assumption or constraint, so it can be referred to from the change log and from the initiative rows that depend on it."
},
"type": {
"type": "string",
"minLength": 1,
"description": "Whether the row is an Assumption or a Constraint. An assumption may prove false and be replaced; a constraint may not be replaced at all, only planned around, and recording both under one heading loses that distinction exactly where it matters."
},
"description": {
"type": "string",
"minLength": 1,
"description": "What is being assumed, or what is limiting the portfolio. State it as a testable statement rather than a sentiment, since an assumption phrased as a hope cannot be shown to have failed."
},
"impact_on_roadmap": {
"type": "string",
"minLength": 1,
"description": "The effect on the roadmap if this proves false, or proves tighter than stated. An assumption recorded without its impact cannot be prioritised for testing, because nothing distinguishes the consequential ones from the trivial."
},
"owner": {
"type": "string",
"minLength": 1,
"description": "Who is responsible for confirming or managing it. An assumption with no owner is not being watched, and the roadmap carries it forward indefinitely after the conditions that made it true have gone."
},
"review_date": {
"type": "string",
"minLength": 1,
"description": "When the assumption will next be checked. This is what separates an assumption from a fact in practice: an assumption nobody revisits is indistinguishable from a fact, and it stops being questioned precisely when it should be."
}
},
"required": [
"id",
"type",
"description",
"impact_on_roadmap",
"owner",
"review_date"
]
},
"roadmap_changes": {
"type": "object",
"properties": {
"change_id": {
"type": "string",
"minLength": 1,
"description": "The identifier for the change, used to link it to the decision record and to the meeting that authorised it."
},
"description": {
"type": "string",
"minLength": 1,
"description": "What changed in the roadmap, stated concretely enough to be diffed against the previous version. A change described only as a realignment cannot be checked to see whether it actually happened."
},
"reason": {
"type": "string",
"minLength": 1,
"description": "Why it changed. A reader comparing two roadmaps needs the reason as much as the change itself, because the reason is what tells them whether the same reasoning applies to the next change or whether the reasoning has been overtaken."
},
"affected_initiatives": {
"type": "string",
"minLength": 1,
"description": "The initiatives the change touches, by identifier where possible. This is what allows the reader to see whether a change described as minor has in fact moved a committed date."
},
"approved_by": {
"type": "string",
"minLength": 1,
"description": "Who authorised the change. A roadmap altered without an approver is a roadmap nobody owns, and the next alteration is as likely to be an error as a decision."
},
"date": {
"type": "string",
"minLength": 1,
"description": "When the change was approved, which fixes the version of the roadmap in which it took effect and lets the change log be read in order."
}
},
"required": [
"change_id",
"description",
"reason",
"affected_initiatives",
"approved_by",
"date"
]
}
},
"required": [
"artifact_id",
"metadata",
"portfolio_context_and_planning_basis",
"roadmap_initiatives",
"dependencies_and_sequencing",
"funding_and_capacity_by_period",
"assumptions_and_constraints",
"roadmap_changes"
]
}
📋 Form Field Definitions Dictionary (Legacy Specification)
{
"_llm_instructions": "Fill in the 'project_title' and 'date_prepared' properties, and the 'value' property of each field, based on the provided project context. Reference parameters.md for global project variables.",
"form_name": "Portfolio Roadmap",
"document_reference": "PMO-00.01",
"project_title": "",
"date_prepared": "",
"fields": {
"f01_Portfolio_Purpose_and_Scope": {
"section": "Portfolio Context and Planning Basis",
"label": "Portfolio Purpose and Scope",
"guidance": "What this portfolio covers and what it deliberately excludes, in the terms the strategy uses. A roadmap that does not state its boundaries cannot be read against a strategy that is wider than the portfolio, and the gap is mistaken for missing initiatives.",
"value": ""
},
"f02_Planning_Period": {
"section": "Portfolio Context and Planning Basis",
"label": "Planning Period",
"guidance": "The period the roadmap plans for, and whether it is a financial year, a rolling three years, or a fixed cycle agreed elsewhere. Successive roadmaps are only comparable if this is the same each time.",
"value": ""
},
"f03_Roadmap_Horizon": {
"section": "Portfolio Context and Planning Basis",
"label": "Roadmap Horizon",
"guidance": "How far ahead the roadmap looks. Record the horizon even where it equals the planning period, because the two are frequently confused and the confusion shows up later as a gap between what was planned and what was expected.",
"value": ""
},
"f04_Portfolio_Owner": {
"section": "Portfolio Context and Planning Basis",
"label": "Portfolio Owner",
"guidance": "The single role accountable for the portfolio as a whole, which is usually not the owner of any one initiative in it. Where this is left blank, the roadmap has an author but no owner, and reprioritisation becomes nobody's decision.",
"value": ""
},
"f05_Planning_Cycle": {
"section": "Portfolio Context and Planning Basis",
"label": "Planning Cycle",
"guidance": "How often the roadmap is refreshed and by what governance forum, such as a quarterly investment board. The cycle is what makes two versions of the roadmap comparable, and a roadmap refreshed on no cycle is a document nobody can diff.",
"value": ""
},
"f06_Roadmap_Version_and_Status": {
"section": "Portfolio Context and Planning Basis",
"label": "Roadmap Version and Status",
"guidance": "Which planning cycle this represents, its version number, and whether it is draft or approved. Without a version, two roadmaps differing by a few initiatives cannot be read as a change of direction rather than as two views of the same portfolio.",
"value": ""
},
"f07_ID": {
"section": "Roadmap Initiatives",
"label": "ID",
"guidance": "The stable identifier for the initiative, used by every later cycle of this roadmap and by the dependency and funding sections. A roadmap reviewed across several cycles is unreadable if an initiative is named differently each time, because the reader cannot tell whether two rows are one initiative or two.",
"value": ""
},
"f08_Initiative_Name": {
"section": "Roadmap Initiatives",
"label": "Initiative Name",
"guidance": "The name of the program, project, or operation, taken from its charter so the same initiative is not tracked under two names. Where a name has changed, record the former name rather than replacing it, or the history becomes impossible to follow.",
"value": ""
},
"f09_Type": {
"section": "Roadmap Initiatives",
"label": "Type",
"guidance": "Whether the row is a Program, Project, or Operation. The type determines what governance applies, so an initiative recorded without one has no defined approval path, and the roadmap cannot answer what kind of decision is needed about it.",
"value": ""
},
"f10_Strategic_Objective": {
"section": "Roadmap Initiatives",
"label": "Strategic Objective",
"guidance": "The specific objective this initiative serves, named from the strategy rather than from the initiative's own charter. An initiative that maps to no objective is a candidate for removal, and the roadmap is the only place that becomes visible; where the mapping is genuinely absent, say so in the cell rather than leaving it blank.",
"value": ""
},
"f11_Start": {
"section": "Roadmap Initiatives",
"label": "Start",
"guidance": "When the initiative is expected to start, at the precision this table uses throughout. Mixed precision within one table is the thing to avoid, because the reader compares the rows against each other and a month beside a quarter invites a wrong conclusion.",
"value": ""
},
"f12_End": {
"section": "Roadmap Initiatives",
"label": "End",
"guidance": "When the initiative is expected to deliver its outcomes, which is not the same as when its budget is spent. An initiative that delivers early and closes its accounts later is normal, and recording the accounts date as the end date moves every dependent initiative on the roadmap.",
"value": ""
},
"f13_Budget": {
"section": "Roadmap Initiatives",
"label": "Budget",
"guidance": "The funding envelope allocated to the initiative for the planning period, not a spend forecast. The roadmap answers whether the money is available in the period, not whether it is being spent, and the two are routinely confused when the figure is taken from a finance system.",
"value": ""
},
"f14_Status": {
"section": "Roadmap Initiatives",
"label": "Status",
"guidance": "Where the initiative currently stands against the fixed set agreed for this roadmap, such as Proposed, Funded, In Progress, On Hold, or Complete. A free-text status cannot be sorted or filtered, and a roadmap that cannot be filtered is a picture rather than a plan.",
"value": ""
},
"f15_ID": {
"section": "Dependencies and Sequencing",
"label": "ID",
"guidance": "The identifier of the initiative whose dependency is being recorded, matching the ID used in the initiatives section so the row can be joined to it.",
"value": ""
},
"f16_Dependent_Initiative": {
"section": "Dependencies and Sequencing",
"label": "Dependent Initiative",
"guidance": "The initiative that cannot proceed, or cannot proceed on its own dates, without the predecessor. Name it rather than describing it, because a dependency stated in terms of a category rather than a named initiative cannot be actioned when it is threatened.",
"value": ""
},
"f17_Dependency_Type": {
"section": "Dependencies and Sequencing",
"label": "Dependency Type",
"guidance": "Whether the dependency is Finish to Start, Start to Start, Finish to Finish, or Start to Finish. The type determines how much float the successor has, so an untyped dependency cannot be planned; Finish to Start is the common case and the others arise where two initiatives must move together.",
"value": ""
},
"f18_Predecessor": {
"section": "Dependencies and Sequencing",
"label": "Predecessor",
"guidance": "The initiative on which this one depends, named and identified. A dependency recorded only in prose is a dependency nobody can query, and it is therefore a dependency that will not be checked before the predecessor slips.",
"value": ""
},
"f19_Required_By": {
"section": "Dependencies and Sequencing",
"label": "Required By",
"guidance": "The date by which the dependency must be satisfied for the dependent initiative to hold its own dates. Where the required date is later than the predecessor's planned finish, the gap is the risk and should be visible here rather than discovered later.",
"value": ""
},
"f20_Impact_if_Late": {
"section": "Dependencies and Sequencing",
"label": "Impact if Late",
"guidance": "What happens to the dependent initiative if the predecessor does not deliver in time, in money, schedule, or scope terms. A dependency with no stated impact is not actionable when the predecessor slips, because nobody knows whether to escalate, re-sequence, or absorb the delay.",
"value": ""
},
"f21_Period": {
"section": "Funding and Capacity by Period",
"label": "Period",
"guidance": "The planning period the row covers, using the same periods as the planning basis section so the two can be read together. Where a quarter appears in one table and a month in another, the reader has to reconcile them before drawing any conclusion.",
"value": ""
},
"f22_Planned_Funding": {
"section": "Funding and Capacity by Period",
"label": "Planned Funding",
"guidance": "The money available in the period across the whole portfolio, from the approved budget rather than from requests. The roadmap's purpose is to test the plan against what is actually available, so a figure taken from requests tests nothing.",
"value": ""
},
"f23_Planned_Capacity": {
"section": "Funding and Capacity by Period",
"label": "Planned Capacity",
"guidance": "The resource capacity available in the period, in the unit the organisation uses, whether that is person-days, FTEs, or machine hours. The unit matters because a capacity row expressed in a different unit from the rest of the roadmap cannot be added up with anything else.",
"value": ""
},
"f24_Committed_Load": {
"section": "Funding and Capacity by Period",
"label": "Committed Load",
"guidance": "The capacity already committed to initiatives in the period, including work that will not finish inside it. Excluding the part that spills into the next period is the most common way a capacity table overstates what is free.",
"value": ""
},
"f25_Available": {
"section": "Funding and Capacity by Period",
"label": "Available",
"guidance": "The difference between planned and committed. This is the column that tells the reader whether the plan is feasible; a roadmap where this figure is negative in some period is a roadmap that will break in that period, and the shortfall is visible here or nowhere.",
"value": ""
},
"f26_Notes": {
"section": "Funding and Capacity by Period",
"label": "Notes",
"guidance": "Anything that changes how the row should be read, such as a known shortage, a hiring assumption the row depends on, or a funding decision not yet taken. A capacity row without its assumptions reads as a commitment, and the reader treats it as one.",
"value": ""
},
"f27_ID": {
"section": "Assumptions and Constraints",
"label": "ID",
"guidance": "The identifier for the assumption or constraint, so it can be referred to from the change log and from the initiative rows that depend on it.",
"value": ""
},
"f28_Type": {
"section": "Assumptions and Constraints",
"label": "Type",
"guidance": "Whether the row is an Assumption or a Constraint. An assumption may prove false and be replaced; a constraint may not be replaced at all, only planned around, and recording both under one heading loses that distinction exactly where it matters.",
"value": ""
},
"f29_Description": {
"section": "Assumptions and Constraints",
"label": "Description",
"guidance": "What is being assumed, or what is limiting the portfolio. State it as a testable statement rather than a sentiment, since an assumption phrased as a hope cannot be shown to have failed.",
"value": ""
},
"f30_Impact_on_Roadmap": {
"section": "Assumptions and Constraints",
"label": "Impact on Roadmap",
"guidance": "The effect on the roadmap if this proves false, or proves tighter than stated. An assumption recorded without its impact cannot be prioritised for testing, because nothing distinguishes the consequential ones from the trivial.",
"value": ""
},
"f31_Owner": {
"section": "Assumptions and Constraints",
"label": "Owner",
"guidance": "Who is responsible for confirming or managing it. An assumption with no owner is not being watched, and the roadmap carries it forward indefinitely after the conditions that made it true have gone.",
"value": ""
},
"f32_Review_Date": {
"section": "Assumptions and Constraints",
"label": "Review Date",
"guidance": "When the assumption will next be checked. This is what separates an assumption from a fact in practice: an assumption nobody revisits is indistinguishable from a fact, and it stops being questioned precisely when it should be.",
"value": ""
},
"f33_Change_ID": {
"section": "Roadmap Changes",
"label": "Change ID",
"guidance": "The identifier for the change, used to link it to the decision record and to the meeting that authorised it.",
"value": ""
},
"f34_Description": {
"section": "Roadmap Changes",
"label": "Description",
"guidance": "What changed in the roadmap, stated concretely enough to be diffed against the previous version. A change described only as a realignment cannot be checked to see whether it actually happened.",
"value": ""
},
"f35_Reason": {
"section": "Roadmap Changes",
"label": "Reason",
"guidance": "Why it changed. A reader comparing two roadmaps needs the reason as much as the change itself, because the reason is what tells them whether the same reasoning applies to the next change or whether the reasoning has been overtaken.",
"value": ""
},
"f36_Affected_Initiatives": {
"section": "Roadmap Changes",
"label": "Affected Initiatives",
"guidance": "The initiatives the change touches, by identifier where possible. This is what allows the reader to see whether a change described as minor has in fact moved a committed date.",
"value": ""
},
"f37_Approved_By": {
"section": "Roadmap Changes",
"label": "Approved By",
"guidance": "Who authorised the change. A roadmap altered without an approver is a roadmap nobody owns, and the next alteration is as likely to be an error as a decision.",
"value": ""
},
"f38_Date": {
"section": "Roadmap Changes",
"label": "Date",
"guidance": "When the change was approved, which fixes the version of the roadmap in which it took effect and lets the change log be read in order.",
"value": ""
}
}
}