The Drift Log · Software inventory you can trust
Component Health Scores from Harness Verdicts
20 October 2026 · 3 min read · 655 words · inference

Health scores translate harness verdicts into a numeric confidence metric, letting teams prioritize audit effort over raw entry counts.
The failure to see reliability
Most teams treat a registry row as a line item. The count grows, the dashboard glitters, and the audit backlog swells. The problem is that the count says nothing about execution. A row can be a stub, a dead‑end, or a fully certified artefact. When the only signal is “present”, teams waste time chasing metadata that never runs. The result is a false sense of coverage and a real risk of deploying untested code.
Harness verdicts are the only ground truth
The certification harness runs each artefact against its declared contract. It records one of four outcomes: CERTIFIED, PROVISIONAL, INCONCLUSIVE, or FAILED. These outcomes are not marketing fluff; they are the only reproducible evidence that an entry can be executed. Because the harness is model‑independent, the verdict is computed, not generated, and the same input always yields the same result. The harness therefore supplies a binary truth table for every component.
Turning verdicts into a numeric health score
A health score condenses the four‑state verdict into a single number that can be sorted, filtered, and visualised. The simplest mapping preserves the ordering of confidence:
| Verdict | Base value | |--------------|------------| | CERTIFIED | 1.0 | | PROVISIONAL | 0.6 | | INCONCLUSIVE| 0.3 | | FAILED | 0.0 |
The score can be refined by weighting the age of the latest run and the frequency of re‑certification. A pragmatic formula is:
function healthScore(verdict: string, daysSinceRun: number, runsLast30d: number): number {
const base = {CERTIFIED:1, PROVISIONAL:0.6, INCONCLUSIVE:0.3, FAILED:0}[verdict] ?? 0;
const ageFactor = Math.max(0, 1 - daysSinceRun / 180); // decay after six months
const freqFactor = Math.min(1, runsLast30d / 5); // cap at five runs per month
return +(base * ageFactor * freqFactor).toFixed(2);
}
The function returns a value between 0 and 1, rounded to two decimals. A component that was CERTIFIED yesterday and has been exercised five times in the last month scores 1.00. The same component, last run 150 days ago, drops to 0.83. A PROVISIONAL artefact exercised twice this month scores 0.48. A FAILED entry always scores 0, regardless of recency.
The calculation lives entirely in the client side. The same logic can be reproduced in the HTTP API or the TypeScript SDK, because the harness verdicts are exposed through the unified access gate. The score therefore becomes a deterministic attribute of each registry entry.
Using the score to focus audit effort
When the health score is added as a column in the component list, the weakest rows rise to the top. Teams can set a threshold – for example, 0.5 – and treat anything below as “audit‑required”. The threshold is not a hard rule; it is a decision point that turns an opaque count into a triage surface.
Consider a monorepo with 1,200 entries. After a single harness run, the scores distribute as follows:
- 250 entries at 1.00 – fully trusted, no immediate action.
- 400 entries between 0.6 and 0.9 – stable, schedule periodic re‑run.
- 350 entries below 0.5 – stale, missing contracts, or recent failures.
Instead of opening tickets for every row, the team now has a concrete backlog of 350 items. They can allocate a sprint to re‑run the harness, update contracts, or retire dead artefacts. The score also surfaces regressions: a component that fell from 0.9 to 0.2 in one week flags a recent break that needs urgent attention.
The approach aligns with the argument in the pillar post [/blog/a-component-count-is-not-an-inventory] – a count alone is not an inventory. A health‑scored inventory tells you which rows you can actually read, execute and grade.
Monday’s concrete step
- Run the certification harness on your current registry via the live endpoint [/harness] or the HTTP API [/api-access].
- Export the verdicts (verdict, timestamp, run count) to a CSV.
- Apply the
healthScorefunction in a short script and add the resulting column to your component spreadsheet. - Sort by the new column and flag every entry with a score below 0.5 for the next audit sprint.
Doing this before the end of the week turns an invisible risk into a visible work‑item list. The team can start the next sprint with a clear, data‑driven priority set, rather than guessing which rows are trustworthy.
Keep reading
Next in the log
- Detecting Orphaned Code via Executable Registry Audits
Running an executable audit in a sandbox replaces vague presence flags with concrete certification verdicts, eliminating orphaned code from your inventory.
- Running Registry Entries in Isolation to Validate Inventory
Treat each registry entry as a runnable artifact in a sandbox and use the SHPBL harness to certify which ones are truly executable.
- Live Load‑Bearing Dependency Graph from Execution Traces
Runtime tracing lets you build a load‑bearing dependency graph that reflects only the code actually exercised in production.
The Strategic Master Library · written and reviewed under the house's own epistemic rules: nothing claimed that we cannot show.