Skip to content

Update release-checklist.md#13754

Merged
OvesN merged 12 commits into
dotnet:mainfrom
OvesN:docs/release-checklist-retire-branches
Jun 9, 2026
Merged

Update release-checklist.md#13754
OvesN merged 12 commits into
dotnet:mainfrom
OvesN:docs/release-checklist-retire-branches

Conversation

@OvesN

@OvesN OvesN commented May 13, 2026

Copy link
Copy Markdown
Contributor

Updates documentation/release-checklist.md so it will covers the actual process of the release.

Inputs section

  • Added {{PACKAGE_VALIDATION_BASELINE_VERSION}} as a real input + new "How to determine" subsection. Previous version description was incorrect.
  • Fixed {{BRANCH_SNAP_DATE}} description: was "from VS-Dates wiki", corrected to "date we create vs{{THIS_RELEASE_VERSION}} from main". Source: user-confirmed; the date is not on the wiki.

Phase 0

  • darc get-channel --name "VS X.Y"darc get-channels (then grep). Source: user-confirmed --name is not a valid flag for get-channel.
  • Moved the "tracking URLs" table out of Phase 0 to a new "Release Output" section at the bottom.

Phase 1

  • New 1.0 pre-snap team check (ping team for anything that must still merge into main before snap).
  • 1.1 admin-rights notegit push to refs/heads/vs* is restricted.
    • --configuration-branch release/msbuild-...--configuration-branch msbuild-... (dropped release/ prefix) on all darc write commands. Reason: pushes to release/-prefixed branches in the maestro-configuration repo are restricted.
  • Deleted 1.2e (Ping "First Responders" Teams channel for channel promotion). Reason: step is no longer needed.
  • Split 1.3 into 1.3a + 1.3b1.3a keeps the original "insert new branch", 1.3b is new: retire predecessor branches. Combined SDK + VS retirement rule.

Phase 2 ↔ Phase 3 swap

  • DARC subscription updates now run BEFORE the main version bump. Reasoun— VMR should consume the next-version channel from the moment main bumps, otherwise the first post-bump main build lands on the now-stale VS {{THIS_RELEASE_VERSION}} channel.

Phase 2 (new — DARC Subscription Updates)

  • Strengthened Arcade verification (2.4) — was "rarely changes", now requires every supported branch to have an Arcade subscription from the matching .NET <X> Eng channel. Source: meeting — the vs18.6 release was blocked by a missing Arcade subscription; the old "rarely changes" wording actively discouraged the check it claimed to mandate.
  • Deleted old 3.5 (NuGet verify) + 3.6 (Roslyn verify) + 3.7 (confirm disabled) + 3.8 (fix-up step). Replaced with a single blockquote that:
    • omits per-cycle Roslyn verification (one subscription targeting main; channel does not rotate with SDK bands), and
    • keeps NuGet as an explicit per-release reminder: when the next-to-ship SDK band rotates (e.g. 4xx5xx), the NuGet → msbuild/main subscription must be re-pointed to the new band's channel.
  • New 2.3e — delete subscriptions for retired branches (using the same combined SDK+VS rule from 1.3b). Source: user-confirmed cleanup is symmetric with 1.3b.

Phase 3 (new — Bump Main & Update Pipelines)

  • 3.2 now references {{PACKAGE_VALIDATION_BASELINE_VERSION}} instead of "last released version (the {{PREVIOUS_RELEASE_VERSION}} GA version)". Reason: — GA version is wrong; baseline must be a preview build whose source commit is in vs{{THIS_RELEASE_VERSION}} history.
  • 3.3 (CompatibilitySuppressions.xml) reframed as "only if the pipeline fails on API-compat — this step is a fix-up, not a routine action".
  • Deleted old 2.4 (AutoInsertTargetBranch → VS main). Reason: step is no longer needed._
  • Deleted old 3.4 (vs-insertion-experimental.yml TargetBranch add). Reason: this is no longer needed manually._

Phase 4

  • Rewrote 4.4 OptProf bootstrap into two clean steps: 4.4a cancel the auto-triggered failing build, 4.4b re-run manually with main's OptProf override. Reason: — the original 3-step variant did not reflect what we actually do; auto-triggered build is doomed and must be cancelled first.
  • 4.5 (M2/QB approval) — added "only required if we are behind the VS schedule" note. Reason: — on-time releases skip this step entirely._
  • Added 🛑/⚠️ callout above 4.7/4.8 explaining these are NOT part of the regular release flow; they only apply when servicing a previously-shipped release with a hotfix commit.

Phase 5

  • 5.1 (Push to nuget.org) - now reflects actual process.
  • 5.2 (Publish docs) - now reflects actual process.
  • 5.3 (GitHub release) expanded to 5.3a–5.3d:
    • 5.3a precondition: confirm previous release tag exists on upstream; if missing, create it first.
    • 5.3b identify the commit to tag = the source commit of the build identified in 5.1b
  • New 5.4b — bump tools.dotnet in global.json to latest released SDK in the targeted band.
  • Deleted old 5.5 (Extend OptProf data expiration for LTSC). Reason: now we have 3-year default retention for opt prof artefacts).
  • Old 5.6 (re-verify main subscription) — deleted as a redundant Phase-2 echo.
  • Replaced with new 5.5 — verify the overall subscription map across every still-supported branch (not just the one being released).

Phase 1.3 of the release checklist previously only described inserting the
new release branch into .config/git-merge-flow-config.jsonc. It said nothing
about removing retired predecessor VS preview branches, so each release
relied on someone noticing the stale entries (e.g. PR dotnet#13750 had to retire
vs18.4 and vs18.5 manually after vs18.6 opened).

