Skip to content

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.

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.

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.

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.

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)

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

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

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

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.

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 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

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.