Docs Versioning

Versioning

Semantic Versioning with a single source of truth in a VERSION file.

Projects use Semantic Versioning 2.0.0 as the people-facing version number. The canonical machine copy of this standard is in the repository at hub/standards/versioning.md.

The number

MAJOR.MINOR.PATCH

  • PATCH is the default — fixes and ordinary changes alike. It is uncapped (0.1.7, 0.1.42, and so on).
  • MINOR marks a genuine milestone.
  • MAJOR (the move to 1.0.0) is a deliberate “stable” promise and is never bumped automatically.

When the choice between PATCH and MINOR is unclear, PATCH is used.

Single source of truth

The version lives on one line in a repository-root VERSION file, and nowhere else. Nothing hardcodes a version elsewhere; anything that needs to display it derives it from that file. The number is bumped in the same commit as the change that warrants it.

Changelog vs. version number

The version number is the label (where a build is); the changelog is the story (what changed, per commit). They are maintained together but are not the same thing — see the notes system.