Skip to content

[release/11.0.1xx-preview1] Source code updates from dotnet/dotnet#52727

Merged
lewing merged 9 commits intorelease/11.0.1xx-preview1from
darc-release/11.0.1xx-preview1-d8c0b1db-1909-4ac4-9af3-6a64d1e2f3d7
Feb 7, 2026
Merged

[release/11.0.1xx-preview1] Source code updates from dotnet/dotnet#52727
lewing merged 9 commits intorelease/11.0.1xx-preview1from
darc-release/11.0.1xx-preview1-d8c0b1db-1909-4ac4-9af3-6a64d1e2f3d7

Conversation

@dotnet-maestro
Copy link
Contributor

@dotnet-maestro dotnet-maestro bot commented Jan 29, 2026

Note

This is a codeflow update. It may contain both source code changes from
the VMR
as well as dependency updates. Learn more here.

This pull request brings the following source code changes

From https://github.com/dotnet/dotnet

Updated Dependencies

  • From 11.0.0-preview.1.26069.105 to 11.0.0-preview.1.26079.116
    • dotnet-dev-certs
    • dotnet-user-jwts
    • dotnet-user-secrets
    • Microsoft.AspNetCore.Analyzers
    • Microsoft.AspNetCore.App.Ref
    • Microsoft.AspNetCore.App.Ref.Internal
    • Microsoft.AspNetCore.Authentication.Facebook
    • Microsoft.AspNetCore.Authentication.Google
    • Microsoft.AspNetCore.Authentication.MicrosoftAccount
    • Microsoft.AspNetCore.Authorization
    • Microsoft.AspNetCore.Components
    • Microsoft.AspNetCore.Components.Analyzers
    • Microsoft.AspNetCore.Components.Forms
    • Microsoft.AspNetCore.Components.SdkAnalyzers
    • Microsoft.AspNetCore.Components.Web
    • Microsoft.AspNetCore.Components.WebAssembly
    • Microsoft.AspNetCore.Components.WebAssembly.Server
    • Microsoft.AspNetCore.Components.WebView
    • Microsoft.AspNetCore.DeveloperCertificates.XPlat
    • Microsoft.AspNetCore.Metadata
    • Microsoft.AspNetCore.Mvc.Analyzers
    • Microsoft.AspNetCore.Mvc.Api.Analyzers
    • Microsoft.AspNetCore.TestHost
    • Microsoft.Bcl.AsyncInterfaces
    • Microsoft.DotNet.Web.ItemTemplates.11.0
    • Microsoft.DotNet.Web.ProjectTemplates.11.0
    • Microsoft.Dotnet.WinForms.ProjectTemplates
    • Microsoft.DotNet.Wpf.ProjectTemplates
    • Microsoft.Extensions.Configuration.Ini
    • Microsoft.Extensions.DependencyModel
    • Microsoft.Extensions.FileProviders.Abstractions
    • Microsoft.Extensions.FileProviders.Embedded
    • Microsoft.Extensions.FileSystemGlobbing
    • Microsoft.Extensions.Logging
    • Microsoft.Extensions.Logging.Abstractions
    • Microsoft.Extensions.Logging.Console
    • Microsoft.Extensions.ObjectPool
    • Microsoft.JSInterop
    • Microsoft.NET.HostModel
    • Microsoft.NET.ILLink.Tasks
    • Microsoft.NET.Runtime.Emscripten.3.1.56.Cache.win-x64
    • Microsoft.NET.Sdk.WindowsDesktop
    • Microsoft.NETCore.App.Ref
    • Microsoft.NETCore.Platforms
    • Microsoft.Win32.SystemEvents
    • Microsoft.WindowsDesktop.App.Internal
    • Microsoft.WindowsDesktop.App.Ref
    • System.CodeDom
    • System.ComponentModel.Composition
    • System.Composition.AttributedModel
    • System.Composition.Convention
    • System.Composition.Hosting
    • System.Composition.Runtime
    • System.Composition.TypedParts
    • System.Configuration.ConfigurationManager
    • System.Diagnostics.DiagnosticSource
    • System.Formats.Asn1
    • System.IO.Hashing
    • System.Reflection.MetadataLoadContext
    • System.Resources.Extensions
    • System.Security.Cryptography.Pkcs
    • System.Security.Cryptography.ProtectedData
    • System.Security.Cryptography.Xml
    • System.Security.Permissions
    • System.ServiceProcess.ServiceController
    • System.Text.Encoding.CodePages
    • System.Text.Json
    • System.Windows.Extensions
  • From 10.0.0-preview.26069.105 to 10.0.0-preview.26079.116
    • Microsoft.AspNetCore.Mvc.Razor.Extensions.Tooling.Internal
    • Microsoft.CodeAnalysis.Razor.Tooling.Internal
    • Microsoft.NET.Sdk.Razor.SourceGenerators.Transport
  • From 18.4.0-preview-26069-105 to 18.4.0-preview-26079-116
    • Microsoft.Build
    • Microsoft.Build.Localization
  • From 7.3.0-preview.1.7005 to 7.4.0-rc.8016
    • Microsoft.Build.NuGetSdkResolver
    • NuGet.Build.Tasks
    • NuGet.Build.Tasks.Console
    • NuGet.Build.Tasks.Pack
    • NuGet.CommandLine.XPlat
    • NuGet.Commands
    • NuGet.Common
    • NuGet.Configuration
    • NuGet.Credentials
    • NuGet.DependencyResolver.Core
    • NuGet.Frameworks
    • NuGet.LibraryModel
    • NuGet.Localization
    • NuGet.Packaging
    • NuGet.ProjectModel
    • NuGet.Protocol
    • NuGet.Versioning
  • From 11.0.100-preview.26069.105 to 11.0.100-preview.1.26079.116
    • Microsoft.Build.Tasks.Git
    • Microsoft.SourceLink.AzureRepos.Git
    • Microsoft.SourceLink.Bitbucket.Git
    • Microsoft.SourceLink.Common
    • Microsoft.SourceLink.GitHub
    • Microsoft.SourceLink.GitLab
  • From 5.4.0-2.26069.105 to 5.4.0-2.26079.116
    • Microsoft.CodeAnalysis
    • Microsoft.CodeAnalysis.BuildClient
    • Microsoft.CodeAnalysis.CSharp
    • Microsoft.CodeAnalysis.CSharp.CodeStyle
    • Microsoft.CodeAnalysis.CSharp.Features
    • Microsoft.CodeAnalysis.CSharp.Workspaces
    • Microsoft.CodeAnalysis.ExternalAccess.HotReload
    • Microsoft.CodeAnalysis.PublicApiAnalyzers
    • Microsoft.CodeAnalysis.Workspaces.Common
    • Microsoft.CodeAnalysis.Workspaces.MSBuild
    • Microsoft.Net.Compilers.Toolset
    • Microsoft.Net.Compilers.Toolset.Framework
  • From 2.0.0-preview.1.26069.105 to 2.0.0-preview.1.26079.116
    • Microsoft.Deployment.DotNet.Releases
  • From 3.0.0-preview.26069.105 to 3.0.0-preview.1.26079.116
    • Microsoft.DiaSymReader
  • From 11.0.0-beta.26069.105 to 11.0.0-beta.26079.116
    • Microsoft.DotNet.Arcade.Sdk
    • Microsoft.DotNet.Build.Tasks.Installers
    • Microsoft.DotNet.Build.Tasks.Templating
    • Microsoft.DotNet.Build.Tasks.Workloads
    • Microsoft.DotNet.Helix.Sdk
    • Microsoft.DotNet.SignTool
    • Microsoft.DotNet.XliffTasks
    • Microsoft.DotNet.XUnitExtensions
  • From 15.2.100-preview.26069.105 to 15.2.100-preview1.26079.116
    • Microsoft.FSharp.Compiler
  • From 18.3.0-preview-26069-105 to 18.4.0-preview-26079-116
    • Microsoft.NET.Test.Sdk
    • Microsoft.TestPlatform.Build
    • Microsoft.TestPlatform.CLI
  • From 11.0.100-preview.1.26069.105 to 11.0.100-preview.1.26079.116
    • Microsoft.TemplateEngine.Abstractions
    • Microsoft.TemplateEngine.Authoring.TemplateVerifier
    • Microsoft.TemplateEngine.Edge
    • Microsoft.TemplateEngine.Mocks
    • Microsoft.TemplateEngine.Orchestrator.RunnableProjects
    • Microsoft.TemplateEngine.TestHelper
    • Microsoft.TemplateEngine.Utils
    • Microsoft.TemplateSearch.Common
    • Microsoft.TemplateSearch.TemplateDiscovery
  • From 3.3.0-preview.26069.105 to 3.3.0-preview.1.26079.116
    • Microsoft.Web.Xdt
  • From 3.0.0-preview.1.26069.105 to 3.0.0-preview.1.26079.116
    • System.CommandLine

Associated changes in source repos

Diff the source with this PR branch
darc vmr diff --name-only https://github.com/dotnet/dotnet:c87e49a93358a940a5a1399ccde258f6a060bedc..https://github.com/dotnet/sdk:darc-release/11.0.1xx-preview1-d8c0b1db-1909-4ac4-9af3-6a64d1e2f3d7

@DonnaChen888
Copy link
Contributor

@dsplaisted could you please help to take a look at this issue?

System.Exception : The following additional unexpected assets were found in the manifest:
${ProjectPath}\blazorwasm\obj\Debug${Tfm}\compressed_framework\System.IO.Compression.Zstandard.wasm.gz
If the difference in baselines is expected, please re-generate the baselines.
Start by ensuring you're dogfooding the SDK from the current branch (dotnet --version should be '*.0.0-dev').
If you're not on the dogfood sdk, from the root of the repository run:

  1. dotnet clean
  2. .\restore.cmd or ./restore.sh
  3. .\build.cmd ./build.sh
  4. .\eng\dogfood.cmd or . ./eng/dogfood.sh
    Then, using the dogfood SDK run the .\src\RazorSdk\update-test-baselines.ps1 script.

@baronfel
Copy link
Member

The runtime team is currently adding support for ZStandard compression to .NET, so I do expect to see a new assembly.

