Parity answers one question per path: does this URL still serve content the visitor came for.
The rule to agree before the build
For a kept path, four things have to hold. The URL resolves in one hop, and
the page has one h1. The main content answers the same questions, and the
canonical points at the new URL.
For a retired path, one thing has to hold. The redirect lands on a page that answers the query that used to land there.
A filled parity report
Cedar and Slate Interiors, after the rebuild described in the migration article.
paths checked: 131
kept: 84 passing 84
moved: 27 passing 26, failing 1
merged: 9 passing 9
retired: 8 passing 7, failing 1
held: 3 out of scope, tracked
failures, with detail
1. /project-bathroom-oak
expected: one hop to /work/bathroom-oak
actual: two hops, via /work, which now redirects
fix: point the old path at the final url
2. /campaign/spring-2023
expected: a relevant service page
actual: redirect to the home page
fix: point it at /services/joinery, which answers the query
spot checks, ten paths read by a person
- the kitchens page still names the same three finishes
- the pricing page still shows the same four packages
- the contact page keeps the phone number and the map
Three failures that look like success
A 200 on the wrong page. The URL resolves, and the content is a generic template. The status says nothing about whether the page answers anything.
A redirect to the home page. Common for retired campaign paths, and it loses the visitor and the query.
Parity on a thin page. Where the old page answered nothing, matching it is not an achievement. That path belongs in the merge or retire list.
The check, ready to run
1. read the frozen inventory
2. fetch every path and record status, redirect chain and final url
3. compare the h1 and the title against the recorded old values
4. read ten pages by hand, chosen at random, plus every failure
5. write the two failure lists: mechanical and editorial
6. fix mechanical, decide editorial, then re-run the fetch
Acceptance: parity is met when
- every path in the inventory has a recorded result
- no redirect chain is longer than one hop
- every page has exactly one
h1 - every kept and moved page answers the same questions as before
- every failure has a named fix and an owner
- the held paths are listed, with the reason they are held
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| A path 404s that was in the map | The map was frozen before the last path was added | Rebuild from the union list |
| Every retired path goes home | One rule was applied to all of them | Give each retire path a target |
| Canonicals point at the old host | The new build kept the old site value |
Set the origin, then rebuild |
| The client says a page looks different | Content parity, not design parity | Compare the questions the page answers |
| The fetch passes and the query drops | Redirects work, content does not | Read the pages, not the statuses |
Limits
Parity reduces a reason for a ranking to fall. It does not promise one carries over. It does not fix a page that answered nothing before the rebuild.