mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-13 00:26:53 +00:00
docs(skill): add semver confirmation gate to rustfs-release-publish (#4916)
Require explicit target-version confirmation (AskUserQuestion with concrete semver candidates derived from the latest tag) before any release phase runs, and document SemVer 2.0.0 precedence and bump-type rules.
This commit is contained in:
@@ -25,7 +25,40 @@ bump to <target>-preview.N -> merge -> tag preview -> CI green
|
|||||||
check with `git tag -l '<target>-preview.*'` after `git fetch --tags`).
|
check with `git tag -l '<target>-preview.*'` after `git fetch --tags`).
|
||||||
|
|
||||||
If the target version is missing or ambiguous, stop and ask before doing
|
If the target version is missing or ambiguous, stop and ask before doing
|
||||||
anything.
|
anything (see the semver gate below).
|
||||||
|
|
||||||
|
## Semver gate — confirm the target version before touching anything
|
||||||
|
|
||||||
|
Versions follow SemVer 2.0.0. Precedence reminder:
|
||||||
|
|
||||||
|
```
|
||||||
|
1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0 < 1.0.1 < 1.1.0 < 2.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
Numeric prerelease identifiers compare numerically (`beta.9 < beta.10`),
|
||||||
|
not lexically. Preview tags (`<target>-preview.N`) are internal validation
|
||||||
|
tags layered on top of the target's prerelease channel — they are never
|
||||||
|
themselves a deliverable version.
|
||||||
|
|
||||||
|
Rules:
|
||||||
|
|
||||||
|
- A request like "发个版" / "release the next version" without an exact
|
||||||
|
version string is ALWAYS ambiguous. Derive the current latest tag
|
||||||
|
(`git tag --sort=-v:refname | head`), then ask the user to choose via
|
||||||
|
AskUserQuestion with concrete candidates, e.g. from `1.0.0-beta.10`:
|
||||||
|
next prerelease `1.0.0-beta.11`, promote to `1.0.0-rc.1`, promote to
|
||||||
|
stable `1.0.0`. Never guess between these — they have very different
|
||||||
|
meanings (channel promotion vs. iteration) and different CI
|
||||||
|
classification consequences.
|
||||||
|
- After a stable `X.Y.Z` exists, the next version must state which
|
||||||
|
component bumps: patch `X.Y.(Z+1)` for fixes only, minor `X.(Y+1).0`
|
||||||
|
for backward-compatible features, major `(X+1).0.0` for breaking
|
||||||
|
changes. If the user names a bump type but not a number, compute it
|
||||||
|
from the latest stable tag and echo the exact resulting version back
|
||||||
|
for confirmation.
|
||||||
|
- Echo the final confirmed version string verbatim in your first status
|
||||||
|
report; every later phase must use exactly that string. If at any point
|
||||||
|
the user's wording and the confirmed version diverge, stop and re-confirm.
|
||||||
|
|
||||||
## Hard rules
|
## Hard rules
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user