Decision: Calendar Versioning (CalVer)

Status: ✅ Approved & implemented
Date: 2026-04-22
Supersedes: 2026-04-19-version-numbering-convention.md


Rule

Versions

All new Org Studio releases use CalVer: YYYY.MM.DD or YYYY.MM.DD.N for same-day hotfixes.

2026.04.22      first release of the day
2026.04.22.1    same-day hotfix
2026.04.22.2    second same-day hotfix

No v prefix. Storage and display match exactly.

Legacy SemVer entries (MAJOR.MINOR.PATCH) remain valid for read purposes — the historical roadmap (v0.1.0 through v0.16.0) was migrated to CalVer dates in this session. New entries must use CalVer.

Approval horizon

project.autonomy.approvedThrough — a single CalVer string per project.

Same semantics as before: agent executes tasks whose version ≤ approvedThrough. Only humans move the horizon.


Why CalVer

  • Releases map to real dates, not arbitrary numbers. Much easier to reason about history.
  • Eliminates "what does 1.0 mean?" decisions.
  • Same-day hotfixes are obvious: 2026.04.22.1.
  • Sort order is natural chronological order.

Implementation

Version format rules

| Format | Example | Valid | |--------|---------|-------| | CalVer full date | 2026.04.22 | ✅ | | CalVer with micro | 2026.04.22.1 | ✅ | | SemVer (legacy) | 0.15.0 | ✅ (read only) | | SemVer with v prefix | v0.15.0 | ❌ | | 2-part | 0.15 | ❌ |

Files changed

| File | Change | |------|--------| | src/lib/version-utils.ts | Rewrote — dropped semver package, native part-by-part comparison supporting both CalVer and SemVer; added isCalver(), todayCalver(), nextCalver() helpers | | src/app/api/roadmap/[projectId]/route.ts | Validation now accepts CalVer or SemVer (removed hard semver dependency) | | src/lib/org-generator.ts | Updated ORG.md version rule to document CalVer | | scripts/migrate-to-calver.mjs | One-shot migration script (already applied) |

Migration applied (2026-04-22)

All 18 proj-mc roadmap versions migrated:

| SemVer | CalVer | |--------|--------| | 0.1.0 | 2026.03.15 | | 0.2.0 | 2026.03.18 | | 0.3.0 | 2026.03.19 | | 0.4.0 | 2026.03.20 | | 0.5.0 | 2026.03.25 | | 0.6.0 | 2026.03.29 | | 0.7.0 | 2026.03.29.1 | | 0.8.0 | 2026.04.01 | | 0.9.0 | 2026.04.05 | | 0.10.0 | 2026.04.10 | | 0.11.0 | 2026.04.17 | | 0.12.0 | 2026.04.18 | | 0.13.0 | 2026.04.18.1 | | 0.14.0 | 2026.04.18.2 | | 0.14.1 | 2026.04.19 | | 0.15.0 | 2026.04.20 | | 0.16.0 | 2026.04.22 ← current release | | 1.0.0 | 2026.05.01 ← planned public launch |

approvedThrough: 0.16.12026.04.22.1


Next release

The current release is 2026.04.22. The next planned version is 2026.05.01 (public launch). To cut a release today: use 2026.04.22 (already shipped). Next same-day: 2026.04.22.1. Tomorrow's first release: 2026.04.23.