App Ops Desk · Issue #4

Rollback discipline after a bad build

A bad TestFlight doesn’t have to become a lost week. Panic thrash does. Solo founders need a boring halt-and-return protocol.

Read time: 6 min After things go wrong Pairs with Issues #0–#1
One action this week: Write down your current last known good build: marketing version, build number, git SHA, Xcode version, and why it was good. Put it at the top of your release log before the next experiment.

Define “bad” quickly

UI polish complaints are not automatic rollbacks. Broken trust paths are.

Halt rules

  1. Stop uploading. More builds won’t help until diagnosis exists.
  2. Mark the bad build in the release log with symptoms + devices.
  3. Point testers at last known good if one is still available in TF.
  4. Disable auto-submit fantasies. No “maybe the next archive fixes it” without a root cause note.

Diagnosis order (don’t skip)

  1. Is this reproducible on the archive build (not just debug)?
  2. Did toolchain/signing/version identity change? (Issue #0/#1)
  3. Did dependencies/privacy surface change? (Issue #2)
  4. What is the smallest git diff from last known good?
  5. Can you reproduce with a fresh install?

Return-to-good paths

Path A — revive last good for testers

Path B — rebuild last good SHA as a new build number

Path C — forward fix only when root cause is known and smaller than a revert.

Communication template

Status: Build 221 paused
Issue: [one sentence]
Action for testers: use build 214 (1.5.0) until further notice
Next update: [time window]

Copy/paste rollback checklist

  1. Last known good recorded before new work
  2. Bad build labeled with symptoms/devices
  3. Uploads halted
  4. Testers redirected with exact build numbers
  5. Root cause note written (even if “unknown — bisecting”)
  6. Next archive has new build number + smoke results
  7. Release log updated with outcome
Join the App Ops Desk waitlist Weekly release ops for people who ship alone.