Dependency version drift

Dependency constraints have drifted apart enough that the package manager cannot compute a valid install plan.

dependency-drift medium confidence build

Matched signals

  • conflicting requirements
  • dependency conflict
  • version conflict
  • incompatible versions
  • requires a different version
  • error: there is a conflict
  • failed to resolve dependencies
  • dependency resolution failed

Dependency version drift

What this failure means

Dependency constraints have drifted apart enough that the package manager cannot compute a valid install plan.

Symptoms

Faultline looks for one or more of these log fragments:

conflicting requirements
dependency conflict
version conflict
incompatible versions
requires a different version
error: there is a conflict
failed to resolve dependencies
dependency resolution failed

Diagnosis

Two or more packages now require incompatible versions of a shared dependency, so resolution fails before installation can begin.

Fix steps

  1. Re-run dependency resolution from a clean cache or clean environment to confirm the conflict is reproducible.
  2. Inspect the dependency tree with the native tool, such as npm ls, pipdeptree, bundle viz, or go mod graph.
  3. Regenerate the lockfile with the team-standard tool and version, then commit the result instead of hand-editing generated files.
  4. Pin, upgrade, or replace the conflicting dependency pair so top-level constraints agree on a compatible range.
  5. If the conflict appears only in CI, align the runtime or package manager version with local development before changing dependency constraints.

Validation

  • Re-run dependency resolution from a clean environment.
  • Confirm the lockfile and install step complete without version conflicts.

Why it matters

Version drift tends to accumulate silently until an unrelated update tips the resolver into an impossible state. At that point the breakage often lands far from the original change that caused the incompatibility.

Prevention

  • Use a lockfile for all projects and regenerate it only through one canonical toolchain version.
  • Update related dependency families together.
  • Run a dependency resolution check in CI on every manifest or lockfile change.
  • Avoid manual edits to generated lockfiles.

Try it locally

npm ls
pipdeptree
bundle viz
go mod graph
npm ls
pipdeptree
bundle viz
go mod graph

How Faultline detects it

Use faultline explain dependency-drift to see the full playbook.

faultline analyze build.log
faultline explain dependency-drift

Generated from playbooks/bundled/log/build/dependency-drift.yaml. Do not edit directly.

Try it on your own failed log

$ faultline analyze failed.log
Want this across every CI run? Faultline Teams tracks recurring failures across all your repos and surfaces patterns in a shared dashboard.