@dsplaisted dsplaisted requested a review from a team as a code owner January 30, 2026 19:16
@dsplaisted
Copy link
Member

@dotnet/aspnet-blazor-eng A bunch of blazor tests are failing with an exception out of a task. Can someone investigate?

MSBUILD : error : This is an unhandled exception in MSBuild -- PLEASE UPVOTE AN EXISTING ISSUE OR FILE A NEW ONE AT https://aka.ms/msbuild/unhandled [C:\h\w\BAA90A09\t\dotnetSdkTests\4pk0lyk2.0zj\Build_IsIncre---61DA2120\blazorwasm\blazorwasm.csproj]
MSBUILD : error : System.ArgumentNullException: Parameter "projectFile" cannot be null. [C:\h\w\BAA90A09\t\dotnetSdkTests\4pk0lyk2.0zj\Build_IsIncre---61DA2120\blazorwasm\blazorwasm.csproj]
MSBUILD : error : at Microsoft.Build.Exceptions.InvalidProjectFileException..ctor(String projectFile, Int32 lineNumber, Int32 columnNumber, Int32 endLineNumber, Int32 endColumnNumber, String message, String errorSubcategory, String errorCode, String helpKeyword, Exception innerException)

@dotnet/run-file Microsoft.DotNet.Cli.Run.Tests.RunFileTests.Microsoft.DotNet.Cli.Run.Tests.RunFileTests.CscArguments is failing. Can someone take a look? This may be due to the addition of System.IO.Compression.ZStandard.dll.

Thanks.

@dotnet-maestro
Copy link
Contributor Author

Important

While this PR was open, the source repository has received code changes from this repository (an opposite codeflow merged).
To avoid complex conflicts, the codeflow cannot continue until this PR is closed or merged.

You can continue with one of the following options:

  • Ignore this and merge this PR as usual without waiting for the new changes.
    Once merged, Maestro will create a new codeflow PR with the new changes.
  • Close this PR and wait for Maestro to open a new one with old and new changes included.
    You will lose any manual changes made in this PR.
    You can also manually trigger the new codeflow right away by running:
    darc trigger-subscriptions --id e2fbae43-d0ec-4e7a-9d43-4166d87792a1
    
  • Force a codeflow into this PR at your own risk if you want the new changes.
    User commits made to this PR might be reverted.
    darc trigger-subscriptions --id e2fbae43-d0ec-4e7a-9d43-4166d87792a1 --force
    

💡 You may consult the FAQ for more information or tag @dotnet/prodconsvcs for assistance.

@lewing
Copy link
Member

lewing commented Feb 3, 2026

@dsplaisted The Blazor MSBuild crash is a known and already-fixed bug in MSBuild:

Root Cause:

The bug is in TaskBuilder.cs line ~923 where an InvalidProjectFileException gets wrapped in another one. When the inner exception has a null ProjectFile property (which is valid per XML docs), the wrapping constructor throws ArgumentNullException.

