<?xml version="1.0" encoding="UTF-8"?>
<!-- Canonical URLs (no trailing slash, no .html) — matches the cdn-kizuna
     CloudFront canonicalization. Marketing pages only; app/auth routes are
     excluded (also Disallow'd in robots.txt).

     NB do not write the l-o-c tag name in this comment — the structural guard
     in seo.test.ts counts opening and closing tags with a bare regex over the
     whole file, so naming it in prose breaks the count. The comment below
     says "url entries" for the same reason. -->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://kizuna.host/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <!-- /why has NO route in src/app: it is the marketing essay at
       public/site/why.html, which cdn-kizuna's url-rewrite function serves at
       this address (the same function serves "/" from public/site/index.html to
       every visitor without the kz_auth cookie). Nothing in this repo enumerates
       public/, so the flip guard in seo.test.ts is the only thing pinning this
       entry — keep the two in step. -->
  <url>
    <loc>https://kizuna.host/why</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://kizuna.host/terms-of-service</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <!-- /privacy-policy, /refund-policy, /about-us and /community-guidelines are
       hosted and routable but deliberately NOT listed: none has been filed in
       the policies repo's published/ archive (every <policy>/published/ is
       empty). /host-agreement was a sixth entry here until its public route was
       DELETED (2026-08-30) — a host accepts the Host Terms in the app now, at
       the gated /host/terms. Do not re-add it: there is no route to sitemap.

       Each screen carries a meta-robots noindex for the same reason — a
       Disallow would hide that directive instead of delivering it, which is
       why they stay crawlable.

       ⚠️ The ORIGINAL reason — "they still print an unset [● — set on
       publication] date" — is now DEAD; the documents carry real dates. So
       seeing a real date on these pages is NOT clearance to lift the hold —
       the published/ archive is. Do not re-derive it from the dates, and do
       not re-derive it from the version number either: both move whenever the
       documents are rebuilt, including for a presentation-only correction that
       changes no legal text. Neither is a publication signal. (Deliberately
       not naming today's values here: this note has already gone stale twice
       by pinning them.)

       The corpus itself no longer lives in this repo — public/policies/ was
       deleted in #436 and TravelAGI/policies publishes straight to the bucket
       CloudFront serves /policies/* from. Read a document's face at
       https://kizuna.host/policies/<key>/current.html rather than looking for
       a file here.

       Add the five url entries and drop the five noindex tags in the same
       commit that publishes the documents — __tests__/public/seo.test.ts locks
       the pair, so a half-done flip fails CI rather than shipping.
       /terms-of-service is listed because it is the one document cleared to
       index, not because of its date. -->
</urlset>
