Skip to content

Adopt YY.MM.MICRO CalVer (encode month, not a sequential counter) - #2

Merged
vpetersson merged 2 commits into
masterfrom
fix/calver-yy-mm-micro
Jul 6, 2026
Merged

Adopt YY.MM.MICRO CalVer (encode month, not a sequential counter)#2
vpetersson merged 2 commits into
masterfrom
fix/calver-yy-mm-micro

Conversation

@vpetersson

Copy link
Copy Markdown
Contributor

What

Revises ADR-0002 to adopt YY.MM.MICRO CalVer instead of YY.MINOR.PATCH.

Why

The prior decision made only the year calendar-derived; the middle segment was a sequential feature counter. For supply-chain tooling where freshness is a security signal, month-level resolution is worth more than an opaque counter — and CalVer already discards the SemVer compatibility contract that made a dedicated MINOR segment meaningful. 26.7.0 tells you July 2026 at a glance.

Key points

  • Month is unpadded (26.7.0, not 26.07.0): 26.07.0 is invalid SemVer (npm rejects leading zeros) and PEP 440 normalizes 26.0726.7. Unpadded keeps every version valid across our npm + Python packaging.
  • Transition documented: the March-era 26.1.0/26.2.0/26.3.0 (sequential) are immutable and won't be re-tagged; the next release is 26.7.0 (July 2026). The one-time gap is expected.
  • Fixed a factual error in the old rationale: pip adopted year-based CalVer with 18.0 in 2018 (YY.MINOR, e.g. 23.1, 24.0), not YY.MINOR.PATCH in 2024.

Follow-up

Companion PR in sbomify/sbomify bumps the app to 26.7.0 and aligns the CHANGELOG/RELEASE docs with this scheme.

🤖 Generated with Claude Code

The previous decision used a sequential counter for the middle segment,
so only the year carried calendar meaning. Switch to month-based
YY.MM.MICRO so the version encodes both year and month of release — the
finest freshness signal that still fits our SemVer-shaped tooling.

- Month is written unpadded (26.7.0, not 26.07.0) to stay valid SemVer
  (npm rejects leading zeros) and stable under PEP 440 normalization.
- Document the one-time transition: 26.3.0 (March-era sequential) -> 26.7.0.
- Fix pip precedent: pip adopted year-based CalVer with 18.0 in 2018,
  using YY.MINOR (e.g. 23.1, 24.0), not YY.MINOR.PATCH in 2024.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CalVer has been in production since v26.1.0; flip the status from
Proposed to Accepted to reflect the actual state.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vpetersson
vpetersson merged commit 8132600 into master Jul 6, 2026
1 check passed
aurangzaib048 pushed a commit to aurangzaib048/sbomify that referenced this pull request Jul 8, 2026
Bump 26.3.0 -> 26.7.0 across pyproject.toml, package.json and uv.lock.
Under the corrected CalVer scheme (sbomify/adr#2) the middle segment is
the release month, unpadded, so the first July 2026 release is 26.7.0.

- CHANGELOG: replace the stale "Semantic Versioning" statement with CalVer
  (YY.MM.MICRO) linked to ADR-0002, and roll [Unreleased] into [26.7.0].
- RELEASE.md: document the YY.MM.MICRO scheme, the no-zero-padding rule,
  and syncing both manifests + uv lock.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant