<?xml version="1.0" encoding="UTF-8"?>
<!--
  Sitemap INDEX for app.trypolarbear.com (this repo — the app subdomain).
  robots.txt points crawlers here. Children:
   - sitemap-pages.xml   : curated static public routes (this static file's sibling).
   - sitemap-essays.xml  : every published essay /essays/:id — DYNAMIC, generated
                           by the api/sitemap-content edge function from the DB via
                           a vercel.json rewrite (cached ~1h). Empty until the env
                           SITEMAP_ESSAYS_ENABLED=true is set (essays are gated
                           behind public-essays-anon-preview — advertising them
                           while that flag is off points crawlers at thin gate
                           pages). Set both together at the essays-public rollout.
   - sitemap-notes.xml   : every published note /notes/:id — DYNAMIC, same function.
                           Empty until SITEMAP_NOTES_ENABLED=true. Note detail pages
                           are anon-viewable, but the Resource Central directory is
                           contribution-gated + noindex, so whether note URLs should
                           be search-discoverable is a product opt-in.
   - sitemap-tutors.xml  : every live public subject page /tutoring/tutors/:slug —
                           DYNAMIC, generated by the api/sitemap-tutors edge function
                           from the GCP /tutor-marketplace-public/facets endpoint
                           (same slug fn the routes resolve against, so every URL
                           resolves). Gated by (and flips WITH) VITE_PUBLIC_TUTORS_ENABLED
                           — the SAME build-time flag that registers the subject
                           routes, so it is empty until the public tutoring surface is
                           live and can never advertise an unregistered URL.
   - sitemap-mock-exams.xml : every published mock exam /mock-exams/:slugId — DYNAMIC,
                           generated by the api/sitemap-mock-exams edge function from
                           the GCP /published-mock-exams list (same additive `slug` the
                           detail route resolves against, so every URL resolves). Gated
                           by (and flips WITH) VITE_MOCK_EXAM_PUBLISH_ENABLED — the SAME
                           flag that registers the gallery/detail routes, so it is empty
                           until the published-papers surface is live. (The /mock-exams
                           gallery index itself is added to sitemap-pages.xml in that same
                           flag-flip change — see the note there.)

  The dynamic children are OFF by default; the sitemap ships as infrastructure and
  each content type is turned on (env=true, or the tutors child's route flag) when
  its surface is confirmed public.
  The marketing site (trypolarbear.com) owns its own sitemap; do not list
  marketing/legacy-landing routes here.
-->
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://app.trypolarbear.com/sitemap-pages.xml</loc>
  </sitemap>
  <sitemap>
    <loc>https://app.trypolarbear.com/sitemap-essays.xml</loc>
  </sitemap>
  <sitemap>
    <loc>https://app.trypolarbear.com/sitemap-notes.xml</loc>
  </sitemap>
  <sitemap>
    <loc>https://app.trypolarbear.com/sitemap-tutors.xml</loc>
  </sitemap>
  <sitemap>
    <loc>https://app.trypolarbear.com/sitemap-mock-exams.xml</loc>
  </sitemap>
</sitemapindex>
