agent-fitness · git:20260707.2a2e857 · 2026-07-07 · sha256 1c73ed2de257f964

agent-fitness git:20260707.2a2e857A

Immutable. This exact content never changes and is served at /api/v1/blob/1c73ed2de257f964.

---
name: agent-fitness
agent: none
description: Track and surface sub-agent dispatch calibration ratios. Extract from JSONL transcript or read existing ledger. Per-agent clean/blocked/errored/partial trends.
allowed-tools: Bash, Read
user-invocable: true
triggers:
  - agent fitness
  - agent calibration
  - agent stats
  - sub-agent stats
  - which agents work
  - /agent-fitness
  - agent dispatch trends
---

# /agent-fitness

Three modes:

**`/agent-fitness extract`** — runs `python3 daemons/agent-fitness-extract.py` to scan the latest JSONL transcript and append new dispatch rows to `memory/AGENT_FITNESS.md`. Idempotent (dedup by session_id + tool_use_id).

**`/agent-fitness`** (no args) — runs `python3 daemons/agent-fitness-report.py`. Surfaces:
- Total dispatches (all-time, last 30d, last 7d)
- Per-agent calibration table (Total / Clean / Blocked / Errored / Partial / Ratio)
- Per-agent recent outcome trend (last 10 dispatches encoded as `c7 b1 e0 p0`)
- ⚠ Repeat-blocker callouts (any agent with >=2 blocks in window)
- Top 3 failing (agent, task) pairs

**`/agent-fitness --days 7`** — same as above but windowed to last N days. Useful for "is this agent failing more lately?"

## Computation

Calibration ratio per agent: `clean / (total − errored)`. The denominator excludes hard errors (infrastructure/tool failures) and only counts agent-level outcomes.

Trend signal: any agent with >=2 blocks in the window surfaces a repeat-blocker callout. The classifier was hardened in v0.5.1 to catch real Lyra-style block patterns ("BLOCKED:", "are denied", "blocker-found" etc).

## When to run

- After major sessions where multiple sub-agents fired (today S30d had ~7 dispatches)
- Periodically (weekly?) to spot trends
- Before relying on a sub-agent for something heavy ("am I about to dispatch an agent that's been failing?")

## What it does NOT do

- Does not auto-reroute dispatches based on calibration. Surfaces data; principal decides.
- Does not LLM-classify failures — heuristic only (keyword matching on result content).
- Does not pool across sessions for cluster analysis. Future v0.5.x.
- Does not include task-type clustering. All tasks pooled per agent.

## Cross-links

- [[concepts/Somatic v0.5.0 Agent Fitness]] — spec
- [[memory/AGENT_FITNESS]] — the data
- [[concepts/Somatic Roadmap]]
- [[memory/TRUST_DECAY]] — sibling claim → outcome ledger