Illustrative example with anonymized data (author
jnovak, repowebapp). Shows the target structure for interpreting the raw outputsample-raw.md.
Author: jnovak · Window: 2024-01 → 2026-01 (2 years) · Repos: 12 local, deep analysis over webapp (~1200 commits)
Standards: DORA (Change-Failure proxy) · SPACE (Activity, well-being) · CodeScene (rework, hotspots, coupling, ownership) · MS Research (relative churn)
Metrics are proxies, not truth. Most trustworthy: commit throughput, rework %, function CCN, ownership. Indicative (skewed by generated code / commit-message discipline): line sums, corr %.
Stable volume, small batches, declining rework and a rising test habit — a healthy profile. Watch one knowledge concentration.
| Dimension | Verdict | Trend |
|---|---|---|
| Work volume (throughput) | 🟢 stable | ~40–53 commits/month |
| Batch size | 🟢 healthy | median ~24–31 lines |
| First-pass quality (rework) | 🟢 better | 31 % → 24 % |
| Test co-change | 🟢 improving | 49 % → 66 % |
| Production stability (hotfix/revert) | 🟢 calm | ~0–1 hotfix/month, few reverts |
| Defect hotspots | 🟡 one dominant | Controller/Admin/Order.php |
| Functional complexity (CCN/Δcx) | 🟢 reasonable | avg ~8–9, Δcx tapering |
| Complexity hotspots | 🟡 one dominant | Controller/Admin/Order.php |
| Change coupling | 🟡 expected pairs | localization + Cart layers |
| Code-health trend | 🟢 flat | cx/kLOC ~105 → 104 |
| Work rhythm (sustainability) | 🟢 sustainable | off-hours 5–7 %, weekend ~0 % |
| Ownership / bus factor | 🟡 concentration | 41 solo files |
Yearly overview (from the rollup): 2024 → 2025 — rework 30 % → 24 %, test co-change 49 % → 66 %, Δcx +410 → +130 (complexity growth slowing), corrective 34 % → 28 %. Both full years, so no partial-year (*) caveat.
Conclusion: the work is volume-consistent, in small digestible batches, with declining rework and a strengthening test habit — you write things that last. Two things to watch: (1) Controller/Admin/Order.php is both a defect magnet and the most expensive file to maintain — a candidate for breaking up; (2) you hold 41 files practically alone, and you're the last toucher of 58 — bus-factor risk.
Legend: commits = your commits (cross-project, only those touching code) · median/p90 batch = median/90th percentile of churn per commit · big % = share of commits > 400 lines · cpd = commits per active day.
Assessment: 🟢 Volume holds at ~40–53 commits/month, median batch 24–31 lines = small commits (trunk-based ideal), big % only 4–6 %, ~2.6 commits/active-day. The line sum looks higher because of generated code, so trust the median, not the sums.
Legend: rework % = share of churn on code anyone touched within --rework-days (default 14) · churn = add+del on code.
Assessment: 🟢 Declining 31 % → 24 % — the first pass holds up better and better, little rewriting of fresh code.
Legend: prod = commits touching production code · +tests = those that also touch a test · test % = the ratio. Message-independent, so it survives sloppy commit prefixes.
Assessment: 🟢 Rising 51 % → 68 % monthly (49 % → 66 % year over year) — a strengthening habit of shipping tests with code, the cleanest leading indicator of first-pass quality here.
Legend: value = Feature/Refactoring · fix = Fix · hotfix = production fire (DORA Change-Failure) · revert = undo (subset of fix) · corr % = (fix+hotfix)/total.
Assessment: 🟢 corr % ~29–33 % with a value-add majority; hotfixes ~0–1/month and reverts rare (9 over two years) = production stability is good.
Legend: fixes = occurrences of the file in your Fix/Hotfix commits · cx = file complexity.
Assessment: 🟡 Controller/Admin/Order.php (14 fixes, CCN 318) is a clear defect magnet, followed by Service/Payment/Gateway.php (9). High complexity + many fixes = a refactoring priority.
Legend: avg/med/max CCN = cyclomatic complexity of the touched functions (>15 risky, >50 severe) · fn changed = number of touched functions · Δcx = net complexity your commits add vs remove (negative = you simplified).
Assessment: 🟢 avg CCN ~8–9, minimal severe functions (0–1/month). Δcx is positive but tapering (+74 then -12 monthly; +410 → +130 YoY) — you're adding complexity more slowly, with months of net simplification.
Legend: score = touches × cx (change frequency × complexity).
Assessment: 🟡 Controller/Admin/Order.php is by far the most costly (score 18 204), an order of magnitude above the rest. Investing in breaking it up pays off the most.
Legend: degree = how often a pair goes hand in hand (shared / min revs). High = hidden dependency / missing abstraction.
Assessment: 🟡 lang/en.php ↔ lang/cs.php (92 %) — bilingual content is edited by hand, a candidate for a shared source. Controller/Cart.php ↔ Service/Cart.php (78 %) is expected layering. No surprising coupling between unrelated modules.
Legend: cx/kLOC = total complexity per 1000 lines of code, sampled from git-archive snapshots (--health-trend). Flat or falling = the codebase isn't decaying as it grows.
Assessment: 🟢 cx/kLOC is essentially flat (~105.1 → 104.2) while LOC grows — complexity is being added in proportion, not faster. No drift.
Legend: off-h % = outside 8–19 (set via --off-hours) · weekend % = Sat/Sun · longest streak = consecutive days with a commit. Trend > absolute number.
Assessment: 🟢 off-hours 5–7 %, weekends ~0 %, longest streak 7 days = sustainable rhythm, you keep your breaks.
Legend: share = your churn / repo churn (full history), also recency-weighted (fresh churn counts more) · solo = files ≥80 % yours · last = files where you committed most recently (bus-factor risk).
Assessment: 🟡 Share of the repo 18 % (recency-weighted 23 % — your recent work is concentrated), but you hold 41 files solo and are the last toucher of 58. Key territory: Service/Order/StateMachine.php (94 %, still yours), Model/Subscription.php (88 %, but someone else touched it last). For the most critical ones, ensure a second pair of eyes / documentation.
Generated from gitmetry (read-only over git). Raw data: sample-raw.md.