dev → GitHub Pages (production, for now)
dev publishes the live domain
after the full gate. Decision of 6 Aug 2026: dev and main go to the same
place for now, and dev is treated as production; a separate main estate is
a future split, stated publicly rather than implied.
qa → Netlify (preview)
The qa branch runs the same test gate, then deploys to Netlify stamped
<next-version>-qa.<sha> — the next release previewed under an honest name.
The version file is never touched here; the truth comes from the tags.
A caught bug that shaped this pipeline
After one deploy, the page offered a new checkbox while the browser was still running
the previous release's JavaScript — GitHub Pages caches modules for ten minutes (issue 026).
Since then CI stamps ?v=<version> onto every same-origin asset URL, so fresh HTML
can never pair with stale code, and the live-QA job verifies every stamped URL resolves.