<?xml version="1.0" encoding="UTF-8"?>
<!--
  Discovery for the content pages.

  This matters more here than on most sites: the app has almost no internal links —
  Search Console's Links report said "Internal links: 0" until the landing page grew a
  French link — and the homepage is a client-rendered shell. This file is still the main
  route by which Google finds these pages.

  hreflang IS NOT HERE. It lives in each page's <head>, and this comment used to claim
  the opposite while the pages already carried <link rel="alternate"> tags — the two
  mechanisms are alternatives, and running both is the two-owner defect written into the
  spec itself. One owner: the page. What belongs here is discovery, nothing else.

  EVERY URL HERE ENDS IN A SLASH, and that is not cosmetic. These pages are
  directory indexes; nginx answers the slashless form with a 301, and — measured
  in production on 2026-09-09 — an ABSOLUTE redirect built from `listen 80`, so
  `https://chkobbeta.tn/fr/regles-chkobba` sent the reader to `http://`, which
  then answered 200 because HTTP->HTTPS is not enforced at the edge (finding 7).
  Submitting a redirecting URL also asks Google to index one thing and serves it
  another. `absolute_redirect off` now fixes the scheme; the slashes here mean the
  redirect is not taken at all.

  RECIPROCITY IS STILL THE RULE, it is just enforced somewhere else now: every page in a
  language set must name every other, itself included, or the annotation is ignored
  wholesale. contentPagesHandOffTheLanguage.test.ts asserts that across every page under
  client/public/, so adding /ar/ later fails the suite until its alternates are mutual.

  THE /fr/ PAGES ARE IN, as of 2026-09-09. They shipped held back behind
  `noindex,follow` pending a native French review (#947) — nobody on the build side could
  sign off on the French — and the owner reviewed both pages and passed them. The two
  edits that block promised were exactly the two that were made: the meta tag off each
  page, and the two <url> entries below.

  A sitemap is a request to index, so listing a URL that says noindex asks for the
  opposite of what the page says, and Search Console reports it as "Submitted URL marked
  noindex". That is why the two halves have to move together, and why
  contentPagesHandOffTheLanguage.test.ts fails when only one of them does.

  The hreflang already named these pages from /rules/, from the homepage and from each
  other before they were allowed in, which is why publishing needed nothing further.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <url>
    <loc>https://chkobbeta.tn/</loc>
    <lastmod>2026-09-09</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <url>
    <loc>https://chkobbeta.tn/rules/</loc>
    <lastmod>2026-09-09</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://chkobbeta.tn/fr/</loc>
    <lastmod>2026-09-09</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://chkobbeta.tn/fr/regles-chkobba/</loc>
    <lastmod>2026-09-09</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <!--
    /ar/ IS IN, and the two halves moved together as this file's header requires.

    The hand-written page carried `noindex,follow` because nobody on the build
    side could sign off on the Arabic. That hold is satisfied rather than
    ignored: the page is no longer hand-written. It is prerendered from
    `ar.json`, which is the owner's own reviewed translation — the same
    condition that released /fr/.

  -->
  <url>
    <loc>https://chkobbeta.tn/ar/</loc>
    <lastmod>2026-09-12</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>

  <!--
    /ar/قواعد-الشكبة/ IS IN, as of 2026-09-14. The owner reviewed its card words —
    the face cards, the ace and the three suits were wrong and are replaced — and
    the robots meta came off the page in the same commit as this entry.

    THE LOC IS PERCENT-ENCODED, and it is the one place in the repo that is. The
    sitemap protocol requires URL-escaped values; every other file spells this URL
    in raw Arabic. contentPagesHandOffTheLanguage.test.ts decodes before comparing,
    so the two spellings are checked as the one URL they are.
  -->
  <url>
    <loc>https://chkobbeta.tn/ar/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%B4%D9%83%D8%A8%D8%A9/</loc>
    <lastmod>2026-09-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

</urlset>
