Skip to content

ci(release): carry the finalize fixes onto the 1.6 line - #3530

Merged
myasnikovdaniil merged 1 commit into
release-1.6from
backport/release-1.6-finalize-fixes
Aug 4, 2026
Merged

ci(release): carry the finalize fixes onto the 1.6 line#3530
myasnikovdaniil merged 1 commit into
release-1.6from
backport/release-1.6-finalize-fixes

Conversation

@myasnikovdaniil

Copy link
Copy Markdown
Contributor

Why

release-1.6 was created at v1.6.0's merge commit on 2026-07-22, and the finalize fixes landed on main after that. Workflow files run from the ref they fire on, so a promote PR based on release-1.6 runs this copy of pull-requests-release.yaml, not main's. Shipping v1.6.1 from this line today would repeat two defects v1.6.0 already hit.

What this carries

Three upstream commits, after which this file is byte-identical to main's copy — so later backports touching it will not conflict.

Upstream Change
01e1e7188 persist-credentials: false on the checkout
f49d54a68 publish the release with the merged changelog as its body
ba67fea7d drop paths-ignore from the trigger

persist-credentials

Without it the checkout persists GITHUB_TOKEN as an http.extraheader, which silently wins over the app token injected by git remote set-url. The stable tag then pushes as GITHUB_TOKEN, which creates no workflow run, so tags.yaml never fires and its generate-changelog and update-website-docs backstops stay silent. That is exactly what happened to v1.6.0.

Changelog as release body

Without it the release publishes with the draft's own body, "Promoted from vX.Y.Z-rc.N".

These two compound into a permanent defect on a maintenance line. A patch's changelog is committed to release-1.6.1, merged into release-1.6, and never reaches main — and update-releasenotes.yaml only watches main, so nothing would ever sync it. The tag-time backstop that would have ported it is dead because of the credential bug. v1.6.1 would ship with placeholder release notes permanently, with no error anywhere.

paths-ignore

Latent rather than active. A promote PR carrying only docs/changelogs/vX.Y.Z.md would be dropped by the filter, producing no finalize run, no tag and no error. v1.6.1 will carry tag-string rewrites so it would not have fired, but the filter has no remaining purpose now that the promote PR always carries a changelog.

On the cherry-pick policy

docs/release.md's skip rule says CI-only changes do not belong in a patch. That rule governs release contents; backporting release machinery so the line is releasable at all is a different thing, and there is precedent already on this branch — #3473, #3474 and #3514 are all CI/release backports.

Verification

actionlint clean. zizmor clean, no findings. YAML parses. No bats suite references this workflow, and hack/promote-gate-contract.bats does not exist on this line, so there is no stale contract test to trip. The diff against origin/main's copy of the file is empty.

Not included

Three known gaps on this line are deliberately out of scope, none of which needs a code change to ship v1.6.1:

  • e2e-tag.yaml is absent and tags.yaml has no rc-e2e job, so no E2E runs on the rc. Handled by dispatching E2E Release Tag from main against the published rc tag, which also supplies the promote gate's alternate evidence.
  • pull-requests.yaml has no labeled trigger, so adding full-e2e to the promote PR starts nothing. Backporting that needs the label-event guards too, and rc-time validation makes it unnecessary here.
  • finalize is still the pre-ci(release): make the registry promotion a re-runnable job #3456 monolith, so a mid-registry failure is not re-runnable and needs the documented hand recovery.
NONE

release-1.6 was cut at v1.6.0 on 2026-07-22, and the finalize fixes
landed on main afterwards, so shipping v1.6.1 from this line would repeat
two defects v1.6.0 hit. Workflows run from the ref they fire on: a promote
PR based on release-1.6 runs THIS file, not main's.

Carries three upstream commits, after which this file is byte-identical
to main, so future backports touching it will not conflict:

  01e1e71  persist-credentials: false on the checkout
  f49d54a  publish the release with the merged changelog as its body
  ba67fea  drop paths-ignore from the trigger

Without the first, the checkout persists GITHUB_TOKEN as an
http.extraheader that silently wins over the app token injected by
git remote set-url. The stable tag then pushes as GITHUB_TOKEN, which
creates no workflow run, so tags.yaml never fires and its
generate-changelog and update-website-docs backstops stay silent. That is
exactly what happened to v1.6.0.

Without the second, the release publishes with the draft's body
("Promoted from vX.Y.Z-rc.N"). The two compound on a maintenance line: a
patch's changelog is committed to release-1.6 and never reaches main, and
update-releasenotes.yaml only watches main, so nothing would ever sync it.
v1.6.1 would ship with placeholder release notes permanently.

The third is latent rather than active — a promote PR carrying only
docs/changelogs/vX.Y.Z.md would be dropped by the filter, producing no
finalize run, no tag and no error. v1.6.1 will carry tag-string rewrites
so it would not have fired, but the filter has no remaining purpose now
that the promote PR always carries a changelog.

actionlint and zizmor clean; no bats suite references this workflow, and
hack/promote-gate-contract.bats does not exist on this line.

Assisted-By: Claude <noreply@anthropic.com>
Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: f9e5384a-19bb-4217-bb59-a91bf098a9e2

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added size/M This PR changes 30-99 lines, ignoring generated files area/release Issues or PRs related to release tooling (changelog, backport, release pipeline) labels Aug 4, 2026
@dosubot dosubot Bot added area/ci Issues or PRs related to CI workflows, GitHub Actions, automation backport Should change be backported on previous release labels Aug 4, 2026
@myasnikovdaniil
myasnikovdaniil merged commit 6a5ea55 into release-1.6 Aug 4, 2026
18 checks passed
@myasnikovdaniil
myasnikovdaniil deleted the backport/release-1.6-finalize-fixes branch August 4, 2026 09:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ci Issues or PRs related to CI workflows, GitHub Actions, automation area/release Issues or PRs related to release tooling (changelog, backport, release pipeline) backport Should change be backported on previous release size/M This PR changes 30-99 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant