Check the claim, the structure, the behavior, and the release.
1. Define what must change and what must stay fixed.
Write the intended improvement and preservation constraints before generation. For a website, those may include existing URLs, truthful authorship, publication dates, contact behavior, and private-data boundaries. A task brief makes these expectations visible, but does not enforce them.
2. Review the change itself.
Compare source before and after. Read newly added claims. Distinguish an implementation explanation from an outcome that would require measurement. Confirm that the change has not added unrelated collection, tracking, credentials, or external actions.
3. Use checks that target different failures.
A build checks reproducibility. A parser checks markup structure. Link checks inspect destinations. Functional browser tests exercise controls and recovery. Keyboard, narrow-screen, and no-script tests examine access paths. One cannot stand in for all the others, and shared assumptions can still let multiple checks agree on the wrong thing.
4. Make the checker fail on something intentionally wrong.
The reduced fixture provides a small negative control: the parser must reject the extra tag and accept the corrected structure. A checker that reports success on both cannot support this claim. Keep intentionally broken fixtures separate from the files you deploy.
5. Check what visitors actually receive.
A successful local build is not a successful deployment. Check the release that is publicly served. Exact-response matching confirms that the tested files are being delivered at the sampled point in time; it does not verify rankings, inbox arrival, all browser combinations, or future availability.