Investment mix
Delivery & investment
What it measures
The share of merged PRs in each of four MECE investment buckets, tracked weekly: KTLO (bug fixes, dependency updates, ops work), New (net-new customer-facing capability), Improving (refactors, tech-debt paydown, performance), and Productivity (build, CI, tests, docs, tooling). Every PR lands in exactly one bucket.
The panel's headline vital is the Innovation ratio — the share of PRs in the "New" bucket.
Why it matters
Where a team invests its merge-bandwidth shapes what it ships and what it owes. A team that never sees "Improving" may be accumulating technical debt quietly; one stuck almost entirely on "KTLO" has a reliability conversation to have. Investment mix makes the allocation visible so the team can have that conversation deliberately.
How to read it
- Read weeks as a stacked 100% bar — the four buckets always sum to all merged PRs that week.
- The Innovation ratio (New share) is the headline vital; it surfaces on the overview.
- There are no universal target bands — a greenfield product team legitimately skews New; a platform or reliability team legitimately skews KTLO or Improving. Set bands in gitpulse.yml against your own team's intent.
- Trends matter more than any single week — look for sustained shifts, not noise.
- The Improving bucket is an INTENT signal: it captures PRs whose labels or title say refactor, perf, debt, etc. This is different from the Refactor share panel, which is a CODE-SHAPE signal (deletion-heavy PRs). The two can disagree — a PR titled 'refactor' that adds more code than it removes counts as Improving here but not in refactor_share. They measure different things and are complementary, not redundant.
Anti-blame
Common misreads
- A low Innovation ratio is not inherently bad — it depends on team type, product maturity, and the current season. A team paying down years of debt should expect a high Improving share.
- Buckets are heuristic: classification uses PR labels first, then title patterns. A PR with no matching label or title keyword lands in New by default. The buckets are a signal, not ground truth.
- Comparing innovation ratios across teams or repos is rarely meaningful — context differs too much.