Glowing golden DNA double-helix made of forge-glyphs (gauges, hammers, shields, gears) inside a translucent crystal vial, the Health DNA composite fingerprint LiveGuard Health tab, composite health gauge, 30-day drift trend, MTTBF, and per-component metrics from forge_health_trend
Act IV, Learn · Chapter 25

Health DNA

A single fingerprint for "how healthy is this project today?", persisted, trended, compared.

New here? Plain-English version. A project can look fine on the surface and still be slowly rotting underneath. Tests are passing, but every plan run costs a little more. No incidents this week, but architectural drift is creeping up. Health DNA is a daily checkup that combines five different health signals into one score (0–100) so you can spot the slow decay before it becomes a crisis.
  • What it measures, drift, incidents, test pass rate, AI model success rate, and cost per slice. Five numbers, one composite score.
  • Why one number? Any single metric can lie (100% green tests + drowning in drift). The composite catches the lie.
  • What you do with it, the LiveGuard dashboard plots the score over time. A 7-day downward trend is the early warning to slow down and clean up before shipping more features.
Tool: forge_health_trend (LiveGuard), writes .forge/health-dna.jsonl. Intent: health-dna. Aliases: health-analysis, system-health, health-report.

Why a Fingerprint?

Any single metric can lie. A project with 100% green tests can still be drowning in drift. A low drift score can mask a CVE backlog. The Health DNA combines five independent signals into one daily fingerprint so slow decay, the kind where everything looks fine but tomorrow's plan costs 2× yesterday's, becomes visible.

The Five Signals

Health DNA composite scoring: five signals (drift, incident rate, test pass rate, model success rate, cost per slice) feed into forge_health_trend which computes a weighted composite score 0-100. 7-day rolling delta detects decay; sustained drops trigger alerts and auto-incidents. Score persists to .forge/health-dna.jsonl and renders on the LiveGuard Health tab as a gauge with trend arrow.
Figure 25-1. Health DNA composite scoring
SignalSourceWhat it catches
Drift scoreforge_drift_reportArchitecture diverging from plan baseline
Incident rateforge_incident_captureProduction failures over trailing window
Test pass rateCI + testbed findingsRegression risk
Model success rateOrchestrator telemetryAgent failures + escalation frequency
Cost per sliceCost ledgerToken-burn creep, the project getting harder to reason about

Record Shape

.forge/health-dna.jsonl, one record
{
  "timestamp": "2026-04-20T00:00:00Z",
  "driftScore":       0.91,
  "incidentRate7d":   0,
  "testPassRate":     0.998,
  "modelSuccessRate": 0.96,
  "costPerSlice":     0.34,
  "composite":        0.93,
  "delta7d":          -0.02,
  "delta30d":         -0.08
}

composite is a weighted blend computed inside forge_health_trend (current default weights: drift 0.30, incident-rate 0.25, test-pass 0.20, model-success 0.15, cost 0.10, see pforge-mcp/server.mjs). delta7d and delta30d compare against historical records, a small negative delta is noise, a sustained negative delta is decay.

Decay Detection

The watcher can alert on Health DNA thresholds:

  • delta7d < -0.10, short-term regression, usually tied to a specific slice.
  • delta30d < -0.15, long-term decay, usually architectural.
  • composite < 0.60, absolute floor; blocks new executions until addressed.

Dashboard

The LiveGuard dashboard's Health tab renders the composite score as a sparkline, with per-signal sub-lines toggleable. The Forge Intelligence page cross-references Health DNA with the OpenBrain memory corpus, "your drift score dropped the day you added the new caching layer" is exactly the kind of conclusion the Learn station exists to surface.

Why JSONL, not JSON? Health DNA is append-only by design, every run writes one line. The file rotates on size (rather than via a built-in trim tool). That way a rolled-back slice doesn't also roll back the memory of how sick the project was before the rollback.