Architecture problems / Dependency Sprawl
Draft
Tier 2 problem — exemplar mapping pending.
What is dependency sprawl — and when does the graph outpace mental models?
Dependency sprawl is uncontrolled growth in module count, edge count, and cross-package imports — where the graph is larger than the team’s shared mental model of the system.
How ArcSight detects this
Many visitors land here from search — not the homepage. Run this workflow locally on your repo.
- 1arc impact
Run on the file you plan to change. Surfaces blast radius and break paths.
arc impact src/indexDocs → - 2arc hotspots
Rank modules by fan-in and downstream reach across the repo.
arc hotspots - 3arc explain
Inspect src/index — hub role, dependents, and path narrative.
arc explain src/index - 4arc watchPro
Pro: keep architecture clean after merge so this problem does not return.
arc watchDocs →
- Rising edge-to-module ratio on repository proofs over time.
- Hotspots with fan-in spread across many low-fan-in consumers.
- Impact output listing break paths through modules the author did not know existed.
Found the issue?
Use arc impact before you change code — structured blast radius and break paths before merge. Use arc watch (Pro) to stop the problem from returning after you fix it.
Why it matters
Sprawl makes impact analysis essential: no reviewer can hold the full graph in memory. Without graph evidence, every merge is a guess about downstream reach.
What it looks like in codebases
- Monorepos where edge count grows faster than module boundaries.
- Packages that import peer packages for one helper function.
- Flat util folders that every new feature links into by default.
Real repository evidence
No indexed exemplar yet. See Next.js repository proof for the current flagship analysis while this problem page is in draft.
What to inspect first
- Edge count and module count on the subsystem you are extending.
- Whether new imports create shortcuts across package boundaries.
- Gravity centers that accumulate edges without explicit contracts.
What to do next
- Add local boundaries before adding cross-package imports.
- Run arc impact on every new public export.
- Use arc watch (Pro) to detect sprawl regressions after merge.