RAG, confidence and health
Mode: reference.
The Investment Health dashboard rolls up a project’s registers into a small set of health indicators. Some are derived deterministically from the underlying data, so editing the indicator directly cannot game the headline health. Others are manual — the self-report is itself the governance act. This page defines each value and its derivation, on both the project dashboard and the Portfolio.
RAG values
Section titled “RAG values”The RAG enum (VALID_RAGS) is:
| Value | Meaning |
|---|---|
Green |
On track. |
Amber |
At risk. |
Red |
Off track. |
Blue |
Selectable status value (e.g. complete). Not emitted by the deterministic derivations below. |
None |
Not applicable / insufficient data to derive. |
Investment Health cards
Section titled “Investment Health cards”The dashboard shows five status cards: Overall, Confidence, Scope, Cost and Time. Three (Scope, Cost, Time) derive deterministically from the pillars below. Risk has no card of its own — the Confidence card carries the risk evidence (open and materialised counts with a severity mix bar). The Overall card is manual.
| Pillar | Shown as | Source | Derivation |
|---|---|---|---|
| Cost | Cost card | Budget totals | Deterministic — see below. |
| Schedule | Time card | Work packages | Deterministic — see below. |
| Scope | Scope card | Change register | Deterministic — see below. |
| Risk | Evidence under the Confidence card | R/I/O register | Deterministic — see below. |
| Overall | Overall card | PM | Manual — user-selected, not computed from the others. |
Rating reasons
Section titled “Rating reasons”The two manual cards (Overall and Confidence) each carry an optional free-text reason, shown on the card beneath the rating.
| Field | Card | Notes |
|---|---|---|
overallReason |
Overall | Optional. Capped at 120 characters (STATUS_REASON_MAX — enforced in the editor and clamped again on save). '' clears it. |
confidenceReason |
Confidence | Optional. Same cap and clearing behaviour. |
The audit trail records both on change, like every other status field (Overall rating reason / Confidence reason). They annotate a manual call. Nothing derives from them.
Cost RAG
Section titled “Cost RAG”Derived from project budget totals (deriveCostRag).
| Result | Condition |
|---|---|
Green |
forecast ≤ baseline × 1.05 |
Amber |
forecast ≤ baseline × 1.15 |
Red |
forecast > baseline × 1.15 |
None |
no baseline set (baseline ≤ 0 or forecast not finite) |
Schedule RAG
Section titled “Schedule RAG”Derived from work packages that have both a planned end date and a forecast
end date (deriveScheduleRag). Slip = forecast end − planned end, in days.
| Result | Condition |
|---|---|
Green |
no work package slips (max slip ≤ 0 days) |
Amber |
any work package slips by ≤ 15 days |
Red |
any work package slips by > 15 days |
None |
no work package has both dates set |
Scope RAG
Section titled “Scope RAG”Derived from the change register over the current reporting period
(deriveScopeRag). The period length comes from the project’s reporting cadence.
| Result | Condition |
|---|---|
Green |
zero Approved changes in the current period |
Amber |
1–2 Approved in the period, or any Proposed change older than 14 days |
Red |
3 or more Approved in the period |
None |
no changes recorded |
Risk RAG
Section titled “Risk RAG”Counts open downside Risks whose impact × likelihood ≥ 15 (deriveRiskRag
— the same threshold behind every “high-impact risk” count). Opportunities
(upside) are excluded — they belong on the R/I/O exposure card and lift Outcome
confidence, not the Risk RAG. Items with no direction (and legacy Threat
records) are treated as downside Risks.
| Result | Condition |
|---|---|
Green |
0 high-impact open Risks |
Amber |
1–2 high-impact open Risks |
Red |
3 or more high-impact open Risks |
None |
no Risks recorded at all |
Health on the Portfolio
Section titled “Health on the Portfolio”The Portfolio’s investments table shows one health verdict per investment. It is not a sixth derivation — it reports the PM’s Overall rating from the project’s Investment Health dashboard:
| Verdict shown | When |
|---|---|
| Off track | the PM set Overall to Red |
| At risk | the PM set Overall to Amber |
| On track | the PM set Overall to Green |
The two surfaces agree by construction. The Portfolio repeats the judgement the PM declared — it does not compute a second opinion.
When the investment is unrated
Section titled “When the investment is unrated”If Overall is unset (None), the Portfolio falls back to a read of the data —
the worse of cost performance and Outcome confidence:
| Input | Off track | At risk | On track |
|---|---|---|---|
| Cost variance vs baseline | > 15% over | > 5% over | ≤ 5% over |
| Outcome confidence | Low |
Modest / Unknown |
High |
The row’s action line names which one it is. An investment the PM rated Red carries the PM’s reason. An unrated investment reading Red says so plainly, and asks for a rating.
The same verdict drives the off track / at risk counts in the steering headline, and the worst-case rollup on each Theme or Stage group.
Confidence axes
Section titled “Confidence axes”Confidence is self-reported by the PM (manual), additive to RAG. The PM
rates two axes, each on the same enum (VALID_CONFIDENCE):
| Axis | Question it answers |
|---|---|
| Outcome confidence | Will this still deliver the outcome we funded it for? |
| Adoption confidence | Will the change actually be adopted? |
| Confidence value |
|---|
High |
Modest |
Low |
Unknown |
Reporting-cadence staleness
Section titled “Reporting-cadence staleness”A project status is stale when its last update falls outside its reporting
cadence (isStatusStale). A missing or unparseable last-updated timestamp
counts as stale.
| Cadence | Period |
|---|---|
Daily |
24 hours |
Weekly |
7 days |
Monthly |
30 days |
Staleness drives the dashboard’s stale-update banner and the portfolio
overdue-reporting check (see get-portfolio-overdue).
Cadence is a recommendation, not a stipulation — the signal surfaces on the
dashboard. Tollgate emails nothing.