Skip to main content
ArcSight

Architecture problems / Change Impact

What breaks if I change this? — change impact analysis before merge

Change impact analysis answers the question every reviewer asks: what breaks if I change this file? It traces modules, tests, and subsystems affected through the dependency graph — before the change lands on main.

Change impact is not blast radius alone — it is break paths: ordered chains showing how your edit reaches modules you did not touch in the diff.

How ArcSight detects this

Many visitors land here from search — not the homepage. Run this workflow locally on your repo.

  1. 1arc impact

    The homepage question: what breaks if you change this file? Blast radius and break paths before merge. Example path from Next.js proof.

    arc impact src/server/config-sharedDocs →
  2. 2arc hotspots

    Rank modules by fan-in and downstream reach across the repo.

    arc hotspots
  3. 3arc explain

    Inspect src/server/config-shared — hub role, dependents, and path narrative.

    arc explain src/server/config-shared
  4. 4arc watchPro

    Pro: keep architecture clean after merge so this problem does not return.

    arc watchDocs →
  • Run arc impact on every file in the PR diff — structured blast radius and break paths.
  • Compare impact output across alternative refactor targets before choosing one.
  • Pair impact with arc watch (Pro) to catch regressions after the merge.

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.

All problems · Repository proofs · Install

Why it matters

This is the homepage question in graph form. Most production incidents start as “small” diffs. Change impact surfaces break paths and downstream reach so you know what to retest — not what you hope you covered.

What it looks like in codebases

  • A one-line type change that forces wide rebuilds across packages.
  • A utility rename that breaks transitive imports three hops away.
  • A refactor that passes local tests but misses integration paths arc impact would list.

Real repository evidence5 proofs

Every row below comes from an ArcSight analysis snapshot — not a template or keyword page.

Next.js

Change impact signal: break path through src/server/config-shared → src/server/request-meta → src/server/request/params. Example break path: src/server/config-shared → src/server/request-meta → src/server/request/params. Run arc impact on your diff before merge.

ArcSight traced 1,942 modules and 4,489 edges in Next.js (packages/next).

  • src/server/config-shared → src/server/request-meta → src/server/request/params3 hops· break path
  • src/types → src/shared/lib/utils → src/server/app-render3 hops· break path
  • src/server/config-sharedblast radius 423· fan-in 46
  • src/typesblast radius 423· fan-in 21

Inspect first: src/server/config-shared · src/types

Full repository proof: /repositories/nextjs/

Payload CMS

Change impact signal: src/errors/APIError (blast radius 495). A change at src/errors/APIError traces blast radius 495 downstream. Run arc impact on your diff before merge.

ArcSight traced 627 modules and 2,704 edges in Payload CMS (packages/payload).

  • src/errors/APIErrorblast radius 495· fan-in 41
  • src/utilities/isNumberblast radius 477· fan-in 14 · CRITICAL
  • src/versions/typesblast radius 477· fan-in 16
  • srcblast radius 476· fan-in 154 · CRITICAL
  • src/config/typesblast radius 476· fan-in 142 · CRITICAL
  • src/typesblast radius 476· fan-in 225 · CRITICAL

Inspect first: src/errors/APIError · src/utilities/isNumber · src/versions/types

Full repository proof: /repositories/payload/

Prisma

Change impact signal: src/runtime/core/engines/common/types/Transaction (blast radius 47). A change at src/runtime/core/engines/common/types/Transaction traces blast radius 47 downstream. Run arc impact on your diff before merge.

ArcSight traced 166 modules and 390 edges in Prisma (packages/client).

  • src/runtime/core/engines/common/types/Transactionblast radius 47· fan-in 8
  • src/runtime/core/engines/common/Engineblast radius 45· fan-in 9
  • src/runtime/core/types/exported/Publicblast radius 42· fan-in 6 · CRITICAL
  • src/runtime/core/types/exported/Resultblast radius 42· fan-in 4 · CRITICAL
  • src/runtime/core/types/exported/Utilsblast radius 42· fan-in 7 · CRITICAL
  • src/runtime/core/errorRendering/baseblast radius 39· fan-in 12 · CRITICAL
  • src/runtime/core/types/exported/JsApiblast radius 38· fan-in 16 · CRITICAL
  • src/runtime/core/types/exported/TypedSqlblast radius 37· fan-in 6 · CRITICAL

Inspect first: src/runtime/core/engines/common/types/Transaction · src/runtime/core/engines/common/Engine · src/runtime/core/types/exported/Public

Full repository proof: /repositories/prisma/

Directus

Change impact signal: src/utils/get-config-from-env (blast radius 435). A change at src/utils/get-config-from-env traces blast radius 435 downstream. Run arc impact on your diff before merge.

ArcSight traced 789 modules and 2,287 edges in Directus (api).

  • src/utils/get-config-from-envblast radius 435· fan-in 16
  • src/busblast radius 401· fan-in 15
  • src/loggerblast radius 396· fan-in 104 · CRITICAL
  • src/utils/get-millisecondsblast radius 354· fan-in 14 · CRITICAL
  • src/permissions/modules/process-ast/typesblast radius 350· fan-in 11 · CRITICAL
  • src/constantsblast radius 345· fan-in 34 · CRITICAL
  • src/utils/get-default-index-nameblast radius 341· fan-in 9 · MEDIUM
  • src/cacheblast radius 340· fan-in 25 · CRITICAL

Inspect first: src/utils/get-config-from-env · src/bus · src/logger

Full repository proof: /repositories/directus/

Nx

Change impact signal: src/utils/fileutils (blast radius 478). A change at src/utils/fileutils traces blast radius 478 downstream. Run arc impact on your diff before merge.

ArcSight traced 589 modules and 2,843 edges in Nx (packages/nx).

  • src/utils/fileutilsblast radius 478· fan-in 71
  • src/utils/workspace-rootblast radius 476· fan-in 112
  • src/utils/versionsblast radius 467· fan-in 21 · CRITICAL
  • src/nativeblast radius 465· fan-in 64 · CRITICAL
  • src/utils/pathblast radius 454· fan-in 26 · CRITICAL
  • src/config/task-graphblast radius 453· fan-in 38 · CRITICAL
  • src/config/nx-jsonblast radius 452· fan-in 123 · CRITICAL

Inspect first: src/utils/fileutils · src/utils/workspace-root · src/utils/versions

Full repository proof: /repositories/nx/

What to inspect first

  • Break paths from arc impact — ordered chains of modules between your edit and downstream consumers.
  • Modules with the largest blast radius in the change surface.
  • Cross-package edges: does impact cross boundaries your team does not own?

What to do next

  • Hold merge when impact paths cross untested subsystems.
  • Stage refactors to shrink impact incrementally — re-run arc impact after each step.
  • Add impact checks to CI for hub modules on every PR that touches them.

Install · Validation · Repository proofs