This was exposed by the new Runtime=\"NET\" task host feature - when the .NET Runtime Task Host can't be found, it creates an exception without project file context, and wrapping that exception crashes.

Resolution:
The fix has already merged to MSBuild main. This PR should be unblocked once a subsequent VMR update includes the fix, or the fix could be backported to the release/11.0.1xx-preview1 branch being used.

This is not a regression caused by the MSBuild changes in this PR - rather, those changes exposed a pre-existing latent bug that was independently discovered and fixed.

@ViktorHofer
Copy link
Member

ViktorHofer commented Feb 3, 2026

The Blazor MSBuild crash is a known and already-fixed bug in MSBuild:

@lewing notice that the crash in InvalidProjectFileException is not the actual cause for the error. That path is only entered when there's already an error. The crash just hides what's actually failing.

In my situation this happened when tasks started using the new Runtime="NET" support on UsingTask in non sdk-style project.

This likely means that there's a real regression in the product that will impact customers when they start using P1.

@lewing
Copy link
Member

lewing commented Feb 3, 2026

The Blazor MSBuild crash is a known and already-fixed bug in MSBuild:

@lewing notice that the crash in InvalidProjectFileException is not the actual cause for the error. That path is only entered when there's already an error. The crash just hides what's actually failing.

In my situation this happened when tasks started using the new Runtime="NET" support on UsingTask in non sdk-style project.

This likely means that there's a real regression in the product that will impact customers when they start using P1.

@ViktorHofer I think @maraf switched the task at your suggestion so what is the recommendation?

@ViktorHofer
Copy link
Member

ViktorHofer commented Feb 3, 2026

The Runtime="NET" feature is currently only supported with sdk style projects: dotnet/msbuild#12895. Double check if a non-sdk project tries to use one of your changed tasks.

@lewing
Copy link
Member

lewing commented Feb 3, 2026

The Runtime="NET" feature is currently only supported with sdk style projects: dotnet/msbuild#12895. Double check if a non-sdk project tries to use one of your changed tasks.

for reference dotnet/runtime#123304

@rainersigwald
Copy link
Member

rainersigwald commented Feb 3, 2026

I think using netcore taskhost in the SDK today may be a bit premature. Ideal fix is probably reverting dotnet/runtime#123304 (for now).

cc @YuliiaKovalova

@lewing
Copy link
Member

lewing commented Feb 3, 2026

I think using netcore taskhost in the SDK today may be a bit premature. Ideal fix is probably reverting dotnet/runtime#123304 (for now).

cc @YuliiaKovalova

dotnet/runtime#123974

@rainersigwald
Copy link
Member

Spitballing, but I wonder if the VS installation on this queue

https://github.com/dotnet/sdk/blob/99cb42d9476000e06f369cce3c47632add57e4d0/.vsts-pr.yml#L53C1-L54C1

is slightly stale and has some other MSBuild-side bug.

@lewing
Copy link
Member

lewing commented Feb 3, 2026

Spitballing, but I wonder if the VS installation on this queue

https://github.com/dotnet/sdk/blob/99cb42d9476000e06f369cce3c47632add57e4d0/.vsts-pr.yml#L53C1-L54C1

is slightly stale and has some other MSBuild-side bug.

looks like MSBuild version 18.1.1-preview-25556-03 for .NET Framework from the logs

$"/reference:{DotNetRootPath}/packs/Microsoft.NETCore.App.Ref/{RuntimeVersion}/ref/net{TargetFrameworkVersion}/System.IO.Compression.dll",
$"/reference:{DotNetRootPath}/packs/Microsoft.NETCore.App.Ref/{RuntimeVersion}/ref/net{TargetFrameworkVersion}/System.IO.Compression.FileSystem.dll",
$"/reference:{DotNetRootPath}/packs/Microsoft.NETCore.App.Ref/{RuntimeVersion}/ref/net{TargetFrameworkVersion}/System.IO.Compression.ZipFile.dll",
$"/reference:{DotNetRootPath}/packs/Microsoft.NETCore.App.Ref/{RuntimeVersion}/ref/net{TargetFrameworkVersion}/System.IO.Compression.Zstandard.dll",
Copy link
Member

Choose a reason for hiding this comment

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

@jjonescz does this impact P1 meaning we should fix this for the produced P1 SDK?

