A breaking change without a migration guide forces every existing user to diff the changelog, read source code, and guess at the new equivalent. A CHANGELOG entry that says 'BREAKING: removed fetchData()' with no explanation of what replaced it is effectively a notice to abandon the project. For libraries and SDKs, major version bumps without migration guides directly translate to production outages when users upgrade: the old code fails, the new code is unknown, and the documentation provides no bridge. iso-25010:2011 analysability requires that version transitions be documentable without source inspection.
High because missing migration guides force users to discover breaking changes at runtime rather than upgrade time, turning routine version bumps into production incidents for every downstream integrator.
Create a migration guide for each major version in docs/migration/ or UPGRADING.md, with before/after code for every breaking change:
# Migrating from v2 to v3
## Breaking Changes
### `fetchData()` renamed to `query()`
**Before (v2):**
```ts
const data = await client.fetchData('users')
After (v3):
const data = await client.query('users', { format: 'json' })
The format parameter is now required.
Every breaking change must have its own before/after section. Link the migration guide from both CHANGELOG.md and the docs navigation. A changelog that names a removed API without showing the replacement fails this check.
ID: developer-documentation.maintenance.migration-guides
Severity: high
What to look for: If the project has had major version bumps (1.x to 2.x, etc.), check whether migration guides exist explaining breaking changes and how to upgrade. Look in CHANGELOG.md, docs/migration/ directory, or UPGRADING.md. Migration guides should list each breaking change with before/after code examples. Count all instances found and enumerate each.
Pass criteria: Every major version bump has a migration guide listing breaking changes, removed APIs, renamed methods, and configuration changes. Each breaking change shows the old pattern and the new pattern. The guide is linked from CHANGELOG.md or the docs navigation. At least 1 implementation must be confirmed.
Fail criteria: Major version bumps exist but no migration guides are available, or migration guides mention breaking changes without explaining how to update code.
Skip (N/A) when: The project has never had a major version bump (still on 0.x or 1.x with no breaking changes).
Detail on fail: Example: "Project is on v3.0.0 but no migration guide exists for v1->v2 or v2->v3 upgrades" or "CHANGELOG.md lists 'BREAKING: removed fetchData()' but doesn't explain what replaced it"
Remediation: Create a migration guide for each major version:
# Migrating from v2 to v3
## Breaking Changes
### `fetchData()` replaced by `query()`
**Before (v2):**
```ts
const data = await client.fetchData('users')
After (v3):
const data = await client.query('users', { format: 'json' })
The format parameter is now required.