<?xml version="1.0" encoding="UTF-8"?>
<!--
  Static sitemap for Puzzle Race.

  Lists only the public, indexable routes. Dynamic routes like
  /watch/:roomCode, /watch/replay/:roomCode, and /race/profile/:userId
  are intentionally excluded — they're short-lived (live rooms end,
  replays are evicted after 50 races) and Googlebot would 404 on stale
  entries.

  Update `lastmod` when the app has a significant public-facing update
  (e.g. new landing page copy, new leaderboard). Weekly is fine for a
  live game platform.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://race.caissachess.org/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://race.caissachess.org/watch</loc>
    <changefreq>hourly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://race.caissachess.org/race/leaderboard</loc>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://race.caissachess.org/store</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
</urlset>
