<?xml version="1.0" encoding="UTF-8"?>
<!--
  Static sitemap for HiveTrade. Build-time, the `dynamicSitemapPlugin`
  in vite.config.ts fetches /api/hives from the explicitly configured API and appends
  one <url>/hive/<username></url> entry per Captain so search + LLM
  crawlers can discover the dynamic Hive profile surfaces. The USERNAME
  form, not the numeric id: /hive/<id> resolves but the page it serves
  canonicalises to /hive/<username>, so submitting the id form submits a
  URL that disowns itself and never gets indexed. hiveSitemapLocations
  (src/lib/sitemap-build.ts) owns that choice. If the build-time fetch
  fails (Railway hiccup, offline CI), the static list below ships
  untouched — the dynamic enrichment is best-effort.

  The same fetch also writes one pre-rendered SEO shell per Captain
  (dist/hive/<username>/index.html, src/lib/hive-seo-shell.ts), so a
  submitted Hive URL answers a non-executing crawler with its OWN title
  and canonical instead of the homepage's. A directory index rather than
  a vercel.json rewrite, because this list is only known at build time —
  see docs/seo.md.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <!-- Browse: the canonical (and now only) inventory surface. /discover,
         /hives and /trending were dropped 2026-07-27 when they became
         redirects here — a sitemap must not advertise three URLs for one page. -->
    <loc>https://app.hivetrade.com/</loc>
    <changefreq>hourly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/leaderboard</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/market-map</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/changelog</loc>
    <changefreq>weekly</changefreq>
    <priority>0.4</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/faq</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/how-it-works</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/about</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <!-- The CANONICAL path, not /responsible: App.tsx routes /responsible to
         <RedirectTo path="/responsible-trading" />, so the submitted URL
         disowned itself the moment JS ran — the same defect CP323 fixed for
         the /hive/<id> form. seo-sitemap-coverage.test.ts now derives the
         redirect set from App.tsx and reds if a redirect is submitted again. -->
    <loc>https://app.hivetrade.com/responsible-trading</loc>
    <changefreq>monthly</changefreq>
    <priority>0.4</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/security</loc>
    <changefreq>monthly</changefreq>
    <priority>0.4</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/badges</loc>
    <changefreq>weekly</changefreq>
    <priority>0.4</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/tos</loc>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/privacy</loc>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/hive/hivebot_cross_confirm_41_qiq6</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/hive/ligue_1_france_soccer_le_41_5mee</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/hive/finance_news_41_xlcd</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/hive/low_probabilities_financ_41_wo9j</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/hive/the_critic_41_45yg</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/hive/the_trumpist_41_kroe</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/hive/the_press_pool_41_tkuj</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/hive/respawn_41_3stp</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/hive/the_kop_41_hlg9</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/hive/sports_bar_41_iknw</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://app.hivetrade.com/hive/sting_46_m6ug</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
</urlset>
