Skip to content

docs: adopt calendar versioning + dual-pace edge/stable channels (ADR-0004) - #301

Merged
ChrisonSimtian merged 1 commit into
mainfrom
docs/adr-calendar-versioning-dual-pace
May 29, 2026
Merged

docs: adopt calendar versioning + dual-pace edge/stable channels (ADR-0004)#301
ChrisonSimtian merged 1 commit into
mainfrom
docs/adr-calendar-versioning-dual-pace

Conversation

@ChrisonSimtian

Copy link
Copy Markdown
Collaborator

⚠️ Breaking change (versioning scheme). Fallout moves to calendar versioning YYYY.MINOR.PATCH and retires the v11 numbering. The headline work previously slated for "v11" now ships as 2026.0.0. The 11.0.x packages never shipped a clean stable release (all unlisted), so this strands no stable consumers; the legacy release/v10 line is unaffected (stays 10.x, security/critical fixes only). This PR is docs-only — it commits the project to the scheme; version.json flips in the follow-up PR.

What & why

Our contributor velocity is bimodal: an AI-assisted lane that ships fast, and a deliberate hand-coding lane. This establishes a release architecture that lets both paces run in parallel without divergent trunks — and is as much a social fix (nobody waits on anybody) as a technical one.

The keystone is ADR-0004. Highlights:

  • Calendar versioning YYYY.MINOR.PATCH — mechanically valid SemVer (major = year), so NB.GV/NuGet/ordering are unchanged. Reconciles the "yearly breaking majors" goal with the strict-semver camp.
  • main is the edge channel — fast/AI lane, intentionally unstable, daily date-stamped prereleases (2026.2.0-edge.<YYYYMMDD>.<h>) to GitHub Packages only (no nuget.org fan-out — consistent with why ADR-0001 made main non-publishing).
  • release/YYYY stable trains — the slow crowd's domain; hardened deliberately; non-breaking minors/patches only after the cut. Breaking changes batch to the yearly major.
  • [Experimental("FALLOUT0xx")] for opt-in unstable APIs that ride any channel — so "experimental" needn't mean a divergent fork. Promoting to stable = removing the attribute.
  • Two-tier review — light/fast on edge, rigorous/unhurried on promotion to stable.
  • Legacy release/v10 (+ hotfix/v10.x) coexists unchanged as a semver maintenance line; release/v11 retired (kept for archaeology).

ADR-0004 supersedes the versioning section of ADR-0001 and extends its channel model; the release-branch + multi-channel CD machinery and ADR-0002's nuget.org-opt-in policy are retained.

Changes

  • docs/adr/0004-… — the decision (context, decision, consequences, alternatives incl. why not gitflow / separate experimental branch / date-as-core).
  • docs/adr/0001 — amendment note; docs/adr/README.md — index updated.
  • AGENTS.md — versioning/channels brief, critical-rules + PR-flow rewritten for target/YYYY + breaking-batched-to-year.
  • docs/agents/release-and-versioning.md — branching/versioning/policy/PR-flow/pipeline sections.
  • docs/branching-and-release.md — branch table, channel taxonomy, release/hotfix/cut runbooks (CalVer, v2026.x tags, v10 legacy paths).
  • CHANGELOG.md[Unreleased] heading → 2026.0 + lead entry.

Follow-ups (this is PR 1 of a sequence)

  • PR 2 — version.json → CalVer + edge prereleases + multi-release-branch publicReleaseRefSpec.
  • Cut release/2026; PR 3 — release.yml edge-from-main job + channel mapping; PR 4 — [Experimental] analyzer/convention.
  • A GitHub Discussion linking this ADR (to bring the wider contributor group in) + Projects/labels setup.

🤖 Generated with Claude Code

…-0004)

Establishes the release architecture that lets the fast/AI-assisted lane and
the deliberate/hand-coding lane run at different paces without divergent trunks.

- ADR-0004: calendar versioning (YYYY.MINOR.PATCH, valid semver, major = year),
  main as the published edge channel, release/YYYY stable trains, breaking
  changes batched to the yearly cut, [Experimental(FALLOUT0xx)] for opt-in
  unstable APIs, two-tier review. Supersedes the versioning section of ADR-0001
  and extends its channel model; ADR-0002 nuget.org-opt-in retained.
- release/v10 (+ hotfix/v10.x) coexists as a legacy semver maintenance line
  (security/critical only); release/v11 retired (nothing clean shipped).
- Update AGENTS.md, docs/agents/release-and-versioning.md, and
  docs/branching-and-release.md to the new model (target/YYYY labels, edge
  channel, CalVer policy, hotfix/cut runbooks).
- CHANGELOG: rename [Unreleased] heading 11.0 → 2026.0 + lead breaking-change
  entry documenting the versioning move and migration path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisonSimtian ChrisonSimtian added documentation Improvements or additions to documentation breaking-change Change is breaking — requires major version bump per CLAUDE.md semver policy. target/vCurrent Targets the current version labels May 29, 2026
@ChrisonSimtian
ChrisonSimtian merged commit 2bb192f into main May 29, 2026
1 check passed
@ChrisonSimtian
ChrisonSimtian deleted the docs/adr-calendar-versioning-dual-pace branch May 29, 2026 10:26
@ChrisonSimtian ChrisonSimtian removed the breaking-change Change is breaking — requires major version bump per CLAUDE.md semver policy. label Jul 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation target/vCurrent Targets the current version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant