You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A barrel that changes in almost every commit (seen on a real monorepo: 74 of 97 commits) co-changes with many different files, but with none of them often enough to cross the coupling thresholds. inspect then reports "no change coupling above the thresholds", although the file is a hub that every change passes through — a strong modularization signal.
Goal
The report exposes a file's co-change breadth (how many distinct files it changed together with in the window), so hubs are visible in inspect, the JSON, and the treemap panel even when no single partner is strong.
Acceptance criteria
FileStats gains an additive field (schemaVersion stays 1) with the number of distinct co-changed files, documented in packages/engine/src/report/report.ts and GLOSSARY.md.
A file whose breadth is in the top few percent gets a reasons line such as "changes together with 41 different files".
An engine test with a hand-built history proves the count, including that commits above maxCommitFiles are ignored.
Related: #15 adds the module-level view of the same question (cohesion and cross-module coupling); hub files are its file-level counterpart. Roadmap: #20.
Activity
typeweaver commentedon Sep 30, 2026
Related: #15 adds the module-level view of the same question (cohesion and cross-module coupling); hub files are its file-level counterpart. Roadmap: #20.