Skip to main content

ADR-028 — CalVer Versioning AAMMDD.NN

Status: Approved (replaces ADR-024) | Date: 2026-06-18 | Scope: All plugins

Context

Semantic versioning (MAJOR.MINOR.PATCH) does not convey when a release was made, which matters for a healthcare SaaS where compliance auditors ask "what version was running on date X?". ADR-024 used three-segment CalVer; this ADR simplifies it to two segments.

Decision

All obeliOmed plugin versions use the format AAMMDD.NN:

SegmentMeaningExample
AAYear last two digits26 for 2026
MMMonth zero-padded06 for June
DDDay zero-padded20 for the 20th
NNBuild sequence within that day01, 02, 03

Examples:

260620.01 -> 2026-06-20, first build
260620.02 -> 2026-06-20, second build (hotfix same day)
260621.01 -> 2026-06-21, next day first build

Set in two places per plugin:

// composer.json
{ "version": "260620.01" }
; facturascripts.ini
version=260620.01

Consequences

  • Release date is immediately readable from the version number
  • No semantic meaning carried (breaking vs non-breaking) — release notes document that
  • Simple comparison: 260621.01 > 260620.02 for latest-version checks
  • Replaces ADR-024 (three-segment CalVer) — old format 26.06.20-1 is invalid