mirror of
https://github.com/kvcache-ai/Mooncake.git
synced 2026-11-05 01:17:55 +00:00
[GH-ISSUE #4584] [Bug]: Release workflows treat v0.3.14rc1-style tags as stable and publish them to PyPI #1169
Labels
No labels
ascend
auto-closed
bug
bug
CI/Build
Common
documentation
enhancement
feature request
good first issue
help wanted
high priority
MetaX
nightly-failure
pull-request
PyTorch Backend
question
RFC
Roadmap
stale
Store
Tests
Transfer Engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/Mooncake#1169
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Aionw on GitHub (Oct 12, 2026).
Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/4584
Bug Report
Release workflows tell stable tags from prerelease tags only by whether the tag name contains
-. A tag written in canonical PEP 440 form, such asv0.3.14rc1, is therefore treated as a stable release and published to production PyPI.Current behavior
release.yaml,release-cuda13,release-non-cuda, the three EFA workflows,release-npu,release-musaandrelease-rocmall trigger onv*. They treat a tag as stable when it contains no-(!contains(github.ref_name, '-'), or the*-*check in the MUSA/ROCm dispatch validation).pre-release.yamlonly matchesv*-rc*,v*-alpha*,v*-beta*andv*-pre*.0.3.14rc1is the canonical PEP 440 spelling;0.3.14-rc1is an accepted alternative that normalizes to it. Someone used to Python packaging could reasonably pushv0.3.14rc1. That tag:pre-release.yaml, so no prerelease build, GitHub Pre-release or TestPyPI validation runs;The stable path also ignores the version in the tag.
_build-wheel.yamlexportsVERSION=${GITHUB_REF_NAME#v}, but only patchespyproject.tomlwhenversion-overrideis set, andscripts/build_wheel.shnever readsVERSION. The custom NPU/MUSA/ROCm paths likewise build frompyproject.tomlas-is. So the published version is whatevermooncake-wheel/pyproject.tomlcontains:0.3.14), the rc tag publishes the final0.3.14to PyPI ahead of schedule, and that version can never be re-uploaded;The same coarse rule also makes tags like
v0.3.13-1(PEP 4400.3.13.post1) skip every release workflow without any error.Expected behavior
Every release workflow classifies a tag the same way, and each tag lands on exactly one path:
Possible fix
Classify the tag once with
packaging.Version(e.g. extendscripts/ci/testpypi_wheel_gate.py normalize-versioninto a shared classify step), and have every release workflow gate on its output instead ofcontains(..., '-'). On the stable path, check that the tag version matchespyproject.tomlbefore publishing. That check is one of the invariants proposed in #3534 ("Git tags,pyproject.toml, and wheel metadata must agree") and could land ahead of the full migration.A cheaper interim option: document that release tags must use the
-rcN/-alphaN/-betaNform, and have the stable workflows fail on tags whose PEP 440 parse is a prerelease.Related
release-npu.yamlto classify tags withpackaging.Version. If it lands as is, NPU would diverge from the other workflows on these tags (review: https://github.com/kvcache-ai/Mooncake/pull/4574#pullrequestreview-5487709039).Before submitting...
@github-actions[bot] commented on GitHub (Oct 12, 2026):
Thanks for opening this issue, @Aionw!
41376987A maintainer will triage this when possible. To help us respond faster, please include:
Useful links: Documentation · Contributing guide