Skip to content

ci(rust): remove the alpha pre-release publish flag - #41

Merged
nielspardon merged 1 commit into
mainfrom
ci/rust-alpha-default-false
Jul 31, 2026
Merged

ci(rust): remove the alpha pre-release publish flag#41
nielspardon merged 1 commit into
mainfrom
ci/rust-alpha-default-false

Conversation

@nielspardon

@nielspardon nielspardon commented Jul 16, 2026

Copy link
Copy Markdown
Member

What

Delete the alpha input 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.sh is deleted, scripts/rust/set_version.sh validation tightens to x.y.z, and rust/README.md is updated.

Supersedes the original default-flip in this PR, per @vbarua's review question.

Why the flag can go entirely

  • It was unreachable from the release pipeline. publish_artifacts.yml never forwarded alpha, so with the default at false the only way to produce an alpha would have been a manual workflow_dispatch on a leaf workflow — a foot-gun, not a safety valve.
  • It is not what makes re-runs safe. The tag_exists / artifact_exists prechecks 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.
  • 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 (yank ≠ delete), so an alpha published after a final is unreachable by consumers.
  • Python and Java never had it — both publish finals directly. Keeping it in Rust only was drift.
  • The alpha path was the more brittle one. next_alpha_version.sh hard-rejected anything that wasn't x.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.z crates. 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

🤖 Generated with AI

@vbarua vbarua left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

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
nielspardon force-pushed the ci/rust-alpha-default-false branch from e1bf098 to 9b481fa Compare July 31, 2026 05:37
@nielspardon nielspardon changed the title ci(rust): default Rust publishes to final releases ci(rust): remove the alpha pre-release publish flag Jul 31, 2026
@nielspardon
nielspardon merged commit 563e488 into main Jul 31, 2026
5 checks passed
@nielspardon
nielspardon deleted the ci/rust-alpha-default-false branch July 31, 2026 05:44
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.

2 participants