协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
versioning-policy【开发与工程】SemVer rules for Squad's stable, preview, insider, and local package versions
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Squad publishes @bradygaster/squad-sdk and
@bradygaster/squad-cli from one npm workspace. Their versions and the root
version move together. A mismatched prerelease dependency can make npm silently
resolve an older registry SDK instead of the local workspace.
| Use | Version | Committed branch |
|---|---|---|
| Stable release | MAJOR.MINOR.PATCH | main, and briefly dev during promotion |
| Preview release | MAJOR.MINOR.PATCH-preview.N | dev |
| Insider snapshot | MAJOR.MINOR.PATCH-insider.N | Generated by the insider workflow |
| Local build | MAJOR.MINOR.PATCH-build.N | Never committed |
preview is a release channel, not a branch. Stable promotion merges a
sanitized release tree directly from dev to main.
These versions must always be identical:
package.jsonpackages/squad-sdk/package.jsonpackages/squad-cli/package.jsonpackage-lock.jsonUse the workspace-aware version command:
npm version "$VERSION" --workspaces --include-workspace-root --no-git-tag-version
Never edit only one package version.
The CLI depends on the SDK through a SemVer range. SemVer deliberately excludes
prereleases unless the comparator names a prerelease with the same base version.
For example, >=0.13.0 does not match 0.14.0-preview.1.
For every committed preview version, set both the CLI manifest and lockfile dependency floor to that exact preview:
npm pkg set "dependencies.@bradygaster/squad-sdk=>=$VERSION" \
--workspace @bradygaster/squad-cli
npm install --package-lock-only
For VERSION=0.14.0-preview.1, the required range is
>=0.14.0-preview.1. Before stable promotion, change the version and floor to
0.14.0 / >=0.14.0; never leave a prerelease floor in a stable release.
This rule prevents the PR #640 failure mode, where the build succeeded against a stale published SDK rather than the workspace SDK.
scripts/bump-build.mjs may create -build.N versions for local development.
-build.N version.CI=true or SKIP_BUILD_BUMP=1.dev, set the next
X.Y.Z-preview.N version and matching SDK dependency floor.dev, wait for CI, and dispatch squad-release.yml from dev.squad-insider-publish.yml whenever an on-demand development
snapshot is needed; it computes the next immutable X.Y.Z-insider.N.X.Y.Z and its stable SDK dependency floor on dev.squad-promote.yml; it sanitizes dev, pushes main, and
explicitly dispatches the stable release.A preview such as 0.14.0-preview.1 is never renamed or converted in place.
Stable 0.14.0 is a separate immutable package version and GitHub tag.
The current Release Manager owns release version changes. Other agents may update
versions only when explicitly assigned release work or when reverting an
accidentally committed local -build.N version.
CI verifies:
preview or insider identifiers;>=VERSION;Release workflows repeat the dependency checks before creating a tag or publishing.
| Rule | Summary |
|---|---|
| Insider | The workflow generates X.Y.Z-insider.N from the stable base version |
| Preview | Commit X.Y.Z-preview.N to dev for an on-demand prerelease |
| Stable | Only X.Y.Z may release from main |
| Sync | Root, SDK, CLI, and lockfile workspace versions must match |
| Dependency | Preview CLI range and lockfile entry must be >=VERSION |
| Local build | -build.N is local-only and never committed |
| Ownership | The current Release Manager owns planned release version changes |