Skip to content

Add vs18.9 to merge-flow config; retire vs18.3 - #14214

Merged
JanProvaznik merged 1 commit into
dotnet:mainfrom
JanProvaznik:add-vs18.9-merge-flow
Jun 30, 2026
Merged

JanProvaznik merged 1 commit into
dotnet:mainfrom
JanProvaznik:add-vs18.9-merge-flow

Conversation

@JanProvaznik

Copy link
Copy Markdown
Member

Phase 1.3 of the 18.9 release (#14213).

1.3a — add vs18.9 to the merge chain

vs18.9 was snapped from main on 2026-06-30. This routes vs18.8 -> vs18.9 and adds vs18.9 -> main so forward-merge automation reaches main through the new release branch.

1.3b — retire vs18.3

Applying the combined SDK + VS retirement rule (retire only when both lifecycles are out of support):

Both agree, so vs18.3 is removed and vs18.0 now forwards directly to vs18.6. vs18.0 (SDK 10.0.1xx) stays in the chain because .1xx bands are supported throughout the .NET 10 lifecycle, so its fixes keep flowing forward.

Resulting chain:
vs16.11 -> vs17.8 -> vs17.11 -> vs17.12 -> vs17.14 -> vs18.0 -> vs18.6 -> vs18.7 -> vs18.8 -> vs18.9 -> main

Phase 1.3 of the 18.9 release (dotnet#14213).

1.3a: route vs18.8 -> vs18.9 and add vs18.9 -> main now that vs18.9 has been snapped.

1.3b: retire vs18.3. SDK band 10.0.2xx is past end-of-support (EoS May 2026 per the SDK/VS versioning lifecycle table) and VS 18.3 is out of support, so both lifecycles agree it is retired. vs18.0 (SDK 10.0.1xx, supported through the .NET 10 lifecycle) now forwards directly to vs18.6 so its fixes keep flowing.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 30, 2026 11:55
@JanProvaznik JanProvaznik mentioned this pull request Jun 30, 2026
70 tasks

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

Updates the repository’s forward-merge automation configuration to reflect the MSBuild 18.9 release branch creation and to retire an out-of-support release branch, keeping the servicing chain aligned with supported VS/SDK lifecycles.

Changes:

  • Insert vs18.9 into the forward-merge chain so merges flow vs18.8 -> vs18.9 -> main.
  • Retire vs18.3 from the merge flow and rewire vs18.0 to merge directly to vs18.6.
  • Add/adjust inline comments documenting the lifecycle rationale (SDK band support + VS support status).

@github-actions

Copy link
Copy Markdown
Contributor

Caution

agentic threat detected
Threat detection flagged this output in warn mode. Manual review is REQUIRED before any follow-up automation.

Details

The threat detection results could not be parsed.

Review the workflow run logs for details.

Error Messages Quality — LGTM

This PR modifies only .config/git-merge-flow-config.jsonc, a pure configuration file. There are no user-facing diagnostic strings, MSBuild error/warning codes, or Strings.resx entries involved. No error message quality concerns apply.

Generated by Expert Code Review (on open) for #14214 · 1.5K AIC · ⊞ 32.1K ·

@github-actions

Copy link
Copy Markdown
Contributor

Caution

agentic threat detected
Threat detection flagged this output in warn mode. Manual review is REQUIRED before any follow-up automation.

Details

The threat detection results could not be parsed.

Review the workflow run logs for details.

Build Infrastructure Care — LGTM ✅

All checks pass:

Check Result
Chain monotonically increasing vs16.11→vs17.8→vs17.11→vs17.12→vs17.14→vs18.0→vs18.6→vs18.7→vs18.8→vs18.9→main
vs18.9 placed correctly ✅ after vs18.8, before main
vs18.9 branch exists remotely refs/heads/vs18.9 confirmed live
All chain branches exist remotely ✅ every entry in the config maps to a live remote branch
vs18.3 retirement conditions ✅ SDK 10.0.2xx EoS May 2026 (past), VS 18.3 superseded — both conditions satisfied before removal
Retirement tombstone comment ✅ inline rationale with date recorded in the config
File is self-contained ✅ single JSONC file, read from main branch only

The stale merge/vs18.8-to-main remote branch is a pre-existing in-flight artifact from the old chain; the automation reads the config fresh on each run and will open the new vs18.8→vs18.9 and vs18.9→main PRs while that old branch goes stale — expected transitional state, not a defect introduced by this change.

No issues found in the Build Infrastructure Care dimension.

Generated by Expert Code Review (on open) for #14214 · 1.5K AIC · ⊞ 32.1K ·

@github-actions

Copy link
Copy Markdown
Contributor

Caution

agentic threat detected
Threat detection flagged this output in warn mode. Manual review is REQUIRED before any follow-up automation.

Details

The threat detection results could not be parsed.

Review the workflow run logs for details.

24-dimension review — 23/24 LGTM

# Dimension Verdict
1 Correctness ✅ LGTM
2 Concurrency ✅ LGTM — N/A (config only)
3 Performance ✅ LGTM — N/A (config only)
4 Memory ✅ LGTM — N/A (config only)
5 Error Handling ✅ LGTM
6 Logging ✅ LGTM — N/A (config only)
7 Security ✅ LGTM
8 API Design / Schema ✅ LGTM
9 Backward Compatibility ✅ LGTM
10 Design Before Implementation ✅ LGTM
11 Code Clarity 🔵 NIT (see inline comment)
12 Naming Conventions ✅ LGTM
13 Test Coverage ✅ LGTM
14 Edge Cases ✅ LGTM — vs18.9 branch confirmed at 0ac5599
15 Dependencies ✅ LGTM
16 Error Messages ✅ LGTM — N/A
17 Binary Log ✅ LGTM — N/A
18 Documentation Accuracy ✅ LGTM
19 Build Infrastructure ✅ LGTM
20 Scope & PR Discipline ✅ LGTM
21 Change Wave Compliance ✅ LGTM — N/A
22 Cross-platform ✅ LGTM — N/A
23 Public API Surface ✅ LGTM — N/A
24 Ecosystem Impact ✅ LGTM

Key verification points:

  • Chain topology is correct and linear: vs16.11 → vs17.8 → vs17.11 → vs17.12 → vs17.14 → vs18.0 → vs18.6 → vs18.7 → vs18.8 → vs18.9 → main — no cycles, no dangling refs, main is terminal only
  • vs18.9 branch exists (0ac5599) before this config lands on main — no missing-target risk on first automation run
  • vs18.3 retirement satisfies both required conditions (SDK 10.0.2xx EoS May 2026 ✓; VS 18.3 out of support ✓)
  • SDK band 10.0.4xx for vs18.9 follows the established progression naturally after 10.0.3xx for vs18.6
  • Single-file, single-concern PR with a thorough description and release tracking reference (MSBuild Release Checklist 18.9 #14213)

One NIT (non-blocking, left as inline comment on line 26): the retirement tombstone comment explains why vs18.3 was retired but not what routing it replaced. Adding (was: vs18.0 → vs18.3 → vs18.6) would help future chain-history auditing.

Generated by Expert Code Review (on open) for #14214 · 1.5K AIC · ⊞ 32.1K ·

@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.

Caution

agentic threat detected
Threat detection flagged this output in warn mode. Manual review is REQUIRED before any follow-up automation.

Details

The threat detection results could not be parsed.

Review the workflow run logs for details.

Code Clarity & Readability

Two concrete clarity issues; one minor note.


ISSUE 1 — Retirement tombstone omits the prior routing

// vs18.3 (SDK 10.0.2xx) retired 2026-06: SDK band 10.0.2xx out of support (EoS May 2026) and VS 18.3 out of support.

Concrete scenario: A future maintainer is asked to re-add vs18.3 if its support window is extended. Reading the config, they see vs18.0 → vs18.6 and a retirement note for vs18.3 — but the note never states that vs18.0 previously targeted vs18.3. They cannot reconstruct the original chain (vs18.0 → vs18.3 → ...) from the file alone.

Suggested fix:

// vs18.3 (SDK 10.0.2xx) retired 2026-06: was the MergeToBranch target for vs18.0;
// SDK band 10.0.2xx out of support (EoS May 2026) and VS 18.3 out of support; vs18.0 now merges directly to vs18.6.

ISSUE 2 — vs18.7 and vs18.8 silently omit SDK band info

"vs18.7": { ... }  // "(VS)"
"vs18.8": { ... }  // "(VS)"

vs18.6 carries (VS, SDK 10.0.3xx) and the new vs18.9 entry carries (VS, SDK 10.0.4xx), establishing a clear pattern. vs18.7 and vs18.8 just say (VS).

Concrete scenario: A maintainer is diagnosing a regression in SDK 10.0.3xx builds and searches the config comments for the corresponding branch. The absence of any SDK annotation on vs18.7/vs18.8 makes it ambiguous whether those branches have no dedicated SDK band (a VS-only release) or whether the band was simply not recorded. Either answer affects where they look for the fix.

If vs18.7 and vs18.8 genuinely have no SDK band, make that explicit:

// Automate opening PRs to merge msbuild's vs18.7 (VS only, no dedicated SDK band) into vs18.8 (VS)

Minor note — (SDK X, VS) vs (VS, SDK X) ordering is inconsistent

vs17.12 and vs17.14 put SDK first; vs18.6 and vs18.9 put VS first. This is cosmetic and has no operational impact, so not flagging as an issue — but worth normalising in a follow-up if the file is touched again.

Generated by Expert Code Review (on open) for #14214 · 1.5K AIC · ⊞ 32.1K

Comment thread .config/git-merge-flow-config.jsonc
WarperSan pushed a commit to WarperSan/ThunderPipe that referenced this pull request Sep 17, 2026
Updated
[Microsoft.Build.Utilities.Core](https://github.com/dotnet/msbuild) from
18.9.6 to 18.10.1.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Build.Utilities.Core's
releases](https://github.com/dotnet/msbuild/releases)._

## 18.10.1

## What's Changed
* [vs16.11] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13103
* [vs17.12] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13796
* [vs17.8] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13902
* [vs17.11] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13903
* [vs17.12] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13909
* [vs17.12] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13986
* Add vs18.9 to merge-flow config; retire vs18.3 by @​JanProvaznik in
dotnet/msbuild#14214
* Bump labeler-cache-retention to use issue-labeler v2.1.0 by
@​jeffhandley in dotnet/msbuild#14171
* Bump main to 18.10.0 after vs18.9 snap by @​JanProvaznik in
dotnet/msbuild#14216
* Improve release skill: Phase 2 DARC rules, VMR backflow, deterministic
baseline by @​JanProvaznik in
dotnet/msbuild#14220
* Determinize release: hardcode OptProf baseline + Phase 3.2 baseline
resolver by @​JanProvaznik in
dotnet/msbuild#14222
* Serialize BuildRequestConfiguration.RequestedTargets to fix solution
metaproject MSB4057 in parallel builds by @​ViktorHofer in
dotnet/msbuild#14223
* [main] Update dependencies from nuget/nuget.client by
@​dotnet-maestro[bot] in dotnet/msbuild#14203
* Core support for AbsolutePath/FileInfo/DirectoryInfo and ITaskItem<T>
as task parameters by @​baronfel in
dotnet/msbuild#13971
* [main] Update dependencies from dotnet/roslyn by @​dotnet-maestro[bot]
in dotnet/msbuild#14206
* Fix existence cache kind poisoning by @​AlesProkop in
dotnet/msbuild#14249
* [main] Source code updates from dotnet/dotnet by @​dotnet-maestro[bot]
in dotnet/msbuild#14226
* Don't disable the MSBuild server for /mt builds when node reuse is off
by @​AR-May in dotnet/msbuild#14248
* Enhance expert reviewer guidelines with additional checks. by @​AR-May
in dotnet/msbuild#14255
* [main] Source code updates from dotnet/dotnet by @​dotnet-maestro[bot]
in dotnet/msbuild#14253
* [main] Update dependencies from dotnet/roslyn by @​dotnet-maestro[bot]
in dotnet/msbuild#14268
* [main] Update dependencies from nuget/nuget.client by
@​dotnet-maestro[bot] in dotnet/msbuild#14267
* Bump github/gh-aw-actions/setup from 0.81.6 to 0.82.2 by
@​dependabot[bot] in dotnet/msbuild#14266
* Avoid boxing the struct enumerator in
PropertyDictionary<T>.GetEnumerator() by @​nareshjo in
dotnet/msbuild#14272
* Refresh copy marker when implementation output changes by @​AlesProkop
in dotnet/msbuild#14231
* Send task-host build process environment as delta by @​OvesN in
dotnet/msbuild#14126
* Add regression coverage for metadata newline preservation by
@​VolPlita in dotnet/msbuild#14261
* Fix EmbedInBinlog items with relative paths from child projects by
@​huulinhnguyen-dev in dotnet/msbuild#13990
* Stop requiring VersionPrefix updates in servicing - insert prerelease
versions to VS by @​ViktorHofer in
dotnet/msbuild#14277
* Fix WriteLinesToFile rewriting unchanged file when custom encoding is
used by @​huulinhnguyen-dev in
dotnet/msbuild#14146
* Enable trim/AOT analyzers for Microsoft.Build and clean up annotations
by @​JeremyKuhne in dotnet/msbuild#14064
* [automated] Merge branch 'vs18.9' => 'main' by @​github-actions[bot]
in dotnet/msbuild#14291
* Fix MicroBuild plugin feed URL to use allowed pkgs.dev.azure.com
format by @​AlesProkop in dotnet/msbuild#14295
* Pass ExcludeRestorePackageImports during restore to avoid redundant
evaluations by @​ViktorHofer with @​Copilot in
dotnet/msbuild#14274
* [vs18.7] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13988
* Adopt Clever Test Selection (CTS) as parallel, non-blocking PR
pipeline by @​jankratochvilcz in
dotnet/msbuild#14212
* Harden exceptions when connecting to server by @​JanProvaznik in
dotnet/msbuild#14292
* Update MicrosoftBuildVersion in analyzer template by
@​github-actions[bot] in dotnet/msbuild#13886
* Fix MSBuild Server client dropping build result under WaitAny race
(#​14172) by @​JanProvaznik in
dotnet/msbuild#14251
* Partially revert #​13660: remove NuGet RestoreTask transient TaskHost
workaround by @​JanProvaznik in
dotnet/msbuild#14297
* Disable daily AI credits guardrail for Expert Code Review workflow by
@​JanProvaznik with @​Copilot in
dotnet/msbuild#14314
* Localized file check-in by OneLocBuild Task: Build definition ID 9434:
Build ID 14614733 by @​dotnet-bot in
dotnet/msbuild#14246
* Add opt-in partial (stop-after-pass) project evaluation by
@​ViktorHofer in dotnet/msbuild#14290
* Use partial evaluation for -getProperty/-getItem without a target by
@​ViktorHofer in dotnet/msbuild#14296
* [main] Source code updates from dotnet/dotnet by @​dotnet-maestro[bot]
in dotnet/msbuild#14324
* [main] Update dependencies from dotnet/roslyn by @​dotnet-maestro[bot]
in dotnet/msbuild#14333
* [main] Update dependencies from nuget/nuget.client by
@​dotnet-maestro[bot] in dotnet/msbuild#14330
* Bump github/gh-aw-actions/setup from 0.82.2 to 0.82.8 by
@​dependabot[bot] in dotnet/msbuild#14328
* Restrict partial evaluation to ProjectInstance by @​ViktorHofer in
dotnet/msbuild#14340
 ... (truncated)

Commits viewable in [compare
view](dotnet/msbuild@v18.9.6...v18.10.1).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Microsoft.Build.Utilities.Core&package-manager=nuget&previous-version=18.9.6&new-version=18.10.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This was referenced Sep 17, 2026

This branch was previously deployed

1 inactive deployment
copilot-pat-pool a0f821ee Deployed Jun 30, 2026 by JanProvaznik via conclusion #369
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