Release Process
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.
The steps that take a green integration branch to a tagged production release.
https://docs.gurbanisoul.com/process/release/
- On
integration, ensure everything is green on staging. - Bump the unified version:
make release VERSION=1.2.0(runsbump.py+check_versions.py). Fill in the CHANGELOG section it stubs. - If the dataset changed: it was rebuilt, proven and published in sggs-data first; here the
release carries the reviewed
dataset.lock.jsonbump and the regenerated contract (make contract). - Open a release PR
integration → main, labelledrelease. All gates must pass. - Merge (a merge commit).
deploy-productiondeploys the exact commit, verifies it, and only then tagsvX.Y.Zand cuts a GitHub Release from the CHANGELOG section. The tag names the commit, and that commit’sdataset.lock.jsonnames the exact database it serves. - Confirm with
make verify-prod(commit identity, health, Ang 712 heading, web deployment). The release that moves production’s API contexts onto their own functions (a later one, after the app is live; services-production steps 2–3) also owes the performance gate, from the same vantage as the baseline:python3 tools/perf_baseline.py --base https://gurbanisoul.com --from "<same vantage>" --compare docs/perf/baseline-2026-09.jsonmust PASS (p95 within +10 % per context), and each context’sX-Servicemust name itself. - iOS is part of every release. After
mainis taggedvX.Y.Z, the app repository (Algorythmos-AI/gurbani-soul-ios) vendors this release (make vendor-sync-platform REF=vX.Y.Z), setsMARKETING_VERSIONtoX.Y.Z, tags its ownvX.Y.Zand uploads the App Store binary (make testflight TEAM_ID=… BUILD=1 CHANNEL=appstore UPLOAD=1; the archive refuses anappstoreupload not built against platformvX.Y.Z). It commits its ledger. The release is complete only whenscripts/release/check_release_complete.py X.Y.Zpasses.
Versioning
SemVer, one unified version number across web, API and iOS — the footer, /api/meta,
/api/health, the iOS About screen and the App Store all read the same X.Y.Z, and they are
never allowed to differ. Every release is re-archived at the same version and uploaded as
iOS X.Y.Z (1) from the release tag, even when the change is web-only — so the number in the
App Store always equals the live site. The iOS build number restarts at 1 per version and
only increments for a re-upload of the same version (e.g. an App Review fix). Never ship a
one-sided hotfix: web or iOS fixes bump the patch everywhere. MAJOR = breaking
API/data-model (e.g. a comp_id renumber); MINOR = features or data corrections; PATCH
= fixes. RCs on integration are vX.Y.Z-rc.N. The DB keeps its own decoupled meta.version.
See ADR-0004.
Sri Guru Granth Sahib Ji — Knowledge Base wiki. Generated from commit c3d9360. Updated 13 October 2026. Verified against a661527 on 2026-09-26. This copy may be out of date; the page is at https://docs.gurbanisoul.com/process/release/