Change coupling

Codebase

What it measures

Pairs of files that tend to change together in the same PR — the top 50 by co-change count across merged PRs.

Why it matters

Files that always change together often hide a coupling worth knowing about — a missing abstraction, a leaky boundary, or a hidden dependency.

How to read it

  • High co-change counts suggest the two files are effectively one unit of change.
  • Very wide PRs (beyond maxFilesPerPr) are skipped so a single sprawling PR can't fabricate coupling.
  • Expected source↔test pairs (one side test-flavored, matching basenames) are tagged in the full list and kept out of the chart — surprising pairs are the signal.

Anti-blame

Coupling is a property of the code's file pairs, never of contributors.

Common misreads

  • A file co-changing with its own test is healthy coupling, not a smell — that is why expected pairs stay out of the chart.
  • A missing source↔test pair is not a defect signal; it only means the two files never changed in the same PR window.