Project: DORA Metrics
Vision
Meaningful, tiered DORA metrics across the pal-e platform. Measure what matters (production repos), ignore what doesn't (playgrounds), and surface it all in Grafana with actionable drill-downs.
User Stories
| Story | As a... | I want... | So that... |
|---|---|---|---|
| Platform health at a glance | Platform operator | Tier 1 DORA composite in Grafana | I know if production pipelines are healthy without digging |
| Per-app drill-down | Platform operator | One Grafana row per Tier 1 repo with DF/LT/CFR/MTTR | I can identify which app is dragging a metric down |
| Noise-free metrics | Platform operator | Playground repos excluded from DORA dashboards | Composite scores reflect real production health |
| Portfolio evidence | Job seeker | Documented DORA standing with data lineage | I can demonstrate platform maturity to employers |
Architecture
Two independent paths share the same APIs. Action path: Agents use forgejo-mcp and woodpecker-mcp to create issues, merge PRs, trigger pipelines — these are the events DORA measures. Measurement path: pal-e-dora-exporter independently scrapes Forgejo + Woodpecker APIs, emits Prometheus metrics (
dora_pr_merges_total, dora_pr_lead_time_seconds_bucket, dora_deployments_total, dora_deployment_last_success_timestamp), and Grafana renders the dashboard. The two paths are parallel consumers — forgejo-mcp is not in the observability pipeline.Board
board-dora-metrics — DORA Metrics Board
Status
2026-06-13 (Wave 2 complete): 9 of 11 board items done, 35pts shipped across 5 repos in one session. Wave 1: exporter tier labels (PR #3), forgejo-mcp DORA tools (PR #31), ArgoCD spike (PR #8), color thresholds (PR #396 after CI fix). Wave 2: Grafana tier variable (PR #432, critical path done), MTTR failure detection (PR #9), pal-e-services CI pipeline (PR #118), woodpecker DORA tools (PR #5). Remaining: #428 drill-downs (3pts, unblocked), #430 trend panels (2pts, may overlap PR #396). Also fixed 3 missing Woodpecker secrets and stale basic auth in update-docs skill.
2026-05-29: Foundation complete. DORA exporter live in Prometheus, Grafana dashboard exists, all Forgejo repos scraped.
2026-05-29: Foundation complete. DORA exporter live in Prometheus, Grafana dashboard exists, all Forgejo repos scraped.
Milestones
- 2026-03-01 — Manual DORA baseline (completed)
- 2026-03-14 — DORA exporter live + Grafana dashboard + re-baseline with Prometheus data (completed)
- Next — Tier labels in exporter → Grafana filtering → per-app drill-downs
Repos
| Repo | Role | Path | Status |
|---|---|---|---|
| <a href="https://forgejo.tail5b443a.ts.net/ldraney/forgejo-mcp">forgejo-mcp</a> | MCP tools + DORA docs (architecture, metrics, tiering, dashboard) | Action + Docs | Active |
| <a href="https://forgejo.tail5b443a.ts.net/ldraney/pal-e-dora-exporter">pal-e-dora-exporter</a> | Python Prometheus exporter — polls Woodpecker + Forgejo APIs | Measurement | Active |
| <a href="https://forgejo.tail5b443a.ts.net/ldraney/pal-e-platform">pal-e-platform</a> | Terraform: exporter deployment, ServiceMonitor, Grafana dashboard ConfigMap | Measurement | Active |
| <a href="https://forgejo.tail5b443a.ts.net/forgejo_admin/woodpecker-mcp">woodpecker-mcp</a> | MCP tools for Woodpecker CI — pipeline triggers the exporter measures | Action | Active |
| <a href="https://forgejo.tail5b443a.ts.net/ldraney/pal-e-services">pal-e-services</a> | Service onboarding IaC — no CI pipeline, CFR gap | Data gap | Active |
| <a href="https://forgejo.tail5b443a.ts.net/ldraney/pal-e-deployments">pal-e-deployments</a> | Kustomize overlays — ArgoCD not instrumented, deployment tracking gap | Data gap | Active |
| <s><a href="https://forgejo.tail5b443a.ts.net/ldraney/DORA">DORA</a></s> | <s>Documentation</s> — absorbed into forgejo-mcp/docs/ (PR #30) | — | Archived |