fabro/lib
Bryan Helmkamp a611e00fe6
Rescue release pushes when origin/main moves mid-release
The release push raced any commit that landed on main while the release
smoke ran (~15 minutes): git push was rejected as non-fast-forward and
the whole release failed, as seen on the v0.332.0-nightly.1 attempt.
Worse, the push was not atomic — if the tag ref had been accepted while
the main ref was rejected, the release would have shipped from an
orphan commit and main would never have received the version bump.

Make the push atomic (both refs or neither) and add a bounded rescue
loop: on rejection, drop the bump commit and tag this run created,
fast-forward onto the updated origin/main, recompute the version
against freshly fetched tags, and rebuild the bump commit on the new
tip. The fast-forward uses --ff-only so a genuinely diverged local main
(unpushed commits) fails loudly instead of being reset away.

The retried tag can include commits the smoke did not test; those
commits passed CI to land on main, and the Release workflow re-runs the
full test suite on the tagged commit before publishing anything.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 07:40:13 -04:00
..
apps Fix flaky run id vs variable timestamp assertion 2026-08-21 06:21:33 -04:00
components Merge remote-tracking branch 'origin/main' into pr-764 2026-08-20 22:07:20 -04:00
foundation Rescue release pushes when origin/main moves mid-release 2026-08-21 07:40:13 -04:00
packages/fabro-api-client Merge remote-tracking branch 'origin/main' into fix/redaction-corrupts-executable-spec 2026-08-20 20:42:20 -04:00