Skip to content

chore: release v0.5.91 — ship pipeline auto-commit#149

Merged
githubrobbi merged 2 commits intomainfrom
release/v0.5.91
May 8, 2026
Merged

chore: release v0.5.91 — ship pipeline auto-commit#149
githubrobbi merged 2 commits intomainfrom
release/v0.5.91

Conversation

@githubrobbi
Copy link
Copy Markdown
Collaborator

Summary

just ship Phase 2 auto-commit for v0.5.91. Binaries + GitHub Release v0.5.91 are already live (step 09). This PR routes the corresponding commit through branch-protection rules.

Auto-merge

--auto --squash is queued — GitHub will merge as soon as the required status checks pass. Squash is required because main-protection mandates signed commits, and GitHub's rebase-auto-merge cannot sign the rebased commit; the squash-merge commit is signed by GitHub's own key, which satisfies required_signatures: true. The original author's signed commit remains verifiable in the PR branch history.

After merge

Local main had this commit with a different SHA before squash rewrote it onto main; recover with git fetch origin && git reset --hard origin/main.

@githubrobbi githubrobbi enabled auto-merge (squash) May 8, 2026 01:59
@githubrobbi githubrobbi merged commit 5ff321b into main May 8, 2026
27 checks passed
@githubrobbi githubrobbi deleted the release/v0.5.91 branch May 8, 2026 10:09
githubrobbi added a commit that referenced this pull request May 8, 2026
… tag creation through release-plz-* PRs only (#151)

Why
---

The first R4 active-mode workflow run on PR #149's merge (run 25549828912)
failed the `release-plz-release` job with:

    failed to create ref refs/tags/v0.5.91 with sha 113f188...
    Reference update failed (HTTP 422)

Root cause: release-plz's default `release_always = true` makes the
`release` job attempt a tag-creation on EVERY push to `main`, racing
`auto-tag-release.yml` -> `release.yml` (the existing R3-era path
still active until R5 retires the bespoke flow).  On PR #149's merge:

  1. release-plz fired and tried to recompute the CHANGELOG (the bespoke
     `update_all_versions.rs` rewrites `## [0.5.90]` -> `## [0.5.91]`
     in place rather than producing a cliff-style entry, leaving state
     inconsistent with what release-plz expects).
  2. release-plz committed the recomputation locally (synthetic SHA
     `113f188...`) and tried to tag that SHA.
  3. Meanwhile `release.yml` had already created the `v0.5.91` tag at
     the actual merge commit `5ff321b04`.
  4. Two tag-creators racing for the same ref -> release-plz lost ->
     workflow turned RED.

Fix
---

Set `release_always = false` workspace-level in `release-plz.toml`.

This makes `release-plz release` only fire when the latest commit on
`main` is the merge of a PR whose branch starts with
`pr_branch_prefix` (`release-plz-`).

Coexistence semantics:

  * Bespoke `just ship` cycles use `release/vX.Y.Z` branch names ->
    NOT `release-plz-*` -> `release` job NO-OPS cleanly.
    `auto-tag-release.yml` + `release.yml` remain the sole tag-creator
    during the R4 -> R5 transition window.
  * release-plz-driven cycles use `release-plz-vX.Y.Z` branches ->
    matches the gate -> `release` job fires correctly.

Steady-state (post-R5): bespoke flow deleted -> only the
`release-plz-*` path remains -> `release_always = false` continues
gating correctly without modification.  This is the recommended
setting for any project using PR-gated releases per release-plz docs:
https://release-plz.ieni.dev/docs/config (search for `release_always`).

Documentation
-------------

Updates two rows in `docs/architecture/release-automation-plan.md`
\u00a78.1 deviations log:

  * Corrects the existing "R4 baseline" row's misprediction
    ("silently treats as no-baseline" -> actual: HARD-FAIL with
    `cargo package failed`).  Records the v0.5.91 bootstrap details
    (PR #149 squash-merged to `5ff321b04`; tag created by
    `auto-tag-release.yml` -> `release.yml`, NOT release-plz).
  * Adds a new "R4 release-job race" row capturing the symptom +
    root cause + this fix + the post-R5 forward-compat note.

Verification
------------

* `taplo format --check release-plz.toml` -> ok.
* `cargo fmt --check --all` -> ok.
* `typos release-plz.toml docs/architecture/release-automation-plan.md` -> ok.
* Manual cross-check vs release-plz docs: `release_always` field
  documented in https://release-plz.ieni.dev/docs/config under
  the `[workspace]` reference; `pr_branch_prefix` already set to
  `release-plz-` in our config (line 113).

Related
-------

* PR #148 (R4 active mode landed)
* PR #149 (v0.5.91 bootstrap via bespoke flow)
* PR #145 (R3.5 dep-version + R6 publishability)
* docs/architecture/release-automation-plan.md \u00a78.1 (deviations log)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant