DecisionsPlatform
ADR-0005: Production deploys are performed by CI after gates, not by platform git hooks
Page actions
- View as Markdown (opens in a new tab)
- Ask ChatGPT (opens in a new tab)
- Ask Claude (opens in a new tab)
ChatGPT and Claude are third-party services. The link gives them this page's public address and a short instruction. This site records nothing.
Preview: the published page may be older or missing.
Why production is deployed by CI after every required check passes, never by a platform's git hook.
https://docs.gurbanisoul.com/adr/0005-ci-gated-deploys/
Status: accepted (2026-09-15)
Context
After the repo moved to the org, the Vercel/Render GitHub Apps silently lost access and production stayed on v1.0.0 with nothing alerting us. Platform git hooks also deploy regardless of CI results, and a version-string check cannot prove which build is live.
Decision
deploy-production.yml deploys on push to main only after every required check
on that exact SHA succeeds. Render is triggered by a deploy hook pinned to the SHA (ref=);
the API must report that SHA (/api/health.commit). The web build is deployed unaliased,
smoke-tested, then promoted; a failed public smoke rolls back automatically. The release tag
is created only after a verified deploy. Platform auto-deploys are turned off after cutover.
Consequences
A deploy is observable, ordered, and provable. Secrets live in the GitHub
production environment. The Render/Vercel GitHub Apps are still required (Render clones the
repo to build; Vercel previews). Render rollback remains a documented manual step.
Sri Guru Granth Sahib Ji — Knowledge Base wiki. Generated from commit c3d9360. Updated 25 September 2026. This copy may be out of date; the page is at https://docs.gurbanisoul.com/adr/0005-ci-gated-deploys/