Skip to content

v1.17.1: ship.sh pushes dev after the post-release rebase - #172

Merged
garretpremo merged 12 commits into
mainfrom
dev
Aug 25, 2026
Merged

garretpremo merged 12 commits into
mainfrom
dev

Conversation

@garretpremo

Copy link
Copy Markdown
Contributor

Closes #167

Bug fixes since v1.17.0.

🐛 Fixes

  • ship.sh syncs dev back to origin after a release (fix: push dev to origin after the post-release rebase (#167) #168) — the post-release rebase moved local dev to main's tip but never pushed it, so origin/dev kept pointing at the pre-release commit. The next git pull origin dev refused with "divergent branches", and anything branching from origin/dev — a fresh clone, a worktree, an automated agent — silently started from before the release. The push is never forced: if work landed on dev during the release window the push is rejected, and the script warns with the manual reconcile rather than discarding it.

Shipped via scripts/ship.sh.

ship.sh rebased local dev onto main and stopped, so origin/dev kept
pointing at the pre-release commit. The next `git pull origin dev`
refused with "Need to specify how to reconcile divergent branches", and
anything branching from origin/dev — a fresh clone, a worktree, the
parallel issue fleet — silently started from before the release.
Observed after both v1.16.0 and v1.17.0.

The two call sites were identical copies, which is why the gap existed
twice; they now share a sync_branches helper.

The push is never forced. A rejected push means someone landed work on
dev during the release window, so it warns with the manual reconcile and
returns success — by that point the release has already published, and a
sync hiccup must not fail the ship.
fix: push dev to origin after the post-release rebase (#167)
@garretpremo garretpremo added the release Merges from dev -> main. Contains release notes and triggers an npm publish label Aug 17, 2026
The suite is designed to opt out when the spec can't be fetched — every
test guards on skipIfOffline(). But the download now takes ~10s against
bun's 5s default hook timeout, and a timed-out beforeAll is reported as a
hard failure, not a skip, so the opt-out never got a chance to run. This
failed CI on the v1.17.1 release with an unhelpful '(unnamed)' test.

The hook gets an explicit 60s budget and the fetch is bounded at 20s
inside it, so a slow-but-working download completes while a hanging or
throttled one degrades to the intended skip.
d118990 was meant to carry only the Stripe e2e timeout fix. Another
session working issue #170 in the same checkout had staged the removal
of src/auth-detector.ts and tests/auth-detector.test.ts, and `git
commit` takes the whole index, not just the paths passed to `git add`.
The deletion rode along into dev and into release PR #172.

Restoring both files here so the release ships only what was reviewed.
The #170 removal is legitimate work and lands on its own branch, with
its own review.
ship.sh runs `npm version patch` unconditionally, so each failed run
bumps again: two CI failures (both GitHub 429s on action downloads, not
code) left dev claiming 1.17.2 while npm is still on 1.17.0. Resetting
the file so the next run lands on the intended 1.17.1.
@garretpremo
garretpremo merged commit d733b16 into main Aug 25, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Merges from dev -> main. Contains release notes and triggers an npm publish

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ship.sh never pushes dev after the post-release rebase, leaving origin/dev diverged

1 participant