<?xml version="1.0" encoding="UTF-8"?>
<!--
  GPSLarp sitemap (ADR-0049). Served from apps/web/public/, which is copied
  verbatim into dist/ and never enters the Vite graph — so this file is exactly
  what the crawler receives, and a build change cannot alter it.

  Every URL keeps its trailing slash. The CloudFront function in
  infra/terraform/web.tf rewrites a path ending in "/" to that directory's
  index.html and sends any other extensionless path to the marketing page, so
  /privacy/ serves the policy and /privacy serves the landing page. A sitemap
  entry without the slash would submit the wrong document.

  /change-iphone-location-from-mac/ is the first task-intent guide (ADR-0062,
  ADR-0072). ADR-0062 requires every new page to be listed here, because this
  file is maintained by hand and a page nothing links to and nothing submits is
  a page that was written for a crawler that never comes.

  Deliberately absent:

    /admin/    - operator dashboard. robots.txt disallows it and admin/index.html
                 carries its own noindex.
    /account/  - signed-in customer app, disallowed for the same reason: a
                 crawler gets a signed-out shell, which is thin duplicate content
                 competing with the landing page for the same queries.
    /checkout/success/, /checkout/cancel/
               - Stripe return pages. Both already carry noindex; neither means
                 anything to a reader who did not arrive from a checkout.

  There is no <lastmod> on any entry, and that is a decision rather than an
  omission. Google uses lastmod only where it is consistently accurate, and a
  date maintained by hand in a file nobody opens when they change the page is
  stale by construction — the same reasoning that keeps a test count out of the
  root CLAUDE.md. A wrong lastmod is worse than none: it is a claim about
  freshness, made to the one reader who cannot check it. If this ever needs
  lastmod, generate it from git rather than typing it.

  <changefreq> and <priority> are absent because Google ignores both.

  The /help/ entries are the task-intent and troubleshooting pages ADR-0062
  decided the site grows by, built as static files under apps/web/public/ per
  ADR-0072 and ADR-0092. They are listed here by hand like everything else, and
  apps/web/scripts/help-pages.test.ts is what notices when a new one is not —
  KI-88 is the entry for the fact that nothing else checks this file against the
  pages that exist.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://gpslarp.com/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/change-iphone-location-from-mac/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/terms/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/privacy/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/datenschutz/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/impressum/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/help/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/help/connect-iphone/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/help/trust-this-computer/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/help/developer-mode/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/help/location-not-applying/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/help/admin-password/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/help/sign-in/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/help/install-macos/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/help/restore-real-location/</loc>
  </url>
  <url>
    <loc>https://gpslarp.com/help/requirements/</loc>
  </url>
</urlset>
