Developer Composite Score
While commit scores measure individual contributions, the Developer Composite Score provides a holistic view of a contributor's overall performance over time. It combines six weighted dimensions into a single 0–10 score.
Why a Composite Score?
Individual commit scores are useful but noisy. A developer might have a few high-scoring commits surrounded by low-scoring maintenance work. The composite score smooths out this variance and rewards consistency, growth, and good practices — not just big-bang commits.
The Formula
Where each dimension
| Dimension | Weight | What It Measures |
|---|---|---|
| Average Score | 0.30 | Mean commit score across the period |
| Weighted Impact | 0.25 | Recent commits count more (recency-weighted) |
| Consistency | 0.15 | How stable are scores week-to-week? |
| Quality Ratio | 0.15 | Percentage of commits with test coverage |
| Complexity Trend | 0.10 | Is the developer tackling increasingly complex work? |
| Volume | 0.05 | Commit count (minimal weight, intentionally low) |
Why is volume only 5%?
Volume (commit count) is intentionally the lowest-weighted dimension. We want to avoid incentivizing commit inflation. A developer who ships 5 high-quality, well-tested commits per week should score higher than one who ships 50 trivial changes.
Dimension Details
Average Score (30%)
The arithmetic mean of all commit scores in the period. Normalized against a theoretical max of 10.0.
Weighted Impact (25%)
A recency-weighted sum that gives more weight to recent work. Commits from today count at full weight; commits from 90 days ago count at 10% weight.
The minimum recency weight is 0.1 — even 90+ day old commits contribute slightly, preventing discontinuities.
Consistency (15%)
Measures how stable a developer's scores are across weeks using the coefficient of variation (CV):
A developer who scores 6.0 every week (CV ≈ 0) gets a perfect consistency score. A developer who alternates between 2.0 and 9.0 (high CV) gets a low consistency score.
Why reward consistency?
Consistent output indicates reliable engineering. Erratic scores often signal context-switching, unclear requirements, or work that's being split ineffectively. Consistency rewards sustainable productivity.
Quality Ratio (15%)
The fraction of commits that include test coverage (the has_tests quality signal):
This is intentionally simple — it measures the habit of writing tests, not the quality of those tests.
Complexity Trend (10%)
Uses linear regression on complexity values over time to determine if a developer is tackling increasingly complex work:
| Slope | Trend Score | Interpretation |
|---|---|---|
| -0.25 | 0.0 | Declining complexity (clamped) |
| 0.0 | 0.5 | Flat — stable complexity |
| +0.25 | 1.0 | Growing complexity (capped) |
A flat trend (slope = 0) gives 0.5 — the midpoint. Growing complexity trends upward, declining trends downward.
Volume (5%)
Commit count, normalized against a reasonable maximum. This dimension has the lowest weight by design.
Score Distribution
With these weights, here's what different profiles look like:
| Profile | Avg Score | Impact | Consistency | Quality | Trend | Volume | Composite |
|---|---|---|---|---|---|---|---|
| Senior IC | 7.0 | 7.5 | 0.85 | 0.80 | 0.60 | 0.40 | 6.7 |
| Productive junior | 4.0 | 3.5 | 0.70 | 0.50 | 0.80 | 0.90 | 4.4 |
| Consistent mid-level | 5.5 | 5.0 | 0.95 | 0.90 | 0.50 | 0.60 | 5.8 |
| Erratic senior | 8.0 | 7.0 | 0.30 | 0.40 | 0.40 | 0.30 | 5.5 |
Notice the erratic senior: despite high raw scores, the low consistency and quality ratio pull the composite down significantly.
Slop Metrics
AI slop metrics are tracked alongside the composite score but are not included in the formula. They are informational:
| Metric | Description |
|---|---|
avg_slop | Mean slop index across commits |
slop_rate | Percentage of commits with slop index > 0.4 |
slop_trend | Directional trend of slop index over time |
These are displayed separately in the contributor profile for manager awareness, but don't affect scoring.