Copy link
Member

Choose a reason for hiding this comment

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

Aside from that, are there any plans to avoid these hardcodes?

Copy link
Member

@jjonescz jjonescz Feb 4, 2026

Choose a reason for hiding this comment

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

does this impact P1 meaning we should fix this for the produced P1 SDK?

If the DLL is supposed to be in P1, then without this change it won't be referenced by file-based apps that skip builds, yeah. (Sounds like a low priority edge case to me though.)

Aside from that, are there any plans to avoid these hardcodes?

That would be straightforward to do technically I think but I would rather avoid that, that's why I chose this hard-coding in the first place; I have seen several times before that some unintended changes tried to slip through here - if this was automated, no-one would notice that. Also we only hardcode here the set of CSC arguments for the simplest command-line app. That should hardly ever change - if there is large change it's probably a bug - and so it seems like a good test in general to have (not just for file-based apps).

Copy link
Member

@ViktorHofer ViktorHofer Feb 4, 2026

Choose a reason for hiding this comment

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

Looks like you hardcode all reference assemblies that are part of the microsoft.netcore.app.ref targeting pack. That will always change (grow). The source of truth is the ref pack's FrameworkList.xml file which provides the list of assemblies to reference and the TargetFrameworkVersion.

cc @ericstj for the ref pack

Copy link
Member

Choose a reason for hiding this comment

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

I see, we can use that xml file instead of hardcoding the list of references, that makes sense to me.

Copy link
Member

Choose a reason for hiding this comment

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

What is this thing doing?

This is an optimization used by file-based apps. It can skip MSBuild and run just the compiler for simple apps which are equivalent to dotnet new console. That might seem limited but it's a very common scenario for file-based apps.

Anything that approximates that is bound to diverge.

We are not trying to approximate here, this should be precisely what MSBuild would do for that exact same simple app, we have tests for that.

Copy link
Member

Choose a reason for hiding this comment

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

does the user have a way to target net10.0 with this? the System.IO.Compression.Zstandard.dll won't exist in that reference pack and looks like it'd also set NET11_0_OR_GREATERdefine

Copy link
Member

@jjonescz jjonescz Feb 10, 2026

Choose a reason for hiding this comment

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

does the user have a way to target net10.0 with this?

They can set #:property TargetFramework=net10.0 or use Directory.Build.props or something like that - all of which will skip that optimized path (which uses hard-coded CSC args) and fallback to full MSBuild instead.

Copy link
Member

@ViktorHofer ViktorHofer Feb 10, 2026

Choose a reason for hiding this comment

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

@jjonescz since this PR is already merged, please file a tracking issue to capture our feedback around avoiding hardcodes

Copy link
Member

Choose a reason for hiding this comment

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

akoeplinger pushed a commit to dotnet/runtime that referenced this pull request Feb 4, 2026
…#123973)

This reverts PR #123304 (commit
46c884e).

## Reverted Changes

- Restores multi-targeting for Microsoft.NET.Sdk.WebAssembly.Pack.Tasks
(net11.0 + net472)
- Restores \_WebAssemblySdkTasksTFM\ property and
MSBuildRuntimeType-based TFM selection
- Restores \TaskFactory=\"TaskHostFactory\"\ instead of
\Runtime=\"NET\"\ for UsingTask declarations
- Restores TFM-specific paths in NuGet package layout

## Reason for Revert

Per discussion in
dotnet/sdk#52727 (comment):

