KPIs & Measuring Success
What gets measured gets improved. But we measure outcomes, not activity. No tracking "lines of code" or "hours logged." Here's what we actually care about:
- Cycle Time — Time from
stage::spectostage::ship. Target: <10 days for size:😒, <20 days for size::m. Measured directly from GitLab label timestamps. - Spec Approval Rate — % of specs approved on first review (no rewrite needed). Target: >70%. Low rate = functional consultants need more training or templates need refinement.
- Test Coverage — Reported by CI/CD per repo. Target: >70% for Tier Red, >50% for Tier Yellow. Tracked in pipeline badges on the project README.
- MR Merge Time — Time from MR creation to merge. Target: <48 hours. Long MR times = review bottleneck. Address by distributing review load.
- Escape Rate — Bugs found in production per cycle. Target: trending downward. If escape rate rises, investigate: spec quality? Test coverage? Review rigor?
- AI Adoption — % of issues with
ai::labels. Target: >60% within 3 months. Tracks whether the team is actually using AI, not just talking about it.
Most KPIs are observable directly from GitLab's built-in analytics (issue boards, milestone burndowns, MR analytics) — no additional dashboards needed. The one exception is agent latency: run logs land in the gitignored .spexso/observability/runs/ directory, not GitLab, so run npx spexso observe report for a deterministic breakdown of wall clock, subagent hops, and test runs on the latest session.