ci(rust): remove the alpha pre-release publish flag - #41
Merged
Conversation
vbarua
approved these changes
Jul 31, 2026
vbarua
left a comment
Member
There was a problem hiding this comment.
Looking at the updates in substrait-rs and substrait-prost, I think we're ready to enable these packages for real.
Do we need to keep the alpha flag around, or can we just fully delete it?
The `alpha` input let the Rust publish workflows emit auto-incrementing `x.y.z-alpha[.N]` pre-releases so a spec version could be published repeatedly while the pipeline was unproven. That phase is over, and the flag has no remaining use: - It is unreachable from the release pipeline. `publish_artifacts.yml` never forwarded `alpha`, so it was only settable via a manual `workflow_dispatch` on a leaf workflow. - It is not what makes re-runs safe. The `tag_exists` / `artifact_exists` prechecks already skip publishing a crate version that exists on crates.io, so a partially failed release re-runs fine on final versions. - It cannot fix a bad final release. `x.y.z-alpha.N` sorts below `x.y.z` in semver and crates.io is append-only, so an alpha published after a final is unreachable by consumers. - Python and Java never had it; they publish finals directly. Drop the input from all four Rust publish workflows, collapse the version resolution to the spec version, delete `next_alpha_version.sh`, tighten the `set_version.sh` validation to `x.y.z`, and update `rust/README.md`. Existing `*-alpha` crates on crates.io are left alone: they are pre-releases, so cargo will not resolve to them without an explicit opt-in.
nielspardon
force-pushed
the
ci/rust-alpha-default-false
branch
from
July 31, 2026 05:37
e1bf098 to
9b481fa
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Delete the
alphainput from all four Rust publish workflows —rust_publish.yml,rust_prost.yml,rust_antlr.yml,rust_extensions.yml— rather than just flipping its default. Version resolution collapses to the spec version,scripts/rust/next_alpha_version.shis deleted,scripts/rust/set_version.shvalidation tightens tox.y.z, andrust/README.mdis updated.Supersedes the original default-flip in this PR, per @vbarua's review question.
Why the flag can go entirely
publish_artifacts.ymlnever forwardedalpha, so with the default atfalsethe only way to produce an alpha would have been a manualworkflow_dispatchon a leaf workflow — a foot-gun, not a safety valve.tag_exists/artifact_existsprechecks already gate the publish job (if: ... artifact_exists == 'false') and the tag push, so a release that dies partway through re-runs fine on final versions.x.y.z-alpha.Nsorts belowx.y.zin semver and crates.io is append-only (yank ≠ delete), so an alpha published after a final is unreachable by consumers.next_alpha_version.shhard-rejected anything that wasn'tx.y.z, while the final path (${SUBSTRAIT_VERSION#v}) passes any spec tag through.Behavior change
Spec-release runs and manual dispatches publish final
x.y.zcrates. There is no longer a way to request an alpha; if one is ever needed for bringing up a new crate, this commit is a clean revert.Notes
*-alphacrates on crates.io are left alone — they're pre-releases, so cargo won't resolve to them without an explicit opt-in.main.🤖 Generated with AI