The \Runtime=\"NET\"\ feature for UsingTask is currently **only
supported with SDK-style projects** (see
dotnet/msbuild#12895). Using it in the
WebAssembly SDK tasks causes failures when these tasks are invoked from
non-SDK-style projects.

Additionally, the .NET Runtime Task Host infrastructure is still
maturing, and using it in the SDK at this time is premature. This was
causing Blazor test failures in the SDK repo where tasks would crash
with \ArgumentNullException\ when the .NET Runtime Task Host couldn't be
found.

This revert restores the previous behavior using
\TaskFactory=\"TaskHostFactory\"\ with TFM-based task assembly
selection, which works reliably across both SDK-style and non-SDK-style
projects.

The \Runtime=\"NET\"\ approach can be revisited once MSBuild has broader
support for this feature.

Related:
- dotnet/msbuild#12895 - Runtime=\"NET\" only
works with SDK-style projects
- dotnet/msbuild#13150 - MSBuild crash when
wrapping exceptions (fixed but not yet in preview1)
@marcpopMSFT
Copy link
Member

@lewing @rainersigwald most of the test failures are still in the blazor wasm tests. Did you end up landing on a solution for that?

@marcpopMSFT marcpopMSFT requested a review from a team as a code owner February 6, 2026 21:01
@rainersigwald
Copy link
Member

It got reverted in dotnet/runtime#123974, so maybe the VMR flow is slightly stale here?

@lewing
Copy link
Member

lewing commented Feb 6, 2026

@rainersigwald Yes, confirmed — the codeflow is still stale from that point. The revert landed in the VMR but never flowed into this PR.

Timeline:

  • Jan 30: Last VMR codeflow into this PR (commit c87e49a, Build 20260129.16)
  • Jan 30: Maestro posted the staleness warning, blocking further codeflow
  • Feb 3: Runtime revert merged (dotnet/runtime#123974) to release/11.0-preview1
  • Feb 4: Revert flowed into VMR via dotnet/dotnet#4649 (runtime commit b027ccb)
  • Feb 4: SDK target branch was merged into this PR branch (SDK-side changes only, NOT VMR dependency updates)
  • Today: VMR release/11.0.1xx-preview1 is at 23a8eb8d — 8 days ahead of the codeflow snapshot in this PR

The in-progress build (1283475) will likely hit the same Blazor WASM ArgumentNullException crashes since it still doesn't have the runtime revert.

Options to unblock:

  1. Close this PR and let Maestro open a fresh one (loses manual commits: ZStandard baseline fix, CSC args update, help baselines)
  2. Force trigger: darc trigger-subscriptions --id e2fbae43-d0ec-4e7a-9d43-4166d87792a1 --force (manual commits may be reverted)
  3. Merge as-is, then get the revert in the next codeflow PR

@lewing
Copy link
Member

lewing commented Feb 7, 2026

@dotnet/prodconsvcs force triggering the subscription is doing nothing.

lewing added a commit to dotnet/runtime that referenced this pull request Feb 7, 2026
## Summary

Adds a new Copilot Agent Skill (`.github/skills/vmr-codeflow-status/`)
that automates analysis of VMR codeflow PR health for dotnet
repositories. Handles both backflow (VMR → product repos) and forward
flow (product repos → VMR).

### What it does

**PR Analysis Mode:**
1. **Parses PR metadata** — Extracts VMR commit, subscription ID, build
info from the PR body
2. **Validates snapshot** — Cross-references PR body commit against
branch "Backflow from" commit messages to detect stale metadata
3. **Checks freshness** — Compares PR's snapshot against the current
source branch HEAD, showing how many commits behind and which repos have
updates
4. **Shows pending forward flow** — For behind backflow PRs, finds open
forward flow PRs that would close part of the freshness gap
5. **Detects staleness & conflicts** — Finds Maestro "codeflow cannot
continue" warnings and "Conflict detected" messages (with conflicting
files and resolve commands)
6. **Analyzes PR commits** — Categorizes commits as auto-updates vs
manual (which would be lost on close/force-trigger)
7. **Traces fixes** (optional) — Checks if a specific fix PR has flowed
through VMR into the codeflow PR
8. **Recommends actions** — Suggests force trigger, close/reopen, merge
as-is, resolve conflicts, or wait, with ready-to-use darc commands

**Missing Backflow Mode:**
- Discovers all branches with backflow subscriptions by examining
recently merged PRs
- Compares VMR branch HEAD against the last merged backflow commit
- Flags branches where the VMR has moved but no new backflow PR exists
- Warns when Maestro may be stuck (>6 hours since last merge with VMR
ahead)

### Example Prompts

- "check the codeflow status of dotnet/sdk#52727"
- "is #124098 up to date with the VMR?"
- "has the runtime revert in #123974 reached the codeflow
PR dotnet/sdk#52727?"
- "why is this codeflow PR blocked?"
- "are there any missing backflow PRs for dotnet/roslyn?"
- "report on the codeflow status for dotnet/aspnetcore"
- "what forward flow PRs are pending for the preview1 VMR branch?"

### Motivation

Investigating stale codeflow PRs is a common and tedious task — checking
VMR freshness, finding staleness warnings, tracing whether specific
fixes have flowed through. This skill automates the entire workflow and
provides actionable darc commands.

Tested against 10+ codeflow PRs across dotnet/sdk, dotnet/runtime,
dotnet/roslyn, dotnet/aspnetcore, and dotnet/dotnet on multiple branches
(main, preview1, release/10.0.x).

### Files

- `SKILL.md` — Skill definition with frontmatter (matching existing
skills in this repo)
- `scripts/Get-CodeflowStatus.ps1` — Main analysis script (~750 lines)
- `references/vmr-codeflow-reference.md` — Reference docs (VMR concepts,
darc CLI, API endpoints)
@lewing
Copy link
Member

lewing commented Feb 7, 2026

@rainersigwald Yes, confirmed — the codeflow is still stale from that point. The revert landed in the VMR but never flowed into this PR.

Timeline:

  • Jan 30: Last VMR codeflow into this PR (commit c87e49a, Build 20260129.16)
  • Jan 30: Maestro posted the staleness warning, blocking further codeflow
  • Feb 3: Runtime revert merged (dotnet/runtime#123974) to release/11.0-preview1
  • Feb 4: Revert flowed into VMR via dotnet/dotnet#4649 (runtime commit b027ccb)
  • Feb 4: SDK target branch was merged into this PR branch (SDK-side changes only, NOT VMR dependency updates)
  • Today: VMR release/11.0.1xx-preview1 is at 23a8eb8d — 8 days ahead of the codeflow snapshot in this PR

The in-progress build (1283475) will likely hit the same Blazor WASM ArgumentNullException crashes since it still doesn't have the runtime revert.

Options to unblock:

  1. Close this PR and let Maestro open a fresh one (loses manual commits: ZStandard baseline fix, CSC args update, help baselines)
  2. Force trigger: darc trigger-subscriptions --id e2fbae43-d0ec-4e7a-9d43-4166d87792a1 --force (manual commits may be reverted)
  3. Merge as-is, then get the revert in the next codeflow PR

for reference use dotnet/runtime#124109 for this kind of analysis

@lewing
Copy link
Member

lewing commented Feb 7, 2026

@dotnet/prodconsvcs force triggering the subscription is doing nothing.

PS C:\Users\lewing> darc trigger-subscriptions --id e2fbae43-d0ec-4e7a-9d43-4166d87792a1 --force
Will trigger the following 1 subscriptions...
  https://github.com/dotnet/dotnet (.NET 11.0.1xx SDK Preview 1) ==> 'https://github.com/dotnet/sdk' ('release/11.0.1xx-preview1')
Continue? (y/n) y
Triggering 1 subscriptions...done

hours ago

@lewing lewing merged commit 289766d into release/11.0.1xx-preview1 Feb 7, 2026
23 of 25 checks passed
@lewing lewing deleted the darc-release/11.0.1xx-preview1-d8c0b1db-1909-4ac4-9af3-6a64d1e2f3d7 branch February 7, 2026 16:37
lewing added a commit to dotnet/runtime that referenced this pull request Feb 8, 2026
…ackflow (#124129)

## Version.Details.xml as primary VMR snapshot source + forward flow
scanning

### Problem
The codeflow status script relied on PR body metadata and commit
messages to determine the VMR snapshot. When manual backflow was used
(e.g., \darc vmr backflow\ pushed directly), the PR body was stale and
commit messages didn't follow the expected format, causing incorrect
freshness reporting.

### Changes

**Commit 1: VD.xml as primary snapshot**
- \�ng/Version.Details.xml\ (\<Source Sha=...>\) is now checked first as
the authoritative snapshot source
- XML parser with regex fallback, 40-char SHA validation
- Commit messages are secondary confirmation, PR body is last resort
- Case-insensitive SHA comparison throughout
- \2>\\\ for stderr isolation on all \gh\ calls

**Commit 2: Forward flow scanning in -CheckMissing**
- \-CheckMissing\ now scans open forward flow PRs (product repo →
dotnet/dotnet)
- Detects conflicts and staleness via Maestro comment scanning
- Combined summary showing backflow + forward flow health

### Testing
- VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885
(conflicted), aspnetcore#65338 (deleted branch), runtime#124098
(normal), sourcelink#1581 (fresh)
- Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1
conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)

Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885
lewing added a commit to lewing/runtime that referenced this pull request Feb 9, 2026
…dotnet#123973)

This reverts PR dotnet#123304 (commit
46c884e).

## Reverted Changes

- Restores multi-targeting for Microsoft.NET.Sdk.WebAssembly.Pack.Tasks
(net11.0 + net472)
- Restores \_WebAssemblySdkTasksTFM\ property and
MSBuildRuntimeType-based TFM selection
- Restores \TaskFactory=\"TaskHostFactory\"\ instead of
\Runtime=\"NET\"\ for UsingTask declarations
- Restores TFM-specific paths in NuGet package layout

## Reason for Revert

Per discussion in
dotnet/sdk#52727 (comment):

The \Runtime=\"NET\"\ feature for UsingTask is currently **only
supported with SDK-style projects** (see
dotnet/msbuild#12895). Using it in the
WebAssembly SDK tasks causes failures when these tasks are invoked from
non-SDK-style projects.

Additionally, the .NET Runtime Task Host infrastructure is still
maturing, and using it in the SDK at this time is premature. This was
causing Blazor test failures in the SDK repo where tasks would crash
with \ArgumentNullException\ when the .NET Runtime Task Host couldn't be
found.

This revert restores the previous behavior using
\TaskFactory=\"TaskHostFactory\"\ with TFM-based task assembly
selection, which works reliably across both SDK-style and non-SDK-style
projects.

The \Runtime=\"NET\"\ approach can be revisited once MSBuild has broader
support for this feature.

Related:
- dotnet/msbuild#12895 - Runtime=\"NET\" only
works with SDK-style projects
- dotnet/msbuild#13150 - MSBuild crash when
wrapping exceptions (fixed but not yet in preview1)
lewing added a commit to lewing/runtime that referenced this pull request Feb 9, 2026
## Summary

Adds a new Copilot Agent Skill (`.github/skills/vmr-codeflow-status/`)
that automates analysis of VMR codeflow PR health for dotnet
repositories. Handles both backflow (VMR → product repos) and forward
flow (product repos → VMR).

### What it does

**PR Analysis Mode:**
1. **Parses PR metadata** — Extracts VMR commit, subscription ID, build
info from the PR body
2. **Validates snapshot** — Cross-references PR body commit against
branch "Backflow from" commit messages to detect stale metadata
3. **Checks freshness** — Compares PR's snapshot against the current
source branch HEAD, showing how many commits behind and which repos have
updates
4. **Shows pending forward flow** — For behind backflow PRs, finds open
forward flow PRs that would close part of the freshness gap
5. **Detects staleness & conflicts** — Finds Maestro "codeflow cannot
continue" warnings and "Conflict detected" messages (with conflicting
files and resolve commands)
6. **Analyzes PR commits** — Categorizes commits as auto-updates vs
manual (which would be lost on close/force-trigger)
7. **Traces fixes** (optional) — Checks if a specific fix PR has flowed
through VMR into the codeflow PR
8. **Recommends actions** — Suggests force trigger, close/reopen, merge
as-is, resolve conflicts, or wait, with ready-to-use darc commands

**Missing Backflow Mode:**
- Discovers all branches with backflow subscriptions by examining
recently merged PRs
- Compares VMR branch HEAD against the last merged backflow commit
- Flags branches where the VMR has moved but no new backflow PR exists
- Warns when Maestro may be stuck (>6 hours since last merge with VMR
ahead)

### Example Prompts

- "check the codeflow status of dotnet/sdk#52727"
- "is dotnet#124098 up to date with the VMR?"
- "has the runtime revert in dotnet#123974 reached the codeflow
PR dotnet/sdk#52727?"
- "why is this codeflow PR blocked?"
- "are there any missing backflow PRs for dotnet/roslyn?"
- "report on the codeflow status for dotnet/aspnetcore"
- "what forward flow PRs are pending for the preview1 VMR branch?"

### Motivation

Investigating stale codeflow PRs is a common and tedious task — checking
VMR freshness, finding staleness warnings, tracing whether specific
fixes have flowed through. This skill automates the entire workflow and
provides actionable darc commands.

Tested against 10+ codeflow PRs across dotnet/sdk, dotnet/runtime,
dotnet/roslyn, dotnet/aspnetcore, and dotnet/dotnet on multiple branches
(main, preview1, release/10.0.x).

### Files

- `SKILL.md` — Skill definition with frontmatter (matching existing
skills in this repo)
- `scripts/Get-CodeflowStatus.ps1` — Main analysis script (~750 lines)
- `references/vmr-codeflow-reference.md` — Reference docs (VMR concepts,
darc CLI, API endpoints)
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.

10 participants