Expand step 1.3 into 1.3a (insert new branch), 1.3b (retire unsupported
predecessor preview branches), and 1.3c (sanity-check the resulting chain)
so the cleanup happens as part of the same PR that adds the new branch.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 13, 2026 13:45
@OvesN OvesN marked this pull request as draft May 13, 2026 13:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the release checklist to make merge-flow branch retirement an explicit part of adding a new release branch, helping keep automated forward-merge PRs aligned with supported VS branches.

Changes:

  • Splits release checklist step 1.3 into explicit substeps.
  • Adds guidance to retire unsupported predecessor preview branches from .config/git-merge-flow-config.jsonc.
  • Adds a sanity-check step for validating the resulting merge chain.

OvesN and others added 2 commits May 13, 2026 15:48
Remove the made-up criterion describing exactly when a branch is retired
(content merged forward + past LTSC/STS / no future patches). That heuristic
was not based on any documented policy and risks being wrong.

Leave 1.3b as a prompt to retire predecessor branches that will no longer be
supported, with the example PR for context. Reasoning for how to identify a
retired branch will be added separately.

Also drop 1.3c (chain well-formedness check) — the new sub-step doesn't need
that scaffolding.

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

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Documentation review — no issues found.

The decomposition of step 1.3 into sub-steps (1.3a–1.3c) is well-structured and consistent with the existing pattern used for step 1.2 (1.2a–1.2e). The new branch-retirement guidance in 1.3b is detailed, actionable, and correctly describes the mechanics of the merge-flow config. The verification step in 1.3c adds a useful safety gate. The cross-reference to PR #13750 as a concrete example is helpful for future release operators.

Formatting and markdown nesting are correct.

Note

🔒 Integrity filter blocked 1 item

The following item were blocked because they don't meet the GitHub integrity level.

  • #13754 pull_request_read: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".

To allow these resources, lower min-integrity in your GitHub frontmatter:

tools:
  github:
    min-integrity: approved  # merged | approved | unapproved | none

Generated by Expert Code Review (on open) for issue #13754 · ● 1.5M

OvesN and others added 2 commits May 13, 2026 16:45
For SDK releases, refer to the lifecycle table in the SDK/MSBuild/VS
versioning doc. For VS releases, the retired branch is always the immediate
predecessor of the one being released.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The release checklist already covers BootstrapSdkVersion (the SDK that hosts
bootstrap test runs) but not the tools.dotnet pin in global.json (the SDK
that builds MSBuild itself, surfaced as DotNetCliVersion in eng/Versions.props
and required to match per the comment there).

Add 5.4b so the build-side SDK is refreshed on the same monthly cadence as
new SDK releases.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@OvesN OvesN changed the title Document retiring unsupported branches from merge-flow chain Update release-checklist.md May 14, 2026
OvesN and others added 5 commits May 27, 2026 11:49
- Inputs: fix BRANCH_SNAP_DATE description; add PACKAGE_VALIDATION_BASELINE_VERSION row and 'how to determine' reference section from dotnet#13676.
- Phase 0: fix invalid 'darc get-channel --name' to 'darc get-channels' + filter; remove inline artifact tracking table.
- Phase 1: add 1.0 pre-snap team check; add admin-rights note to 1.1; drop unusable --configuration-branch release/msbuild-... from all darc commands in 1.2; delete 1.2e (First Responders ping); rewrite 1.3b retirement rule as combined SDK + VS lifecycle (only retire when both agree; link VS Servicing wiki).
- Phase 2 (was Phase 3) - DARC subscription updates: swapped before bump-main so VMR consumes correct channel; dropped --configuration-branch from all commands; new 2.3e to delete subscriptions for retired branches mirroring 1.3b combined rule; cross-refs updated; Roslyn/NuGet verification removed (steady-state, out-of-band); URL_OF_PHASE3_DARC_PR renamed to URL_OF_PHASE2_DARC_PR.
- Phase 3 (was Phase 2) - bump main: 3.2 references PACKAGE_VALIDATION_BASELINE_VERSION; 3.3 marked as fix-up only on pipeline API-compat failure; deleted obsolete AutoInsertTargetBranch retarget step.
- Phase 4: 4.4 OptProf rewritten to 2 steps (cancel auto-triggered build; re-run manually with main override); 4.7/4.8 servicing-only callout retained.
- Phase 5: 5.5a cross-ref to Phase 2 (post-swap).
- New 'Release Output' table at bottom of file replacing the Phase 0 inline tracking table.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@OvesN OvesN requested a review from JanProvaznik May 28, 2026 12:05
@OvesN OvesN marked this pull request as ready for review May 28, 2026 12:05

@JanProvaznik JanProvaznik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

very good improvement of clarity, few points to make even better

Comment thread documentation/release-checklist.md Outdated
Comment thread documentation/release-checklist.md Outdated
Comment thread documentation/release-checklist.md Outdated
Comment thread documentation/release-checklist.md
Comment thread documentation/release-checklist.md
Comment thread documentation/release-checklist.md Outdated
veronikao and others added 2 commits June 8, 2026 15:56
Replaces the blanket 'Roslyn and NuGet verification omitted' note with a
NuGet-specific reminder. NuGet's dev branch publishes to a band-specific
channel (today .NET 10.0.4xx SDK), so when the next-to-ship SDK band rotates
our main subscription will silently start pulling the previous band's
servicing builds instead of latest dev unless we re-point its channel.
@OvesN OvesN requested a review from a team as a code owner June 8, 2026 15:27

@JanProvaznik JanProvaznik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thx

@OvesN OvesN merged commit ba39e18 into dotnet:main Jun 9, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants