Skip to content

Portfolio report structure

The output of /ai-readiness-rollup, written to <scope root>/<report.output>/YYYY-MM-DD-portfolio.md — the scope root being the directory containing .habitat/, as set out under path resolution.

Per-subject reports stay where they are. Each team keeps and owns its own report; only the roll-up is written to the scope root.

Sections, in order

1. Coverage ledger

Every subject named in the manifest, with its status:

Status Meaning
assessed Report found and its summary block parsed.
stale Assessed, but the report is more than 90 days old.
degraded No summary block; values recovered from prose.
incompatible Report parses, but was produced by a different instrument — no Habitat Maturity Profile and no gap, so it cannot enter the matrix.
unparseable Report found but nothing could be read from it.
unreachable Path unreadable, or no assessment exists there.

incompatible is not a lesser degraded. A degraded report measured the right things and merely predates the summary block; an incompatible one measured different things. Collapsing them would report a subject as nearly-there when it has not been assessed against this model at all — see the real estate example, which is where the distinction came from.

It comes first, and it is built before any analysis. Analysis that starts before coverage is established has a habit of describing the readable subjects as though they were the estate.

The ledger states the position plainly: "6 of 9 subjects assessed; 2 stale; 1 unreachable."

2. Dimension matrix

Subjects as rows, the fourteen model dimensions as columns, level in the cell. The weakest cell in each column is marked.

This is the artefact people screenshot, which is exactly why the coverage ledger sits above it.

3. Gap table

Per subject: habitat maturity mean, cognitive level, signed gap, and regime.

4. Spread

Minimum gap, maximum gap, the range between them, and the two subjects at the extremes named with a line each on what differs.

This is the headline finding. One cognitive read against several habitats produces several gaps, and their spread is the thing a single-repo assessment structurally cannot show.

A spread needs at least two comparable subjects — two that each yield a gap. With fewer, the report says the spread is not computable and names what would produce one. Presenting a single subject's gap as a range would manufacture exactly the finding the portfolio view exists to produce.

5. Split ceiling

The weakest dimensions, divided by who owns them:

  • Common weak — weak in two-thirds or more of the assessed subjects. The enablement backlog, owned by whoever provides the habitat.
  • Locally weak — weak in one or two subjects. That team's backlog.

6. Confidence

How many placements feeding the matrix were asked or inferred rather than observed, and any subject with more than five inferred dimensions flagged as thin evidence. Aggregation must not launder a guess into a confident portfolio claim.

7. Steer

One portfolio-level steer, plus a steer for outlier subjects only — never one per subject. A steer per row reads as a spreadsheet rather than as advice.

What the report never contains

No overall grade, no percentage, no averaged gap across subjects. See Why there is no portfolio score for the argument; the short version is that the average erases the spread, which is the only thing the portfolio view adds.

Under partial coverage the ceiling is never described as estate-wide. With six of fourteen subjects readable, it is the ceiling of the six, and the report says which.