TestFlight OTA script must assert the publish worktree is at origin/main HEAD #549
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Process gap found during #545: the 2026-08-30 late-night production OTA was published from main@38cbbab (10:19am) — hours AFTER PRs #355/#359/#361/#363/#365 had merged (10:53–22:52) — because the standing main-testflight worktree was not pulled forward before
eas update. Result: "fix merged + OTA shipped" was believed true while every phone ran pre-fix code for ~27h, and the #536 fix only actually reached the channel with the next OTA (2026-08-31 18:21Z). This burned two debugging sessions on #545.eas updatebundles the working tree, not a git ref, so nothing catches this today.Fix: in the
testflightscript (mobile/rork-recon-card-scanner/expo/package.json), before publishing: fetch origin main and refuse to run unless HEAD equals origin/main and the tree is clean (allow an explicit override flag for deliberate pinned publishes). Also print the commit being published into the eas update --message so the channel records what each update was cut from.Verification afterward: fetch the channel manifest from u.expo.dev/(projectId) with expo-channel-name / expo-runtime-version / expo-platform headers — its createdAt vs merge times shows what actually shipped.
Filed from a Claude Code session