Repository navigation
fix(release): preserve API compatibility and validate release candidates - #661
Conversation
Calculate the release version with the changelog parser and preserve Cargo compatibility boundaries for breaking public APIs. Keep the breaking marker and caller migration in generated notes, reuse an existing release PR across version changes, and use one generated body for both changelog and PR. Exercise the real planner and pinned git-cliff with disposable Git histories in the release-plan CI lane. Assisted-by: Reimu (gensokyo-skills:reimu-incident-triage)
Explicitly dispatch the normal bounded CI workflow after updating the release PR, because GITHUB_TOKEN-generated PR events do not start PR validation. Assisted-by: Reimu (gensokyo-skills:reimu-incident-triage)
[High impact] The reviewed changes appear safe to merge. SummaryThe PR replaces patch-only release planning with compatibility-aware version selection and preserves breaking-change migration notes.
Diagram%%{init: {'theme': 'neutral'}}%%
flowchart LR
A[Main changes] --> B[Plan version with git-cliff]
B --> C[Generate notes and update release branch]
C --> D[Create or update release PR]
D --> E[Dispatch candidate CI]
E --> F[Run planned checks]
F --> G[Verify plan and receipts]
Reviews (3) · Last reviewed commit: "docs(release): explain token-created PR ..." · Reviewed by Greptile |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c91712fd03
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Include workflow_dispatch in the stable aggregate so candidate jobs must provide a complete passing receipt set before the release PR can merge. Assisted-by: Reimu (gensokyo-skills:reimu-incident-triage)
|
@codex review |
|
Codex Review: Didn't find any major issues. Hooray! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Confirm the existing action_required run against current GitHub docs rather than describing all token-created PR events as suppressed. Explicit dispatch starts candidate validation directly. Assisted-by: Reimu (gensokyo-skills:reimu-incident-triage)
|
@codex review |
|
Codex Review: Didn't find any major issues. Breezy! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary
Release PR #599 was generated as 0.1.29 despite #651 changing the public
ReadResponse.target_end_linefromusizetoOption<usize>. Its notes also omitted the breaking marker and the caller migration. Both issues originate in the release generator: it unconditionally increments patch, and the template drops breaking descriptions.Use the existing pinned git-cliff parser for version planning with an explicit pre-1.0 compatibility policy. The actual unreleased history now plans 0.2.0. Generated notes retain breaking markers and migration text; the same rendered file supplies the changelog and PR body. Reuse the existing autorelease PR across a version change, rejecting ambiguous multiple candidates. The release-plan CI owner now executes real Git/git-cliff fixture regressions before cargo-dist validation. Each generated candidate explicitly dispatches CI on its branch, covering the latest #599 head whose token-created pull-request run is in
action_requiredwith no executed jobs. GitHub requires approval for these automatic PR events; explicit dispatch starts validation directly, including the stableRequired checksaggregate.The separate context experiment #632 remains draft pending its owner-recall quality gate. Merging this workflow fix updates the release candidate; the release PR itself controls tagging and publication.
Validation
ReadResponse.target_end_lineand all breaking markers.scripts/plan_release.pyagainst the same real history with git-cliff 2.13.1: emits 0.2.0; rendered notes include the breaking marker and nullable-end/client migration.python3 -m unittest scripts/test_plan_release.py— five real-process integration tests pass, covering compatible 0.x features, the actual fix(read)!: distinguish unknown target ends from scan frontiers #651 commit shape, footer-only and subject-only breaks, stable-version semantics, and pending-tag/no-change behavior.cargo test --locked --package leantoken-xtask ci::tests -- --test-threads=1— 17 passed; one compiler job under a memory guard, peak group RSS 0.35 GiB.cargo fmt --allandgit diff --check— clean.Follow-up to the three outstanding #599 review threads. The generated release candidate, CI receipts and post-merge main will be verified before completing this follow-up.