data flow — registries → helper → XML response
A new post = a new sitemap entry. Zero human edit.
Per-request generation. The registries are the source of truth; the sitemap is a projection.
a31_blog.ts
ALL_POSTS
{ slug, title, description, date }[]
→ /blog/<slug> with lastmod = date
a31_sama.ts
ALL_SAMA
{ slug: "sorted" | "architecture" | … }[]
→ /sama/<slug>
b32_sitemap.ts (const)
STATIC_URLS
["/", "/blog", "/sama/v2", "/guides", …]
→ load-bearing fixed routes
b32_sitemap.ts · renderSitemap(urls)
pure · deterministic · no I/O · XML-escapes & and <
sibling test — empty list · single url · with/without lastmod · order preserved · special-char escape
GET /sitemap.xml → 200 application/xml; charset=utf-8 · Cache-Control: public, max-age=3600
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://tdd.md/blog/sama-v2-workingset-cross-repo-baseline</loc><lastmod>2026-05-27</lastmod></url> …
No static file. No human edit. The next /sitemap.xml fetch after a deploy already lists every new post.