<?xml version="1.0" encoding="UTF-8"?>
<!-- The sitemap INDEX for axlekeys.com (t30-publish B4, 2026-09-05).

     This file used to be the 16-URL hand-written menu that is now sitemap-pages.xml. It
     became an index the day models could be published: a per-model URL is derived from the
     model's CURRENT name at read time, so the set of them changes whenever someone publishes
     or renames, and no file a human edits can stay true to that. The hand-written half stays
     hand-written; the generated half is served by the app route /sitemap-models.xml, which
     reads GET /public/models on api.axlekeys.com.

     ⭐ /sitemap-models.xml lists PUBLIC models and assemblies only (one URL space since
     t30-asmpage, 2026-09-13). `unlisted` is excluded by the worker's
     query rather than filtered out downstream — HK's ruling (context/archive/publishing-plan.md,
     decision 2) defines unlisted as a working canonical URL that never enters the sitemap.

     ⚠ Neither child carries a <lastmod> here. For the static page list there is nothing
     honest to put — the file changes when someone edits it, which git knows and this file
     does not. For the model list the answer would have to be fetched to be true, and a
     fabricated timestamp is a claim, not a convenience.

     Guard: S48 (site parity) in scripts/guards/run.mjs — the index parses, every child it
     names fetches, every URL in every child answers 200 to a bot, and no URL in any child
     belongs to an unlisted or private model. -->
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://axlekeys.com/sitemap-pages.xml</loc>
  </sitemap>
  <sitemap>
    <loc>https://axlekeys.com/sitemap-models.xml</loc>
  </sitemap>
</sitemapindex>
