<?xml version="1.0" encoding="UTF-8"?>
<!--
  The public surface: the English landing page, its Arabic twin, and the legal +
  contact documents. Absolute URLs on the canonical host (https://vera-agent.com).
  Application routes are excluded here and disallowed in robots.txt. Core sitemap
  elements stay in sitemaps.org schema order (loc, lastmod, changefreq, priority)
  with the xhtml extension last. READINESS R1.6, extended by R9.4.

  TWO CHECKS HOLD THIS FILE TO THE SITE, because "keep this in sync" on its own
  did not: scripts/prerender.mjs fails the build when a prerendered URL is
  missing here OR when a <loc> here was not prerendered (that second one is how
  /terms came to be submitted to Google and answered with the noindex SPA
  shell), and scripts/check-sitemap-freshness.mjs fails the invariants when a
  <lastmod> below is older than the source that renders that page. Bump the
  <lastmod> when you change a page — that is the whole reason Google re-crawls
  it, and twenty-four of these entries were once stale by up to eleven days.

  The two landing URLs carry reciprocal hreflang alternates matching the <link
  rel="alternate"> tags in the prerendered documents. The legal documents
  deliberately carry none: they are published in English only, at one URL each,
  so an alternate would advertise a translation that does not exist. Keep this
  The legal/contact documents (/legal, /terms, /privacy, /refund, /contact) ARE
  listed below: company.ts now carries real business facts, so LEGAL_PUBLISHED is
  true and the five documents prerender. If a placeholder is ever reintroduced the
  surface unpublishes itself — remove the five entries here too, since this file is
  static and cannot read the flag. Keep them in step with the LEGAL_PAGES array in
  apps/server/src/server.ts.

  The guide documents (/guide + /guide/<slug>) are the repository's docs/*.md,
  rendered at build time. English-only for the same reason as the legal set, so
  no alternates. Keep them in step with the GUIDES array in
  apps/dashboard/src/pages/guide/manifest.ts. They change with the product rather
  than with the calendar, hence changefreq=monthly and a higher priority than the
  policies: this is the surface a search visitor actually wants.

  THE BLOG ENTRIES AT THE BOTTOM ARE GENERATED, and they are the only ones that
  are. They live between BLOG:BEGIN and BLOG:END and come from the frontmatter of
  content/blog/*.md via `node apps/dashboard/scripts/sync-blog-sitemap.mjs
  --write`. Do not hand-edit them. The long note above that region explains why
  that surface pays a different toll from every other one here, and why both
  checks above still apply to it.
-->
<urlset
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml"
>
  <url>
    <loc>https://vera-agent.com/</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/" />
  </url>
  <url>
    <loc>https://vera-agent.com/ar</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/" />
  </url>
  <!--
    Marketing section pages. Each carries its OWN hreflang pair (/features ⇄
    /ar/features), not the root pair — pointing these at "/" would declare them
    duplicates of the home page. Keep in step with LANDING_SUBPAGES in
    apps/dashboard/src/pages/landing-pages.ts.
  -->
  <url>
    <loc>https://vera-agent.com/features</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/features" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/features" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/features" />
  </url>
  <url>
    <loc>https://vera-agent.com/ar/features</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/features" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/features" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/features" />
  </url>
  <url>
    <loc>https://vera-agent.com/how-it-works</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/how-it-works" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/how-it-works" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/how-it-works" />
  </url>
  <url>
    <loc>https://vera-agent.com/ar/how-it-works</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/how-it-works" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/how-it-works" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/how-it-works" />
  </url>
  <url>
    <loc>https://vera-agent.com/proof</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/proof" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/proof" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/proof" />
  </url>
  <url>
    <loc>https://vera-agent.com/ar/proof</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/proof" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/proof" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/proof" />
  </url>
  <url>
    <loc>https://vera-agent.com/security</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/security" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/security" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/security" />
  </url>
  <url>
    <loc>https://vera-agent.com/ar/security</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/security" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/security" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/security" />
  </url>
  <url>
    <loc>https://vera-agent.com/pricing</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/pricing" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/pricing" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/pricing" />
  </url>
  <url>
    <loc>https://vera-agent.com/ar/pricing</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/pricing" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/pricing" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/pricing" />
  </url>
  <url>
    <loc>https://vera-agent.com/legal</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/terms</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/privacy</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/refund</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/contact</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <!--
    The guide surface is English-first: a guide gains an /ar URL only when a real
    translation is listed in GUIDE_TRANSLATIONS (pages/guide/manifest.ts). The
    hreflang pairs below are therefore PER PAGE, not blanket — declaring an `ar`
    alternate for a guide that has none would advertise a translation that 404s.
    Keep in step with GUIDE_TRANSLATIONS; the prerender fails the build when this
    file and the rendered set disagree in either direction.
  -->
  <url>
    <loc>https://vera-agent.com/guide</loc>
    <lastmod>2026-09-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/guide" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/guide" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/guide" />
  </url>
  <url>
    <loc>https://vera-agent.com/ar/guide</loc>
    <lastmod>2026-09-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/guide" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/guide" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/guide" />
  </url>
  <url>
    <loc>https://vera-agent.com/guide/getting-started</loc>
    <lastmod>2026-09-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/guide/getting-started" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/guide/getting-started" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/guide/getting-started" />
  </url>
  <url>
    <loc>https://vera-agent.com/ar/guide/getting-started</loc>
    <lastmod>2026-09-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/guide/getting-started" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/guide/getting-started" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/guide/getting-started" />
  </url>
  <url>
    <loc>https://vera-agent.com/guide/sdlc</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/local-agent</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/claude-plugin</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/mcp</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/ci-integration</loc>
    <lastmod>2026-09-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/guide/ci-integration" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/guide/ci-integration" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/guide/ci-integration" />
  </url>
  <url>
    <loc>https://vera-agent.com/ar/guide/ci-integration</loc>
    <lastmod>2026-09-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/guide/ci-integration" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/guide/ci-integration" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/guide/ci-integration" />
  </url>
  <url>
    <loc>https://vera-agent.com/guide/vera-check</loc>
    <lastmod>2026-08-24</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/ci-rider</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/github-integration</loc>
    <lastmod>2026-07-22</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/engines</loc>
    <lastmod>2026-07-24</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/ios</loc>
    <lastmod>2026-07-24</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/suites</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/actions</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/test-builder</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/recording</loc>
    <lastmod>2026-09-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/guide/recording" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/guide/recording" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/guide/recording" />
  </url>
  <url>
    <loc>https://vera-agent.com/ar/guide/recording</loc>
    <lastmod>2026-09-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://vera-agent.com/guide/recording" />
    <xhtml:link rel="alternate" hreflang="ar" href="https://vera-agent.com/ar/guide/recording" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://vera-agent.com/guide/recording" />
  </url>
  <url>
    <loc>https://vera-agent.com/guide/control-flow</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/variables</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/business-context</loc>
    <lastmod>2026-08-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/scenarios</loc>
    <lastmod>2026-08-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/ai-cost</loc>
    <lastmod>2026-08-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/flows</loc>
    <lastmod>2026-09-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/import-export</loc>
    <lastmod>2026-09-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/visual-regression</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/analytics</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/scheduled-runs</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/browser-config</loc>
    <lastmod>2026-08-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/changelog</loc>
    <lastmod>2026-09-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/data-handling</loc>
    <lastmod>2026-09-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/self-hosting</loc>
    <lastmod>2026-08-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/guide/api</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <!-- Comparison surface (GROWTH G3.1). Listed only while COMPARE_PUBLISHED is
       true, which is derived from every competitor fact carrying a dated
       source. If a fact is ever retired to unverified, these six come out in
       the same change - prerender.mjs fails the build otherwise, in both
       directions. -->
  <url>
    <loc>https://vera-agent.com/compare</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/compare/testrigor</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/compare/mabl</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/compare/qa-wolf</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/compare/momentic</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/compare/checkly</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <!--
    THE BLOG (GROWTH G5.2) — the one GENERATED region of this hand-maintained
    file. Everything above is written by a person; everything between the two
    markers below is written by

        node apps/dashboard/scripts/sync-blog-sitemap.mjs --write

    from the frontmatter of content/blog/*.md. Do not hand-edit it: the next sync
    overwrites your edit, and scripts/check-sitemap-freshness.mjs fails the
    invariants in the meantime.

    WHY THIS ONE IS GENERATED. Every other surface here is a small closed set
    edited a few times a year, so a hand-written entry per page is a fair toll. A
    blog is an open set, and the whole point of the surface is that a post
    publishes by adding one markdown file — a per-post XML edit is a per-post
    opportunity to forget, on the one file where forgetting means the page is
    never discovered.

    IT IS STILL CHECKED, IN BOTH DIRECTIONS, and generating it did not weaken
    that. The region is COMMITTED, so what the checks compare is this file rather
    than a generator's in-flight output: a post added, deleted or renamed without
    re-running the sync fails, a hand-edit that drifted fails, and a merge that
    took one side of this file and the other side of content/blog/ fails.
    <lastmod> is the post's own frontmatter date — a human statement in a
    committed file, and the same date printed on the page.
  -->
  <!-- BLOG:BEGIN -->
  <url>
    <loc>https://vera-agent.com/blog</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://vera-agent.com/blog/three-kinds-of-green</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <!-- BLOG:END -->
</urlset>
