Before/after check · Playbook
The verdict model — and why the split matters
snapatu returns one of three verdicts, and the boundary between them is the most important design decision in the tool.
| Verdict | Exit | Means |
|---|---|---|
PASS |
0 | Nothing detectable changed. |
REVIEW |
2 | Things changed. A human should look. This is the normal result for an intentional edit. |
FAIL |
1 | The page is worse than before. |
Why not just “changed / unchanged”
Because a tool that flags your intentional copy edit with the same red as a 500 error trains people to ignore it. Within a week nobody reads the output, and the safety net is gone.
So FAIL is reserved for a page that regressed:
- HTTP status ≥ 400 or unreachable — the page errors now.
- A newly introduced redirect (was 2xx, now 3xx) — the URL silently moved.
- Newly broken links — a link that returned OK before and doesn’t now.
Everything else is REVIEW: title changed, meta description changed, canonical changed, h1
changed, copy changed. Those are usually what you meant to do — the report’s job is to show
you precisely what moved so you can confirm it was intentional.
The cases this is designed to catch
The failure mode for a small WordPress edit isn’t usually “the page is blank.” It’s quieter:
- Editing a page in the builder blanks the meta description the SEO plugin had set.
- A page duplicated from another one keeps the original’s canonical, deindexing the new one.
- A find-and-replace across content changes more copy than intended three sections down.
- A link is retyped with a typo, or points at a page that was deleted in the same ticket.
- The title gains or loses the brand suffix.
- og:image is dropped, so the social preview breaks.
None of these are visible in a screenshot. All of them are caught here.
What a REVIEW should look like when everything went right
REVIEW — https://client.com/services
• copy changed (+12/−4 words)
One line, matching the edit you actually made. If REVIEW lists things you didn’t touch —
canonical, robots, links you never edited — that’s your signal that the CMS did something on
your behalf.
Dynamic content
Rotating testimonials, a footer year, “posted 3 hours ago” — these produce copy-change noise on
every run. That’s honest rather than wrong: the diff shows you it was the testimonial, and you
move on. If a page is unusable because of it, --no-links and reading only the metadata table
is a reasonable fallback, or compare the two snapshots’ snapshot.json directly.