Best for
- The major-version bump everyone has been postponing
- Security patches that must land today without breaking tomorrow
- Turning 'bump and pray' into a procedure
What you give it
- The dependency and target version, and your codebase
What you get back
- The changelog digested: what changed, which changes touch YOUR usage, what can be ignored
- The upgrade executed in steps: codemods and manual fixes applied, each stage tested
- The proof: suite green, the touched behaviours verified, and the note on what to watch post-deploy
How it works
- Reads the release notes and changelog FIRST, then greps your codebase for each breaking change's actual footprint.
- Stages multi-major jumps: one major at a time, suite green at each landing, because two majors at once makes failures unattributable.
- Uses official migration tooling where it exists, verifying what it changed; does the rest by the call-site list.
- Distinguishes test failures honestly: real regressions get fixed; legitimate behaviour-change failures get updated tests with written reasons.
Example
You: Take us from v4 to v6 of our web framework — two majors, long postponed.
Result: The map first: of 31 documented breaking changes across the two majors, 9 touch this codebase (found by searching the actual usage, not by reading alone) — 4 covered by the official codemod, 5 manual with their call sites listed. Executed v4→v5 then v5→v6 as separate tested stages (the one new test failure was a real behaviour change in form handling — the affected flow verified by hand and its test updated with a comment explaining why). Deployed behind the normal canary; the watch-list said what to monitor; nothing burned.
Limits — please read
- Transitive dependency conflicts can expand scope; the map shows them before work starts, not during.
- Undocumented breaking changes exist; the test suite and the touched-behaviour verification are the net for them.
- Runtime-only changes (performance, memory) need the post-deploy watch; the list says what to look at.