Skip to content
Musher Docs

Versioning

Every bundle version is identified by a semantic version string. This page covers the version format, what each number means for text-based bundles, and how version resolution works.

Version Format

Version strings follow Semantic Versioning: MAJOR.MINOR.PATCH with an optional pre-release tag.

Version pattern
MAJOR.MINOR.PATCH[-tag]

All three numeric components are required. The pre-release tag is optional.

VersionValidWhy
1.0.0YesStandard three-part version
2.1.0-betaYesPre-release tag
1.0.0-alpha1YesAlphanumeric pre-release tag
0.1.0YesInitial development version
v1.0.0NoNo v prefix allowed
1.0NoAll three parts are required
1.0.0-beta.1NoDots are not allowed in the pre-release tag
1.0.0+buildNoBuild metadata is not supported

What the Numbers Mean

Bundles contain text assets — prompts, configs, agent specs — not code libraries. There is no “public API” in the traditional sense. Instead, think of version numbers in terms of what consumers relying on your bundle would need to change.

ComponentBump when…Consumer impact
MAJORYou restructure the bundle, rename or remove assets, or change content in ways that break existing consumersConsumers must review and adapt their usage
MINORYou add new assets, expand capabilities, or add content to existing assets without changing what already existsConsumers can upgrade without changes
PATCHYou fix typos, clarify wording, correct errors, or make non-functional improvements to existing contentDrop-in replacement, no consumer action needed

Using a hypothetical acme/code-review bundle:

  • Patch 1.0.0 → 1.0.1 — Fixed a typo in prompts/review.md.
  • Minor 1.0.0 → 1.1.0 — Added a new asset prompts/security-review.md.
  • Major 1.0.0 → 2.0.0 — Renamed prompts/review.md to prompts/code-review.md and restructured the prompt template format.

Pre-release Versions

Append a hyphen and an alphanumeric tag to mark a version as pre-release: 1.0.0-alpha, 2.0.0-beta, 3.0.0-rc1. Tags must be alphanumeric only — no dots, no hyphens within the tag.

Pre-release versions are treated like any other published version. They appear in version listings and can be resolved by exact version string.

Version Resolution

When you resolve a bundle, the platform selects a version using one of two strategies:

RequestBehavior
Version specifiedExact match. Returns that version or 404 if not found.
Version omittedReturns the latest published (non-yanked) version by creation time.
Resolve examples
# Exact version
musher load acme/code-review:1.2.0

# Latest published version
musher load acme/code-review

Once a version is published, its contents never change. Resolving version 1.2.0 today returns the same manifest it will return next year. See Bundle Structure for the full immutability contract.

Yanked versions are excluded from latest resolution but remain accessible by exact version for audit purposes. See Publishing for yank semantics.

Choosing Your Next Version

When publishing a new version, ask yourself one question: will this change break consumers who depend on the current version?

  1. Did you remove, rename, or restructure assets? Bump MAJOR.
  2. Did you add new assets or expand existing ones? Bump MINOR.
  3. Did you only fix typos, clarify wording, or make cosmetic changes? Bump PATCH.
  4. Is this an early preview? Use a pre-release tag like 0.1.0-alpha or 1.0.0-rc1.