chore(release): flip version.json to calendar versioning (ADR-0004) - #303
Merged
Conversation
main becomes the edge channel: non-public ref producing edge prereleases (2026.1.0-edge.<height>.g<commit>); publicReleaseRefSpec now matches both CalVer stable trains (release/YYYY) and legacy semver lines (release/v10, etc.) so those resolve to clean versions. Also backfills the ADR-0004 discussion link. Verified with nbgv: - main (non-public): 2026.1.0-edge.N.g<commit> (edge prerelease) - release/2026 (public, version 2026.0): 2026.0.x (clean stable) - release/v10 unaffected (own version.json, 10.x) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…V writes Nerdbank.GitVersioning emits its Git*/NBGV_* cloud-build variables to $GITHUB_ENV once per project. In the parallel multi-project solution build these concurrent, unsynchronized appends race and can tear a line — under the new CalVer version "2026.1.0" the tail "6.1.0" landed on its own line, which the GitHub Actions runner rejects: "Unable to process file command 'env' … Invalid format '6.1.0'". (Latent pre-existing race; the longer CalVer string made it surface deterministically.) The version is read via ThisAssembly at compile time and no workflow consumes these variables, so clear the items/property NBGV's writer targets are gated on (order-independent via BeforeTargets). Verified locally under a simulated GitHub Actions env: Test passes 460/7-skipped and $GITHUB_ENV stays empty. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements the versioning half of ADR-0004 (landed in #301). PR 2 of the rollout sequence.
What changes
version.json:"version":11.0→2026.1.0-edge.{height}—mainnow produces edge prereleases.mainremoved frompublicReleaseRefSpec→mainis a non-public ref, so its builds carry the-edgeprerelease tag (intentionally unstable).publicReleaseRefSpecnow matches both^refs/heads/release/\d{4}$(CalVer stable trains) and^refs/heads/release/v\d+$(legacyrelease/v10etc.), so those resolve to clean versions.firstUnstableTag→edge;branchName→release/{version}.Verified with
nbgv(3.7.115 pinned; tested 3.9.50 CLI)versionmain(non-public)2026.1.0-edge.{height}2026.1.0-edge.N.g<commit>— edge prereleaserelease/2026(public)2026.02026.0.x— clean stablerelease/v10(public, own version.json)10.310.x— unaffectedEdge (
2026.1.x) deliberately sits one minor ahead of the first stable train (2026.0.x), so edge prereleases sort above stable and there's no patch-height collision between the two public-mapped refs.Follow-ups
release/2026(pin itsversion.jsonto2026.0).release.yml: add themain→GitHub Packages edge publish job + channel mapping.[Experimental("FALLOUT0xx")]convention.🤖 Generated with Claude Code