Skip to content

docs: add Component Versioning Across Channels guideline #6453

Open
Scottj1s wants to merge 5 commits intomainfrom
sjones/component-versioning-policy
Open

docs: add Component Versioning Across Channels guideline #6453
Scottj1s wants to merge 5 commits intomainfrom
sjones/component-versioning-policy

Conversation

@Scottj1s
Copy link
Copy Markdown
Member

@Scottj1s Scottj1s commented May 5, 2026

Adds an interim contributor guideline at
docs/Coding-Guidelines/ComponentVersioning.md establishing the invariant
that an aggregate WindowsAppSDK upgrade must never contain a component
package downgrade.

Covers:

  • The cross-channel race condition that produces NuGet downgrades
    (e.g., 2.0.325-experimental > 2.0.300 stable for WinML).
  • Approaches considered and explicitly rejected (encoding channel into
    SemVer fields).
  • Short-term policy until the monobuild cutover: per-component
    monotonic-version rules, version.json baseline-bump pattern at
    release-branch creation, aggregator pre-publish downgrade check, and
    a ~2-week stagger between experimental and stable/servicing aggregate
    releases.
  • Long-term: the WindowsAppSDKVersionPinned unified versioning scheme
    from the monobuild (a single WindowsAppSDKVersion stamped at the top
    of the aggregator pipeline; Directory.Packages.props floats 2.* for
    CI/PR/local and pins to the exact version for Official/Nightly).

Cross-linked from docs/Coding-Guidelines.md and
specs/Deployment/WindowsAppSDKVersioning.md.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

Adds an interim contributor guideline at
docs/Coding-Guidelines/ComponentVersioning.md establishing the invariant
that an aggregate WindowsAppSDK upgrade must never contain a component
package downgrade.

Covers:
- The cross-channel race condition that produces NuGet downgrades
  (e.g., 2.0.325-experimental > 2.0.300 stable for WinML).
- Approaches considered and explicitly rejected (encoding channel into
  SemVer fields).
- Short-term policy until the monobuild cutover: per-component
  monotonic-version rules, version.json baseline-bump pattern at
  release-branch creation, aggregator pre-publish downgrade check, and
  a ~2-week stagger between experimental and stable/servicing aggregate
  releases.
- Long-term: the WindowsAppSDKVersionPinned unified versioning scheme
  from the monobuild (a single WindowsAppSDKVersion stamped at the top
  of the aggregator pipeline; Directory.Packages.props floats 2.* for
  CI/PR/local and pins to the exact version for Official/Nightly).

Cross-linked from docs/Coding-Guidelines.md and
specs/Deployment/WindowsAppSDKVersioning.md.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Scottj1s and others added 4 commits May 5, 2026 13:06
… anchor

Updates the long-term unified versioning strategy references in docs/Coding-Guidelines/ComponentVersioning.md to:

- Use the release/main branch on OS/WinAppSDK (instead of release/dev/monobuild)

- Link directly to section 9 'Version Management' in Mono-Build-Pipeline-Migration.md via the documented anchor

- Standardize on the microsoft.visualstudio.com/OS host

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… sequencing

After team discussion, the staggered-release approach was dropped in favor of a sequencing guarantee: when experimental and stable/servicing aggregate RC builds are scheduled on the same day (or close together), stable/servicing always builds first.

Component owners can rely on that sequencing when designing their per-component versioning so per-channel counter advances applied for the experimental build cannot retroactively cause the stable build to ship a lower component version.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
After the monobuild cutover, contributors should declare a milestone alias (e.g. WinAppSDK_2_Servicing) on runtime compatibility / change-ID checks rather than hardcoding a SemVer literal. The monobuild resolves the alias to the concrete version it is producing (e.g. 2.1.0) at build time, so contributors no longer have to anticipate the version their change will land in.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant