- noindexStaticRoutes: requiresAuth, noindex/none seo.robots and static
pages under seo.noindexRoutes, i18n copies included, never patterns or
the layer's HTML sitemap pages (G1, gap-2 contract)
- #seo-routes exports noindexPaths; routeReportBody(paths, noindex) answers
{routes, noindex} with the same limits and keeps the JSON body within the
older plugin's 4,113,024 bytes, dropping noindex entries first
- smoke grammar noindex= and lacksnoindex=; README carries the contract
- the module writes #seo-routes (static paths and route patterns) from the
resolved pages; options seo.routeReport, seo.pagination and
seo.htmlSitemap reach the public runtime config
- seo-route-report: POST /registry/routes once per process with the
route-report token, one retry after 60 s on failure, nothing without a
token, with the layer off or with routeReport false
- seo-drift: one "[vue-seo-layer] drift:" warning per mismatch between
the CMS's site answer (URL patterns, pagination, HTML sitemap paths)
and the build
- GET /api/__seo__/site and useSeoSite()
- smoke grammar routereport and log, fixture registry route, drift run