Teams oscillate between “Google is broken” and “our CMS is fine” when URL inspection tells two stories. The useful frame is parity: does the rendered HTML your crawler sees match what Search Console’s live test sees for canonicals, meta robots, and primary content?
Build a short QA loop: sample URLs by template, compare status codes and canonical tags in crawl snapshots vs. live tests, and flag divergence introduced by personalization, geo routing, or AB frameworks. Document template owners so fixes don’t bounce.
When removals or noindex states linger, verify sitemap signals and internal links aren’t re-asserting alternate URLs. Persistent noise usually means inconsistent state, not mysterious penalties.
