<?xml version="1.0" encoding="UTF-8"?>
<!--
  REBUILT 2026-08-26. Every entry below was verified against the live edge and, for
  reports, against site_reports on the same day.

  ⛔ THE RULE FOR REPORTS, AND IT IS TWO CONDITIONS, NOT ONE.
  A report is listed here only where BOTH `is_public_showcase = true` AND
  `is_search_indexable = true`. The first is the privacy gate. The second is what the
  page itself says: report/[reportId]/layout.tsx computes `indexable = showcase &&
  is_search_indexable`, so a showcase with the second bit false serves `noindex`.
  LISTING A NOINDEX PAGE IN A SITEMAP ASKS A CRAWLER TO FETCH SOMETHING AND THEN TELLS
  IT TO FORGET WHAT IT FETCHED. That contradiction is the defect this rebuild removes.
  ⛔ AND "PROMOTED" HAS TWO SURFACES THAT DO NOT AGREE. lib/showcase-lens.ts SAMPLES (the
  /site-intelligence/sample?type= redirect table) carries 11 reports; the /samples gallery
  carries 12; they share only 6, and the union is 17. A first cut of this rebuild used the
  GALLERY ALONE as the promotion population and dropped KRAYN-2026-454350, -581382, -758924
  and -ac5ec9fb324e4beb — four reports that are showcase AND indexable AND publicly reachable
  through the redirect table, three of which had been listed here for months. They are
  restored above. ⚖ A DECLARED SET IS A HYPOTHESIS ABOUT THE SERVED SET, and picking one of
  two promotion tables is how a census misses a third of its population.

  MEASURED 2026-08-26: 23 reports carry is_public_showcase; 15 of those are also
  search-indexable; 17 are promoted on one surface or the other; 10 satisfy all three and are
  listed here. The other 7 promoted reports are showcases with is_search_indexable = FALSE —
  including KRAYN-2026-d994f6b94935bb81 (Werrington), the `nsw` flagship of the redirect
  table. It is absent from this file BECAUSE ITS OWN INDEXABLE BIT IS FALSE, not by oversight.
  Whether that bit is correct for a flagship is a decision, and it is not this file's.

  ⛔ KRAYN-2026-421065 REMOVED. It was `is_public_showcase = false` and
  `is_search_indexable = false`, and it had been listed here since 2026-05-29 05:39 UTC
  (commit 4b8a21e1) — 89 days. It was added ~3 hours after that report was generated,
  as the then-current sample, and was never removed when the VIC trio replaced it on
  2026-06-06 (3c804be3).
  ⚑ WHAT WAS AND WAS NOT EXPOSED, MEASURED RATHER THAN ASSUMED: the page served
  `noindex, nofollow`, its og:title carried no address, and the teaser redaction had
  already coarsened the locator — an anonymous fetch returned "Yarra Junction VIC 3797,
  Australia" and 2-dp coordinates, never the street address. THE FULL ADDRESS WAS NOT
  DISCLOSED. What was wrong is narrower and still wrong: a private report was advertised
  to crawlers in the estate's own index for three months.

  ⛔ FOURTEEN DEAD ROUTES REMOVED. /demo /transport /transport-intel /for-contractors
  /rfq /rfq/create /enterprise /government /supplier/register /blog /guides /how-to
  /tutorials /resources — every one has NO page directory and every one 307s to
  /site-intelligence. They returned 200 through the edge, which is exactly why they
  survived: with a catch-all redirect a removed page and a live page are the same status
  code. Submitting fourteen URLs that all resolve to one page is a duplicate-content
  signal pointed at the hub it redirects to.
  ⚠ /pricing /about /how-it-works /faq /help also removed — they are ALIASES that 307 to
  /site-intelligence/pricing, /about, the hub, /faq and /contact, all of which are listed
  here directly. An alias beside its target is the same page submitted twice.
  ⚠ /login and /auth/register removed on this file's own existing rule: an app route is
  not a search landing page. That is the same reason /site-intelligence/generate has
  never been listed.

  ADDED: /site-intelligence/methodology and /site-intelligence/coverage. Both serve 200
  and self-canonical, verified 2026-08-26.
  WITHDRAWN 2026-08-27 (A3): /site-intelligence/coverage. It is noindex while its link is
  withdrawn from what-we-check — the matrix and individual reports disagree about three
  layers and which is wrong is undecided. A sitemap entry at priority 0.8 with index,follow
  IS a link; withdrawing from browse while inviting crawlers withdrew it from nobody. The
  URL stays reachable and returns 200. Restore this line and the layout's robots block
  together. 23 URLs -> 22.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <!-- Core -->
  <url><loc>https://krayn.au/</loc><lastmod>2026-08-26</lastmod><changefreq>daily</changefreq><priority>1.0</priority></url>

  <!-- Site Intelligence — the product -->
  <url><loc>https://krayn.au/site-intelligence</loc><lastmod>2026-08-26</lastmod><changefreq>weekly</changefreq><priority>0.9</priority></url>
  <url><loc>https://krayn.au/site-intelligence/what-we-check</loc><lastmod>2026-08-26</lastmod><changefreq>weekly</changefreq><priority>0.8</priority></url>
  <url><loc>https://krayn.au/site-intelligence/methodology</loc><lastmod>2026-08-26</lastmod><changefreq>weekly</changefreq><priority>0.8</priority></url>
  <url><loc>https://krayn.au/site-intelligence/how-it-works</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
  <url><loc>https://krayn.au/site-intelligence/pricing</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
  <url><loc>https://krayn.au/site-intelligence/samples</loc><lastmod>2026-08-26</lastmod><changefreq>weekly</changefreq><priority>0.8</priority></url>
  <url><loc>https://krayn.au/site-intelligence/faq</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
  <url><loc>https://krayn.au/site-intelligence/about</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>

  <!-- Sample reports — showcase AND search-indexable. Both bits, every time. -->
  <url><loc>https://krayn.au/report/KRAYN-2026-454350</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
  <url><loc>https://krayn.au/report/KRAYN-2026-581382</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
  <url><loc>https://krayn.au/report/KRAYN-2026-758924</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
  <url><loc>https://krayn.au/report/KRAYN-2026-ac5ec9fb324e4beb</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
  <url><loc>https://krayn.au/report/KRAYN-2026-183757</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
  <url><loc>https://krayn.au/report/KRAYN-2026-220563</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
  <url><loc>https://krayn.au/report/KRAYN-2026-369741</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
  <url><loc>https://krayn.au/report/KRAYN-2026-946702</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
  <url><loc>https://krayn.au/report/KRAYN-2026-ac02e45d1b196d42</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>

  <!-- Legal / contact -->
  <url><loc>https://krayn.au/contact</loc><lastmod>2026-08-26</lastmod><changefreq>monthly</changefreq><priority>0.6</priority></url>
  <url><loc>https://krayn.au/terms</loc><lastmod>2026-08-26</lastmod><changefreq>yearly</changefreq><priority>0.4</priority></url>
  <url><loc>https://krayn.au/privacy</loc><lastmod>2026-08-26</lastmod><changefreq>yearly</changefreq><priority>0.4</priority></url>

</urlset>
