When site.trailingSlash is true, every non-root canonical gets a trailing slash
across canonical/og:url/hreflang/sitemap/breadcrumbs/locale-switcher — aligning
the framework's emitted URLs with how a static host serves nested dirStyle
output (/about/ at 200, /about 301s to it). Default (off) is byte-identical.
Single source: buildCanonicalUrl gains a trailingSlash option; the four
consumers read site.trailingSlash and thread it through. Pairs with the SSG
Amplify catch-all (/404.html @ 404). Adds a sitemap consistency invariant test;
full suite 611 passing.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>