What Is Repository Impact Analysis and How Do You Trace Dependency Changes to Affected Code?
Repository impact analysis is the step between "a dependency changed" and "here is the code that needs to change." It maps an external change — an API move, an SDK update, a deprecation, a provider change — to the specific call sites in your repository that depend on the old behavior. You need it when a dependency you don't control ships a change, because your code didn't change but everything under it did. The output is not a fix; it's a scoped list of affected code plus the evidence to justify each item.
Impact analysis vs. monitoring vs. repair
These three get conflated, and the confusion causes teams to either over-trust a dashboard or skip straight to a patch they can't verify.
| Stage | Question it answers | Output | What it does not do |
|---|---|---|---|
| Dependency monitoring | Did something change upstream? | A release, version bump, or deprecation notice | Tell you what in your repo is affected |
| Repository impact analysis | Which code does this change touch? | Affected call sites, blast radius, supporting evidence | Produce the fix |
| Automated repair | What is the smallest correct fix? | A draft PR with a focused patch | Decide whether to merge — your CI and review do |
Monitoring without impact analysis produces alerts nobody acts on. Repair without impact analysis produces patches you can't defend in review. Impact analysis is the layer that makes both useful.
How to trace a dependency change to affected code
The workflow below follows the sequence Since.dev describes: connect a repository, see what changed, find the affected code, review a supported repair. The first three steps are impact analysis proper.
1. Detect the change and pin it to a version
You need the change as a discrete, dated fact, not a vague sense that something moved. In Since.dev's illustrative example, a scheduled check finds a release and its official migration guide:
- Previously observed:
19.0.0at 09:00 - Latest observed:
20.0.0at 10:15 - Migration guide:
send→messages.create
The version pair and the timestamp are what make the finding checkable later. Without them you're reasoning about "the latest SDK," which is a moving target.
2. Locate the call sites that use the changed surface
This is the core of impact analysis: connecting a documented change to the calls that use it. For an endpoint move like /v1/messages → /v2/messages, you're looking for every place your code references the old path or the old method name — for example src/integrations/messages.ts.
Two things make this tractable rather than a grep exercise:
- Typed changes. When the change is expressed as a typed difference (a method renamed, a field removed, a signature changed), you can match it against your code's usage rather than guessing from prose release notes.
- A documented source. A change tied to an official migration guide gives you a defined before/after to search for. An undocumented behavior shift gives you nothing to match on.
3. Assess the blast radius
Not every affected call site carries the same risk. Sort what you found:
- Direct callers of the changed API — these break or behave differently.
- Transitive users — code that consumes the output of a direct caller, which may need adjustment even though it never touches the dependency.
- Test and fixture code — often the largest count and the lowest risk, but it will fail CI if ignored.
The blast radius is what tells you whether this is a one-line patch or a migration with a plan.
4. Keep the evidence with the finding
Impact analysis that can't be re-checked is just an assertion. The evidence to retain:
- The version pair (previously observed → latest observed) and the observation time.
- The upstream source — the migration guide, changelog, or contract that documents the change.
- The observation's health — when it was recorded and whether the source is still valid.
Since.dev's verification model reads recorded evidence rather than performing a fresh fetch, which means a check returns the observation as it was captured, not a live re-query. That distinction matters: it tells you whether you're looking at current world state or a snapshot, and it lets an agent check its assumptions against the latest recorded observation before acting.
Common failure points
Stale observations. If the recorded version is 19.0.0 but upstream is at 20.0.0, your impact analysis is describing a world that no longer exists. Always confirm the observation time against the change you're analyzing.
Untyped changes. A prose release note saying "improved messaging" gives you nothing to match against your code. Impact analysis degrades to manual reading, and false negatives (missed call sites) become likely.
False positives. A rename that matches a string in an unrelated file, or a deprecated endpoint still used intentionally behind a feature flag, will show up as affected when it isn't. This is why the output is a review list, not an automatic edit — the affected-code list is a hypothesis your review confirms or rejects.
Confusing "affected" with "broken." A deprecation notice means the code still works today. Impact analysis tells you what will need attention, which is different from what is failing now.
How impact analysis feeds into a repair
Once you have the affected call sites and the evidence, the repair step is small by design: a focused patch that traces the supported upstream change to the affected code, with the upstream evidence staying attached to the repair. In Since.dev's workflow, that becomes a draft PR that runs your existing CI, and revisions happen on the same PR — you request a revision and review the updated patch.
The division of labor is the point: Since.dev prepares supported patches and draft PRs, tests run in your repository, and your CI makes the final call. Impact analysis is what makes that handoff reviewable instead of a black box — you can see which code was flagged, why, and against which version.
What to check before you trust an impact analysis
- Is the observed version current, and when was it recorded?
- Is the change backed by a documented source (migration guide, contract, changelog)?
- Are the affected call sites listed with file-level specificity?
- Does the blast radius distinguish direct callers from transitive and test code?
- Can you re-run the check and get the same evidence?
If all five hold, you have an impact analysis you can act on. If any are missing, you have a notification — useful, but not yet a decision.