<?xml version="1.0" encoding="UTF-8"?>
<!--
  Static sitemap for CodeChecker. Only publicly reachable, indexable routes
  are listed — auth-gated routes (/checker, /library, /account, /tutorial)
  and tokenised /shared/<uuid> links are deliberately excluded and are also
  Disallow'd in robots.txt.

  This is hand-maintained: the SPA has a fixed, small route table (see
  frontend/src/App.tsx), so generating it at build time would add a Vite
  plugin for no real benefit. If you add a public route, add it here too.

  lastmod is the date the page's *content* last changed materially, not the
  deploy date — bumping it on every deploy trains crawlers to ignore it.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://codechecker.babbitt.app/</loc>
    <lastmod>2026-08-12</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://codechecker.babbitt.app/demo</loc>
    <lastmod>2026-08-12</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://codechecker.babbitt.app/register</loc>
    <lastmod>2026-08-12</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <!--
    /login is intentionally absent: it carries no unique content, duplicates
    /register's intent, and is served with `noindex, nofollow` by
    useDocumentMeta. It is NOT Disallow'd in robots.txt — a crawler has to be
    allowed to fetch the page in order to see the noindex directive.
  -->
  <url>
    <loc>https://codechecker.babbitt.app/privacy</loc>
    <lastmod>2026-08-12</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
