<?xml version="1.0" encoding="UTF-8"?>
<!-- SEO ISSUE #157: image sitemap entries missing/incomplete -->
<!-- SEO ISSUE #180: video sitemap entries missing -->
<urlset
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
  xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"
>
  <url>
    <loc>http://localhost:3000/</loc>
    <lastmod>2025-03-01</lastmod>
  </url>
  <url>
    <loc>http://localhost:3000/crawl-issues</loc>
    <lastmod>2025-03-15</lastmod>
  </url>
  <url>
    <loc>http://localhost:3000/head-tags</loc>
    <lastmod>2025-03-15</lastmod>
  </url>
  <url>
    <!-- SEO ISSUE #172: trailing slash here but canonical on page has none -->
    <loc>http://localhost:3000/page-seo-basics/</loc>
    <lastmod>2025-03-15</lastmod>
  </url>
  <url>
    <loc>http://localhost:3000/image-issues</loc>
    <lastmod>2025-03-15</lastmod>
  </url>
  <url>
    <loc>http://localhost:3000/broken-images</loc>
    <lastmod>2026-08-17</lastmod>
  </url>
  <url>
    <loc>http://localhost:3000/security-headers</loc>
    <lastmod>2025-03-15</lastmod>
  </url>
  <url>
    <loc>http://localhost:3000/social-opengraph</loc>
    <lastmod>2025-03-15</lastmod>
  </url>
  <url>
    <loc>http://localhost:3000/structured-data</loc>
    <lastmod>2025-03-15</lastmod>
  </url>
  <url>
    <loc>http://localhost:3000/structured-data-valid</loc>
    <lastmod>2026-08-14</lastmod>
  </url>
  <url>
    <loc>http://localhost:3000/international-seo</loc>
    <lastmod>2025-03-15</lastmod>
  </url>
  <url>
    <loc>http://localhost:3000/content-readability</loc>
    <lastmod>2025-03-15</lastmod>
  </url>
  <url>
    <loc>http://localhost:3000/issues-index</loc>
    <lastmod>2025-03-15</lastmod>
  </url>
  <url>
    <loc>http://localhost:3000/page-html-head-audits</loc>
    <lastmod>2026-06-16</lastmod>
  </url>
  <url>
    <!-- Hub — links the parameterised fixture URLs a sitemap entry cannot express -->
    <loc>http://localhost:3000/audit-fixtures</loc>
    <lastmod>2026-08-20</lastmod>
  </url>
  <url>
    <!-- #61 link_rel_amphtml -->
    <loc>http://localhost:3000/amp-link-missing</loc>
    <lastmod>2026-08-20</lastmod>
  </url>
  <url>
    <!-- #73 event_schema_event -->
    <loc>http://localhost:3000/events-schema</loc>
    <lastmod>2026-08-20</lastmod>
  </url>
  <url>
    <!-- #110 x_default_hreflang -->
    <loc>http://localhost:3000/hreflang-x-default</loc>
    <lastmod>2026-08-20</lastmod>
  </url>
  <url>
    <!-- #56 image_filenames_descriptive -->
    <loc>http://localhost:3000/image-filenames</loc>
    <lastmod>2026-08-20</lastmod>
  </url>
  <url>
    <!-- #105 article_section_article -->
    <loc>http://localhost:3000/blog/seo-article</loc>
    <lastmod>2026-08-20</lastmod>
  </url>
  <url>
    <!-- #120 control — the faceted variants are reached via the filter links on this page -->
    <loc>http://localhost:3000/shop</loc>
    <lastmod>2026-08-20</lastmod>
  </url>
  <url>
    <!-- #121 control — the utm-tagged variant is reached via the campaign link on this page -->
    <loc>http://localhost:3000/campaign-landing</loc>
    <lastmod>2026-08-20</lastmod>
  </url>
  <url>
    <!-- #40: canonical points outside this sitemap's URL set -->
    <loc>http://localhost:3000/canonical-sitemap-mismatch</loc>
    <lastmod>2026-08-20</lastmod>
  </url>
  <url>
    <!-- Hub — the third batch's only site-wide entry point -->
    <loc>http://localhost:3000/crawl-audit-fixtures</loc>
    <lastmod>2026-08-21</lastmod>
  </url>
  <url>
    <!-- #115 comparison_content_tables -->
    <loc>http://localhost:3000/comparison-no-table</loc>
    <lastmod>2026-08-21</lastmod>
  </url>
  <url>
    <!-- #37 / #41 / #63 — media with no image or video sitemap entries on THIS host; the false-positive deployment declares them (see the header note) -->
    <loc>http://localhost:3000/media-library</loc>
    <lastmod>2026-08-21</lastmod>
  </url>
  <url>
    <!-- #97 #100 #102 #103 #107 -->
    <loc>http://localhost:3000/social-article-gaps</loc>
    <lastmod>2026-08-21</lastmod>
  </url>
  <url>
    <!-- #89 #76 #86 — declared schemas failing validation -->
    <loc>http://localhost:3000/schema-validation-gaps</loc>
    <lastmod>2026-08-21</lastmod>
  </url>
  <url>
    <!-- [WebApplication, Product] with Offer + brand, no shipping/return/review/rating -->
    <loc>http://localhost:3000/webapp-product-schema</loc>
    <lastmod>2026-10-01</lastmod>
  </url>
  <url>
    <!-- control: WebApplication only, no brand -->
    <loc>http://localhost:3000/webapp-schema-control</loc>
    <lastmod>2026-10-01</lastmod>
  </url>
  <url>
    <!-- #95 broken_external_link -->
    <loc>http://localhost:3000/broken-external-links</loc>
    <lastmod>2026-08-21</lastmod>
  </url>
  <url>
    <!-- #66 no_mixed_active -->
    <loc>http://localhost:3000/mixed-active-content</loc>
    <lastmod>2026-08-21</lastmod>
  </url>
  <url>
    <!-- #59 link_rel_manifest -->
    <loc>http://localhost:3000/manifest-broken</loc>
    <lastmod>2026-08-21</lastmod>
  </url>
  <url>
    <!-- #326 h1_heading_missing -->
    <loc>http://localhost:3000/h1-missing</loc>
    <lastmod>2026-08-21</lastmod>
  </url>
  <url>
    <!-- #13 structure_clean_lowercase -->
    <loc>http://localhost:3000/Legacy_Docs/Old_Page</loc>
    <lastmod>2026-08-21</lastmod>
  </url>
  <url>
    <!-- #321 — links the http:// form of /http-scheme-page -->
    <loc>http://localhost:3000/http-scheme-audit</loc>
    <lastmod>2026-08-21</lastmod>
  </url>
  <url>
    <!-- Documents the requested codes that are isActive: false or otherwise unreachable -->
    <loc>http://localhost:3000/head-tag-gaps</loc>
    <lastmod>2026-08-21</lastmod>
  </url>
  <url>
    <!-- #22 meta_name_referrer — no <meta name="referrer">, every other head tag present, #70 satisfied via http-equiv -->
    <loc>http://localhost:3000/meta-referrer-gap</loc>
    <lastmod>2026-08-25</lastmod>
  </url>
  <url>
    <!-- #74 localbusiness_schema_location — location prose with no structured data at all, so #71 has no input either -->
    <loc>http://localhost:3000/location-schema-gap</loc>
    <lastmod>2026-08-25</lastmod>
  </url>
  <url>
    <!-- #38 here; #26 and #314 on the no-crawl-config deployment — see src/lib/fixtureVariant.ts -->
    <loc>http://localhost:3000/crawl-config-missing</loc>
    <lastmod>2026-08-21</lastmod>
  </url>
  <url>
    <!-- Hub — the false-positive batch's only site-wide entry point -->
    <loc>http://localhost:3000/false-positive-fixtures</loc>
    <lastmod>2026-08-24</lastmod>
  </url>
  <url>
    <!-- #25 link_rel_sitemap — valid tag, three accepted type forms -->
    <loc>http://localhost:3000/fp-link-rel-sitemap</loc>
    <lastmod>2026-08-24</lastmod>
  </url>
  <url>
    <!-- #20 meta_name_author — present, non-empty, agrees with the byline -->
    <loc>http://localhost:3000/fp-meta-author</loc>
    <lastmod>2026-08-24</lastmod>
  </url>
  <url>
    <!-- #22 meta_name_referrer — recommended policy token, also satisfies #70 -->
    <loc>http://localhost:3000/fp-meta-referrer</loc>
    <lastmod>2026-08-24</lastmod>
  </url>
  <url>
    <!-- #74 localbusiness_schema_location — location prose plus valid LocalBusiness -->
    <loc>http://localhost:3000/fp-localbusiness-location</loc>
    <lastmod>2026-08-24</lastmod>
  </url>
  <url>
    <!-- #154 product_schema_review_fields — Products declaring both aggregateRating and review -->
    <loc>http://localhost:3000/fp-product-review-fields</loc>
    <lastmod>2026-10-01</lastmod>
  </url>
  <url>
    <!-- #42 moved_deleted_return — documents the 301 and still-live cases -->
    <loc>http://localhost:3000/fp-moved-deleted-return</loc>
    <lastmod>2026-08-24</lastmod>
  </url>
  <url>
    <!-- #42 — the 200 destination of the permanent redirect from /fp-retired-guide -->
    <loc>http://localhost:3000/fp-retired-guide-2026</loc>
    <lastmod>2026-08-24</lastmod>
  </url>
  <url>
    <!-- #42 — legacy-looking URL that is still served, the still-live case -->
    <loc>http://localhost:3000/fp-legacy-still-live</loc>
    <lastmod>2026-08-24</lastmod>
  </url>
  <url>
    <!-- Hub — the edge-case false-positive batch's only site-wide entry point -->
    <loc>http://localhost:3000/fp-edge-fixtures</loc>
    <lastmod>2026-08-26</lastmod>
  </url>
  <url>
    <!-- #22 meta_name_referrer — no referrer meta tag at all; the policy is the Referrer-Policy header, as a comma-separated fallback list, which also satisfies #70 -->
    <loc>http://localhost:3000/fp-edge-referrer-header</loc>
    <lastmod>2026-08-26</lastmod>
  </url>
  <url>
    <!-- #74 localbusiness_schema_location — two branches in one @graph, array @type, @id address reference, Store subtype; #71 must stay silent too -->
    <loc>http://localhost:3000/fp-edge-localbusiness-graph</loc>
    <lastmod>2026-08-26</lastmod>
  </url>
  <url>
    <!-- Hub — the CMS-shaped false-positive batch's only site-wide entry point -->
    <loc>http://localhost:3000/fp-cms-fixtures</loc>
    <lastmod>2026-08-26</lastmod>
  </url>
  <url>
    <!-- #74 localbusiness_schema_location — two script blocks (one a top-level array), the same Organization in both, a Store-first @type array, an address array of two PostalAddress objects and a nested department; #71 must stay silent too -->
    <loc>http://localhost:3000/fp-cms-localbusiness-branches</loc>
    <lastmod>2026-08-26</lastmod>
  </url>
  <url>
    <!-- Hub — the internationalised false-positive batch's only site-wide entry point -->
    <loc>http://localhost:3000/fp-intl-fixtures</loc>
    <lastmod>2026-09-09</lastmod>
  </url>
  <url>
    <!-- #96 localbusiness_schema_location — a store locator whose four businesses sit two and three property hops down inside an ItemList, reached through itemListElement, item and hasPOS, two of them using the legacy openingHours string form; #71 must stay silent too -->
    <loc>http://localhost:3000/fp-intl-localbusiness-locations</loc>
    <lastmod>2026-09-09</lastmod>
  </url>
  <url>
    <!-- Hub — the head and URL false-positive batch's only site-wide entry point -->
    <loc>http://localhost:3000/fp-head-url-fixtures</loc>
    <lastmod>2026-09-28</lastmod>
  </url>
  <url>
    <!-- #34 meta_name_google — two verification tags, one per verified owner -->
    <loc>http://localhost:3000/fp-google-verification</loc>
    <lastmod>2026-09-28</lastmod>
  </url>
  <url>
    <!-- #34 meta_name_google — verified by HTML file, which the catalogue counts as passing -->
    <loc>http://localhost:3000/fp-google-file-verification</loc>
    <lastmod>2026-09-28</lastmod>
  </url>
  <url>
    <!-- #9 www_vs_non — www. permanently redirects to the apex host (middleware) -->
    <loc>http://localhost:3000/fp-www-canonical-host</loc>
    <lastmod>2026-09-28</lastmod>
  </url>
  <url>
    <!-- Hub — the malformed batch's only site-wide entry point -->
    <loc>http://localhost:3000/malformed-fixtures</loc>
    <lastmod>2026-08-25</lastmod>
  </url>
  <url>
    <!-- #71 organization_localbusiness_schema — three declared LocalBusiness-family schemas with missing/invalid address; #74 is retired and cannot fire -->
    <loc>http://localhost:3000/invalid-localbusiness-location</loc>
    <lastmod>2026-08-25</lastmod>
  </url>
  <url>
    <!-- #70 referrer_policy_header — <meta name="referrer" content="">; #22 is retired and cannot fire -->
    <loc>http://localhost:3000/invalid-meta-referrer-empty</loc>
    <lastmod>2026-08-25</lastmod>
  </url>
  <url>
    <!-- #70 — non-empty value that is not a Referrer Policy token. Expected SILENT: documented gap, the check is a truthiness test -->
    <loc>http://localhost:3000/invalid-meta-referrer-token</loc>
    <lastmod>2026-08-25</lastmod>
  </url>
  <url>
    <!-- Hub — linked from navbar and footer, so NOT an orphan -->
    <loc>http://localhost:3000/orphan-audit</loc>
    <lastmod>2026-08-17</lastmod>
  </url>
  <url>
    <!-- ORPHAN: simplest possible case — in sitemap, zero inbound links -->
    <loc>http://localhost:3000/orphan-simple</loc>
    <lastmod>2026-08-17</lastmod>
  </url>
  <url>
    <!-- ORPHAN: declared here, zero inbound internal links anywhere -->
    <loc>http://localhost:3000/orphan-in-sitemap</loc>
    <lastmod>2026-08-17</lastmod>
  </url>
  <url>
    <!-- ORPHAN: only inbound link is on /noindex-page (noindex,follow) -->
    <loc>http://localhost:3000/orphan-linked-from-noindex</loc>
    <lastmod>2026-08-17</lastmod>
  </url>
  <url>
    <!-- ORPHAN: only inbound link is on /private/blocked-page (Disallow: /private/) -->
    <loc>http://localhost:3000/orphan-linked-from-blocked</loc>
    <lastmod>2026-08-17</lastmod>
  </url>
  <url>
    <!-- ORPHAN: no <a href> anywhere; reachable only via a JS onClick -->
    <loc>http://localhost:3000/orphan-js-only-link</loc>
    <lastmod>2026-08-17</lastmod>
  </url>
  <url>
    <!-- CONTROL: properly linked from /orphan-audit — must NOT be flagged -->
    <loc>http://localhost:3000/orphan-control-linked</loc>
    <lastmod>2026-08-17</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/page-nofollow-directive</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/hashbang-url-link</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/css-js-blocked-by-robots</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/internal-link-to-robots-blocked-url</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/sitemap-lists-robots-blocked-url</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/dead-end-page</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/link-to-local-or-staging-host</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/malformed-link-href</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/uncrawlable-link</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/empty-anchor-text</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/image-link-missing-alt</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/external-link-redirects</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/broken-fragment-link</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/multiple-h1-headings</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/empty-h1-heading</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/duplicate-h1-a</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/duplicate-h1-b</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/hsts-max-age-too-short</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/hsts-missing-include-subdomains</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/hsts-not-preload-ready</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/html-not-compressed</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/render-blocking-resources</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/excessive-dom-size</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/poor-fcp</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/poor-tbt</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/slow-speed-index</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/unminified-css-js</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/unused-javascript</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/unused-css</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/short-static-asset-cache</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/offscreen-images-not-deferred</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/oversized-images</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/font-display-missing</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/missing-preconnect</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/lcp-image-lazy-loaded</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/heavy-third-party-code</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/page-weight-over-budget</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/targets/chain-final</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #154–#205 issue fixture -->
    <loc>http://localhost:3000/issue-fixtures/paginated-canonical-to-first-page</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <url>
    <!-- #195 sitemap_lists_robots_blocked_url: Disallow: /private/ in robots.txt -->
    <loc>http://localhost:3000/private/blocked-page.html</loc>
    <lastmod>2026-10-02</lastmod>
  </url>
  <!--
    Deliberately absent from this sitemap: http://localhost:3000/orphan-not-in-sitemap
    That page is live (200) and unlinked, so neither crawling nor a sitemap diff
    can discover it. Do not add it here.
  -->
</urlset>
