Skip to content

fix(ci): publish Rust releases before proposing the next PR - #7818

Merged
kixelated merged 2 commits into
mainfrom
quest/m0/ci/release-pr-after-release
Nov 4, 2026
Merged

kixelated merged 2 commits into
mainfrom
quest/m0/ci/release-pr-after-release

Conversation

@kixelated

@kixelated kixelated commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

On the release run for moq-dev/moq#7651, release-pr ran at 19:56:23Z, compared local moq-tokio 0.19.33 with registry 0.19.32 at 19:56:50Z, and opened moq-dev/moq#7750 at 19:57:17Z after warning about duplicate 0.19.33 changelog entries. Only then did release start at 19:57:18Z and publish 0.19.33 at 20:01:14Z. The proposal observed the merged release before it was published.

Approach

Run release-plz release before release-plz release-pr in the existing recipe. A publish failure stops the recipe before PR creation. Keep the quest accurate about the remaining deployment and verification.

Primary-source checks:

  • The workflow invokes the flake-pinned CLI, currently release-plz 0.3.172; it does not invoke or pin a release-plz action. Its release source waits for registry publication before returning success; release-pr proposes only when the package update produces changes.
  • Inspected the upstream action's current source at immutable commit c19c3f8. It also runs release-pr first. This corrects the plan's assumption about copying its order; the recorded failure establishes why our recipe needs the reverse.
  • release-plz release-pr --help has no dry-run option. The action's dry_run input applies only to release, so using its default command as a safe reproduction would still create a real PR.

Impact

  • Public API and wire: none.
  • The release workflow, branch guards, concurrency, credentials, and permissions are unchanged. The planned Rust OIDC migration can continue calling this recipe.

Alternatives

Keep the fix in the shared recipe. Copying the action's order retains the observed problem. Separate jobs or a new workflow add coordination without changing the publication boundary. No retries or delays are needed.

Validation

  • quest gate just ci origin/main: pass in the Nix dev shell, including 11,641 Rust tests (133 skipped by the existing profile), Rust checks, repository lints, and tooling tests.
  • quest check --base origin/main: 603 documents pass; git diff --check: pass.
  • Disposable release-plz command stub: original recipe reproduces the wrong release-pr, release order. Fixed recipe runs release, release-pr; a failure in release stops before release-pr, and either command's exit 42 propagates. Token forwarding is checked with a non-secret fixture value.
  • git merge-tree --write-tree origin/main HEAD: no conflicts.

No packages or release tags were published, and no real release or release PR was run for reproduction. The disposable command-stub check validates orchestration, not a deployed release outcome.

Review

Claude Code, claude-opus-5-5 at medium effort, round 1, reviewed 18205b52e1b424822af875ab65fa019313b7c002 against origin/main at cd5a8476cb21681ad08f5ac96eb433253f57547c. No findings.

Deployment

The implementation is ready to land independently. To finish the retained quest, land this fix on main, then backport only the release recipe to release in a separate PR under the main-first backport rule. On the next approved release merge, verify the Release RS log publishes before proposing and opens no stale PR. No post-fix release has run; this PR claims the checked implementation, not deployment evidence. No maintainer design decision remains.

Follow-ups

  • Complete the existing quest's release backport and live verification after this main PR lands. Recommended scope: only the release recipe, with no Rust test/lint changes or workflow/credential migration.
  • Checked newer open PR changed files before claiming. moq-dev/moq#7667 edits feature/benchmark continuation, moq-dev/moq#7812 edits Miri, and moq-dev/moq#7817 owns default-feature test lints. No semantic overlap with the release recipe was found.

(Written by GPT-6.1 Sol)

@kixelated kixelated changed the title A release merge opens no stale release PR fix(ci): publish Rust releases before proposing the next PR Nov 4, 2026
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
@kixelated
kixelated marked this pull request as ready for review November 4, 2026 05:39

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review by review (OpenAI)

Reviewed head 18205b5. I found no actionable issue in the release-order change. Publishing before proposing addresses the observed stale proposal, and failure still stops the recipe before the next step. The quest correctly leaves the release-branch backport and live verification open.

Verification: GitHub-only static review of the recipe, workflow and pinned release-plz behavior. I did not run tests, publish a release, or exercise the deployed workflow.

(Written by review (OpenAI))

@coderabbitai

coderabbitai Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

The release recipe now runs release-plz release before release-plz release-pr. The plan records that the prior order opened a release PR with duplicate notes before the version was published. It also records the proposed backport and verification steps. No post-fix release has run, so deployment remains unverified.

Severity of issue fixed: Low

Merge Risk: Minimal · up to 18205

The recipe now publishes before proposing the next release. No merge-blocking issue is established; the next approved release should confirm the documented ordering in deployment.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title "fix(ci): publish Rust releases before proposing the next PR" matches the main change in the changeset. The justfile release recipe now runs release-plz release before `release-plz relea…
Description check Passed The description explains the problem (a release PR was proposed before the merged version was published), the approach (run release-plz release before release-plz release-pr in the shared recipe),…
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title "fix(ci): publish Rust releases before proposing the next PR" matches the main change in the changeset. The justfile release recipe now runs release-plz release before release-plz release-pr, and the quest plan file is updated to match. The title states the change and its purpose in one line.

Full details: Description check

Explanation

The description explains the problem (a release PR was proposed before the merged version was published), the approach (run release-plz release before release-plz release-pr in the shared recipe), validation steps, and deployment follow-ups. It relates directly to the changes in rs/justfile and the quest plan file.

Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.)

Finishing Touches
Simplify code
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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
Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: edf12442-178b-4396-96bc-f79f258908fd
Commits

Reviewing files that changed from the base of the PR and between cd5a847 and 18205b5.

Files selected for processing: 2
  • quest/m0/ci/release-pr-after-release.md
  • rs/justfile

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 0 remain after this review.

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes

Reviewed the two-file change that reorders the Rust release recipe and updates the retained quest.

  • Recipe order — rs/justfile now runs release-plz release before release-plz release-pr, so a just-merged version publishes to the registry before the proposal step runs. just aborts on the first failing line, preserving the intended failure boundary.
  • Quest record — the plan now carries the confirmed run timeline and keeps the release backport plus live release verification under ## Waiting.

The rationale checks out against upstream: release waits on registry publication (wait_until_published) before returning, and release_pr returns None when the update set is empty, so a merged release is no longer re-proposed. The no-dry-run and no-upstream-precedent notes are accurate, and the remaining deployment risk is documented rather than claimed.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

@kixelated
kixelated added this pull request to the merge queue Nov 4, 2026
Merged via the queue into main with commit baed05a Nov 4, 2026
8 checks passed
@kixelated
kixelated deleted the quest/m0/ci/release-pr-after-release branch November 4, 2026 07:27
kixelated added a commit that referenced this pull request Nov 4, 2026
… release

The main fix (#7818) and its release backport (#7842) both landed, and the backport's own Release RS run published before proposing. What remains is evidence from a release merge that publishes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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