<?xml version="1.0" encoding="UTF-8"?>
<!--
  Sitemap do site publico. Vive em `public/` porque o `vite build` copia essa pasta inteira para
  `dist/`, entao o sync do deploy o publica sem passo novo.

  ANTES DISTO O ARQUIVO NAO EXISTIA, e o efeito era pior que um 404: `/sitemap.xml` caia no custom
  error do CloudFront e devolvia 200 com o HTML do SPA (1.640 bytes, `text/html`). Um 404 diz ao
  crawler "nao existe"; um 200 com HTML diz "existe e esta malformado".

  ATENCAO AO ESCREVER AQUI: a especificacao XML proibe a sequencia de dois hifens dentro de um
  comentario. A primeira versao deste arquivo usava travessao ASCII na prosa e foi PUBLICADA
  XML-invalida (`not well formed (invalid token)`), reproduzindo em outra camada exatamente o
  defeito que ele conserta. Use travessao Unicode (—) ou reformule. Guard: o teste
  `src/test/infra/lp-seo-i18n.test.ts` parseia este arquivo com DOMParser, porque regex conta tags
  e nao decide se o documento e bem-formado.

  SO ENTRAM URLs QUE RESPONDEM 200 COM CONTEUDO PROPRIO. Medido em producao antes de escrever:

    /                            200  185.944 B   a LP. A origem e S3 REST e a CloudFront Function
                                                  `onisciente-hostname-router` reescreve `/` para
                                                  o objeto `/lp/index.html`.
    /pt/privacidade/index.html   200   13.909 B
    /pt/termos/index.html        200   15.307 B

  Deliberadamente FORA:
    · `/lp/index.html` — serve corpo IDENTICO a `/`, e e por isso que as duas paginas carregam
      `<link rel="canonical" href="https://onisciente.ai/">`. Listar as duas seria declarar
      conteudo duplicado no proprio sitemap.
    · `/pt/privacidade/` e `/pt/termos/` (com barra, sem o arquivo) — a origem e S3 REST via OAC,
      SEM index document, entao essas devolvem o SPA. O `index.html` no fim do caminho nao e
      enfeite: e a unica forma que serve a pagina real.
    · `/download/index.html` — responde 200, mas o `robots.txt` tem `Disallow: /download/`.
      Sitemap e robots discordando e contradicao interna, e o guard reprova.
    · `/documentation` — NAO EXISTE em ponta nenhuma (sem objeto no bucket, sem rota no App.tsx),
      apesar de o steering afirmar que existe.
    · `app.` e `admin.` — atras de login, nao indexaveis.

  SEM `<lastmod>`, `<changefreq>` e `<priority>`, de proposito. Os dois ultimos o Google declarou
  publicamente que ignora. O `lastmod` seria uma data CRAVADA que envelhece em silencio a cada
  edicao da pagina: afirmacao que se torna falsa sozinha, a pior classe de conteudo num arquivo
  mantido a mao. Se um dia o sitemap passar a ser gerado no build, `lastmod` vem do mtime.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://onisciente.ai/</loc>
  </url>
  <url>
    <loc>https://onisciente.ai/pt/privacidade/index.html</loc>
  </url>
  <url>
    <loc>https://onisciente.ai/pt/termos/index.html</loc>
  </url>
</urlset>
