iOS appRunbooks · pinned from gurbani-soul-ios
Runbook: iOS hotfix
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.
https://docs.gurbanisoul.com/ios/process/runbooks/ios-hotfix/ · a pinned copy of Algorythmos-AI/gurbani-soul-ios at a386422
iOS has no rollback. The levers, mildest first:
- Pause the phased release — stops new automatic updates; users who already updated keep the build. A pause has a time limit (check the current one in App Store Connect). Updates only: a first version has no phased release, so for it this lever does not exist — go to step 2.
- Ship a fixed build (below), optionally asking for an expedited review through App Store Connect → Contact Us → App Review. Use it rarely and say plainly what is broken; a scripture-fidelity defect is a legitimate reason.
- Remove from sale — last resort; existing installs keep working (the app is fully offline).
Procedure
- Reproduce and write the failing test first. Scripture text is never edited to “fix” anything —
see the prime directive in the platform’s
docs/engineering/invariants.md. - Branch
hotfix/<slug>from this app’s release tag (not from a latermain, which may already hold unreleased work):git worktree add <scratch>/wt-hotfix -b hotfix/<slug> vX.Y.Z - One number, both surfaces: the platform releases
X.Y.(Z+1)too (never a one-sided hotfix — see its release runbook). Once that tag exists,make vendor-sync-platform REF=vX.Y.(Z+1)and setMARKETING_VERSIONtoX.Y.(Z+1). Build numbers restart at the ledger’snextfor the new version. - PR
hotfix/<slug>→main(squash). CI must be green:gates,parity,app. - Tag the app release
vX.Y.(Z+1)on thatmaincommit once its CI is green (the tag cannot be moved afterwards). Then, from the tag — a worktree, or theiOS TestFlight uploadworkflow run at the tag:make testflight TEAM_ID=… BUILD=N CHANNEL=appstore UPLOAD=1The script refuses a dirty tree, an off-trunk or untagged commit and red CI, exactly as for a normal release. - Commit the ledger row via PR.
make appstore-preflightmust pass. Re-sign Charter S on the new build number; re-run only the hardware checks the fix could affect, and say which. - Submit. After approval, release and resume (or restart) the phased rollout.
- Write the incident note: what users saw, how it got past the gates, which gate now catches it. A hotfix without a new test or gate is not finished.
Sri Guru Granth Sahib Ji — Knowledge Base wiki. Generated from commit c3d9360. Updated 27 October 2026. This copy may be out of date; the page is at https://docs.gurbanisoul.com/ios/process/runbooks/ios-hotfix/