Skip to content

[main] Source code updates from dotnet/dotnet#124232

Open
dotnet-maestro[bot] wants to merge 7 commits intomainfrom
darc-main-e2f5167c-e029-48f9-9320-5da37ced6868
Open

[main] Source code updates from dotnet/dotnet#124232
dotnet-maestro[bot] wants to merge 7 commits intomainfrom
darc-main-e2f5167c-e029-48f9-9320-5da37ced6868

Conversation

@dotnet-maestro
Copy link
Contributor

@dotnet-maestro dotnet-maestro bot commented Feb 10, 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 5.4.0-2.26069.103 to 5.5.0-2.26110.116
    • Microsoft.CodeAnalysis
    • Microsoft.CodeAnalysis.Analyzers
    • Microsoft.CodeAnalysis.CSharp
    • Microsoft.Net.Compilers.Toolset
  • From 11.0.100-preview.1.26069.103 to 11.0.100-preview.2.26110.116
    • Microsoft.CodeAnalysis.NetAnalyzers
    • Microsoft.DotNet.ApiCompat.Task
    • Microsoft.NET.Workload.Emscripten.Current.Manifest-11.0.100.Transport
  • From 11.0.0-beta.26069.103 to 11.0.0-beta.26110.116
    • Microsoft.DotNet.Arcade.Sdk
    • Microsoft.DotNet.Build.Tasks.Archives
    • Microsoft.DotNet.Build.Tasks.Feed
    • Microsoft.DotNet.Build.Tasks.Installers
    • Microsoft.DotNet.Build.Tasks.Packaging
    • Microsoft.DotNet.Build.Tasks.TargetFramework
    • Microsoft.DotNet.Build.Tasks.Templating
    • Microsoft.DotNet.Build.Tasks.Workloads
    • Microsoft.DotNet.CodeAnalysis
    • Microsoft.DotNet.GenAPI
    • Microsoft.DotNet.GenFacades
    • Microsoft.DotNet.Helix.Sdk
    • Microsoft.DotNet.PackageTesting
    • Microsoft.DotNet.RemoteExecutor
    • Microsoft.DotNet.SharedFramework.Sdk
    • Microsoft.DotNet.XliffTasks
    • Microsoft.DotNet.XUnitExtensions
  • From 0.11.5-preview.26069.103 to 0.11.5-preview.26110.116
    • Microsoft.DotNet.Cecil
  • From 2.9.3-beta.26069.103 to 2.9.3-beta.26110.116
    • Microsoft.DotNet.XUnitAssert
    • Microsoft.DotNet.XUnitConsoleRunner
  • From 11.0.0-preview.1.26069.103 to 11.0.0-preview.2.26110.116
    • Microsoft.NET.Sdk.IL
    • Microsoft.NETCore.App.Ref
    • Microsoft.NETCore.ILAsm
    • runtime.native.System.IO.Ports
    • System.Reflection.Metadata
    • System.Reflection.MetadataLoadContext
    • System.Text.Json
  • From 7.3.0-preview.1.7003 to 7.5.0-rc.11116
    • NuGet.Frameworks
    • NuGet.Packaging
    • NuGet.ProjectModel
    • NuGet.Versioning
  • From 3.0.0-preview.1.26069.103 to 3.0.0-preview.2.26110.116
    • System.CommandLine
  • From 19.1.0-alpha.1.25625.2 to 19.1.0-alpha.1.26104.1
    • runtime.linux-arm64.Microsoft.NETCore.Runtime.JIT.Tools
    • runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang
    • runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk
    • runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools
    • runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.JIT.Tools
    • runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang
    • runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk
    • runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools
    • runtime.linux-musl-x64.Microsoft.NETCore.Runtime.JIT.Tools
    • runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang
    • runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk
    • runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools
    • runtime.linux-x64.Microsoft.NETCore.Runtime.JIT.Tools
    • runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang
    • runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk
    • runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools
    • runtime.osx-arm64.Microsoft.NETCore.Runtime.JIT.Tools
    • runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang
    • runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk
    • runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools
    • runtime.osx-x64.Microsoft.NETCore.Runtime.JIT.Tools
    • runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang
    • runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk
    • runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools
    • runtime.win-arm64.Microsoft.NETCore.Runtime.JIT.Tools
    • runtime.win-x64.Microsoft.NETCore.Runtime.JIT.Tools
    • runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang
    • runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk
    • runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools
  • From 11.0.0-alpha.1.26061.1 to 11.0.0-alpha.1.26104.1
    • runtime.linux-arm64.Microsoft.NETCore.Runtime.Wasm.Node.Transport
    • runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Wasm.Node.Transport
    • runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Wasm.Node.Transport
    • runtime.linux-x64.Microsoft.NETCore.Runtime.Wasm.Node.Transport
    • runtime.osx-arm64.Microsoft.NETCore.Runtime.Wasm.Node.Transport
    • runtime.osx-x64.Microsoft.NETCore.Runtime.Wasm.Node.Transport
    • runtime.win-arm64.Microsoft.NETCore.Runtime.Wasm.Node.Transport
    • runtime.win-x64.Microsoft.NETCore.Runtime.Wasm.Node.Transport

Associated changes in source repos

Diff the source with this PR branch
darc vmr diff --name-only https://github.com/dotnet/dotnet:72217c0d2d275adb380979be6f366a38292cf053..https://github.com/dotnet/runtime:darc-main-e2f5167c-e029-48f9-9320-5da37ced6868

On relative base path root
Microsoft.CodeAnalysis,Microsoft.CodeAnalysis.Analyzers,Microsoft.CodeAnalysis.CSharp,Microsoft.Net.Compilers.Toolset From Version 5.4.0-2.26069.103 -> To Version 5.5.0-2.26110.101 (parent: )

Microsoft.CodeAnalysis.NetAnalyzers,Microsoft.DotNet.ApiCompat.Task,Microsoft.NET.Workload.Emscripten.Current.Manifest-11.0.100.Transport From Version 11.0.100-preview.1.26069.103 -> To Version 11.0.100-preview.2.26110.101 (parent: )

Microsoft.DotNet.Arcade.Sdk,Microsoft.DotNet.Build.Tasks.Archives,Microsoft.DotNet.Build.Tasks.Feed,Microsoft.DotNet.Build.Tasks.Installers,Microsoft.DotNet.Build.Tasks.Packaging,Microsoft.DotNet.Build.Tasks.TargetFramework,Microsoft.DotNet.Build.Tasks.Templating,Microsoft.DotNet.Build.Tasks.Workloads,Microsoft.DotNet.CodeAnalysis,Microsoft.DotNet.GenAPI,Microsoft.DotNet.GenFacades,Microsoft.DotNet.Helix.Sdk,Microsoft.DotNet.PackageTesting,Microsoft.DotNet.RemoteExecutor,Microsoft.DotNet.SharedFramework.Sdk,Microsoft.DotNet.XliffTasks,Microsoft.DotNet.XUnitExtensions From Version 11.0.0-beta.26069.103 -> To Version 11.0.0-beta.26110.101 (parent: )

Microsoft.DotNet.Cecil From Version 0.11.5-preview.26069.103 -> To Version 0.11.5-preview.26110.101 (parent: )

Microsoft.DotNet.XUnitAssert,Microsoft.DotNet.XUnitConsoleRunner From Version 2.9.3-beta.26069.103 -> To Version 2.9.3-beta.26110.101 (parent: )

Microsoft.NET.Sdk.IL,Microsoft.NETCore.App.Ref,Microsoft.NETCore.ILAsm,runtime.native.System.IO.Ports,System.Reflection.Metadata,System.Reflection.MetadataLoadContext,System.Text.Json From Version 11.0.0-preview.1.26069.103 -> To Version 11.0.0-preview.2.26110.101 (parent: )

NuGet.Frameworks,NuGet.Packaging,NuGet.ProjectModel,NuGet.Versioning From Version 7.3.0-preview.1.7003 -> To Version 7.5.0-rc.11101 (parent: )

System.CommandLine From Version 3.0.0-preview.1.26069.103 -> To Version 3.0.0-preview.2.26110.101 (parent: )

runtime.linux-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.win-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.win-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.osx-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.osx-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools From Version 19.1.0-alpha.1.25625.2 -> To Version 19.1.0-alpha.1.26076.1 (parent: )

runtime.linux-arm64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.linux-x64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.osx-arm64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.osx-x64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.win-arm64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.win-x64.Microsoft.NETCore.Runtime.Wasm.Node.Transport From Version 11.0.0-alpha.1.26061.1 -> To Version 11.0.0-alpha.1.26076.4 (parent: )

[[ commit created by automation ]]
@github-actions github-actions bot added the area-codeflow for labeling automated codeflow label Feb 10, 2026
@akoeplinger akoeplinger force-pushed the darc-main-e2f5167c-e029-48f9-9320-5da37ced6868 branch from f2f682b to 85d231e Compare February 10, 2026 17:24
@akoeplinger
Copy link
Member

@premun some more weird revert issues here

lewing added a commit to lewing/runtime that referenced this pull request Feb 10, 2026
… reasoning

Apply the Data vs. Reasoning Boundary pattern:
- Script emits [CI_ANALYSIS_SUMMARY] JSON block with structured facts
  (totalFailedJobs, failedJobNames, knownIssues, prCorrelation, recommendationHint)
- Removed 47-line if/elseif recommendation chain producing canned prose
- Added 'Generating Recommendations' section to SKILL.md with decision table
- Updated 'Presenting Results' to reference JSON summary flow
- Agent now reasons over structured data instead of parroting script output

Tested with Claude Sonnet 4 and GPT-5 against PR dotnet#124232 — both rated
JSON completeness 4/5 and generated better recommendations than the old
heuristic.
lewing added a commit to lewing/runtime that referenced this pull request Feb 10, 2026
… reasoning

Apply the Data vs. Reasoning Boundary pattern:
- Script emits [CI_ANALYSIS_SUMMARY] JSON block with structured facts
  (totalFailedJobs, failedJobNames, knownIssues, prCorrelation, recommendationHint)
- Removed 47-line if/elseif recommendation chain producing canned prose
- Added 'Generating Recommendations' section to SKILL.md with decision table
- Updated 'Presenting Results' to reference JSON summary flow
- Agent now reasons over structured data instead of parroting script output

Tested with Claude Sonnet 4 and GPT-5 against PR dotnet#124232 — both rated
JSON completeness 4/5 and generated better recommendations than the old
heuristic.
lewing added a commit to lewing/runtime that referenced this pull request Feb 10, 2026
… reasoning

Apply the Data vs. Reasoning Boundary pattern:
- Script emits [CI_ANALYSIS_SUMMARY] JSON block with structured facts
  (totalFailedJobs, failedJobNames, knownIssues, prCorrelation, recommendationHint)
- Removed 47-line if/elseif recommendation chain producing canned prose
- Added 'Generating Recommendations' section to SKILL.md with decision table
- Updated 'Presenting Results' to reference JSON summary flow
- Agent now reasons over structured data instead of parroting script output

Tested with Claude Sonnet 4 and GPT-5 against PR dotnet#124232 — both rated
JSON completeness 4/5 and generated better recommendations than the old
heuristic.
On relative base path root
Microsoft.CodeAnalysis,Microsoft.CodeAnalysis.Analyzers,Microsoft.CodeAnalysis.CSharp,Microsoft.Net.Compilers.Toolset From Version 5.5.0-2.26110.101 -> To Version 5.5.0-2.26110.116 (parent: )

Microsoft.CodeAnalysis.NetAnalyzers,Microsoft.DotNet.ApiCompat.Task,Microsoft.NET.Workload.Emscripten.Current.Manifest-11.0.100.Transport From Version 11.0.100-preview.2.26110.101 -> To Version 11.0.100-preview.2.26110.116 (parent: )

Microsoft.DotNet.Arcade.Sdk,Microsoft.DotNet.Build.Tasks.Archives,Microsoft.DotNet.Build.Tasks.Feed,Microsoft.DotNet.Build.Tasks.Installers,Microsoft.DotNet.Build.Tasks.Packaging,Microsoft.DotNet.Build.Tasks.TargetFramework,Microsoft.DotNet.Build.Tasks.Templating,Microsoft.DotNet.Build.Tasks.Workloads,Microsoft.DotNet.CodeAnalysis,Microsoft.DotNet.GenAPI,Microsoft.DotNet.GenFacades,Microsoft.DotNet.Helix.Sdk,Microsoft.DotNet.PackageTesting,Microsoft.DotNet.RemoteExecutor,Microsoft.DotNet.SharedFramework.Sdk,Microsoft.DotNet.XliffTasks,Microsoft.DotNet.XUnitExtensions From Version 11.0.0-beta.26110.101 -> To Version 11.0.0-beta.26110.116 (parent: )

Microsoft.DotNet.Cecil From Version 0.11.5-preview.26110.101 -> To Version 0.11.5-preview.26110.116 (parent: )

Microsoft.DotNet.XUnitAssert,Microsoft.DotNet.XUnitConsoleRunner From Version 2.9.3-beta.26110.101 -> To Version 2.9.3-beta.26110.116 (parent: )

Microsoft.NET.Sdk.IL,Microsoft.NETCore.App.Ref,Microsoft.NETCore.ILAsm,runtime.native.System.IO.Ports,System.Reflection.Metadata,System.Reflection.MetadataLoadContext,System.Text.Json From Version 11.0.0-preview.2.26110.101 -> To Version 11.0.0-preview.2.26110.116 (parent: )

NuGet.Frameworks,NuGet.Packaging,NuGet.ProjectModel,NuGet.Versioning From Version 7.5.0-rc.11101 -> To Version 7.5.0-rc.11116 (parent: )

System.CommandLine From Version 3.0.0-preview.2.26110.101 -> To Version 3.0.0-preview.2.26110.116 (parent: )

runtime.linux-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.win-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.win-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.osx-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.osx-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Libclang,runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools From Version 19.1.0-alpha.1.26076.1 -> To Version 19.1.0-alpha.1.26104.1 (parent: )

runtime.linux-arm64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.linux-x64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.osx-arm64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.osx-x64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.win-arm64.Microsoft.NETCore.Runtime.Wasm.Node.Transport,runtime.win-x64.Microsoft.NETCore.Runtime.Wasm.Node.Transport From Version 11.0.0-alpha.1.26076.4 -> To Version 11.0.0-alpha.1.26104.1 (parent: )

[[ commit created by automation ]]
@premun
Copy link
Member

premun commented Feb 11, 2026

cc @dkurepa @adamzip

## Problem

After UseMonoRuntime was removed from in-tree wasm props (PR #121789 by
@maraf), browser-wasm test restores fail with NU1102 (package not
found).

The `RestorePackage` target in `build.proj` runs `dotnet restore` for
test dependency projects. These projects use `Microsoft.NET.Sdk` (not
the WebAssembly SDK), so `UseMonoRuntime` is not set. Without it, the
newer SDK tries to download `Microsoft.NETCore.App.Runtime.browser-wasm`
(CoreCLR pattern) or `Microsoft.NETCore.App.Runtime.Mono.browser-wasm`
from NuGet — packages that don't exist for .NET 11.

The test restore doesn't need runtime or targeting packs from NuGet —
those come from the local build and are wired up during the test build
step. However, `EnableRuntimePackDownload=false` and
`EnableTargetingPackDownload=false` were only passed conditionally (when
`UseLocalAppHostPack=true`), and browser-wasm sets
`UseLocalAppHostPack=false`.

## Fix

Unconditionally pass `-p:EnableRuntimePackDownload=false
-p:EnableTargetingPackDownload=false` to the test dependency restore
command. This fixes both Mono and CoreCLR browser-wasm configurations
since neither needs pack downloads during restore.

## Context

- Root cause PR: #121789 (Remove duplicated UseMonoRuntime=true from
SDK)
- Follow-up pattern: #123181 (Added RuntimeFlavor=Mono to perf pipeline)
- Affected codeflow PR: #124232

cc @maraf @akoeplinger
@lewing
Copy link
Member

lewing commented Feb 11, 2026

@maraf @akoeplinger I merged the test version of the wasm fix #124288 to get CI running on it, feel free to change the actual content

@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 f7901f87-9f24-40d6-9bc1-564863937237
    
  • 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 f7901f87-9f24-40d6-9bc1-564863937237 --force
    

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

lewing added a commit that referenced this pull request Feb 12, 2026
…on guides (#124240)

## ci-analysis: structured output, MCP integration, and deep
investigation guides

### Changes to `Get-CIStatus.ps1` (+216/-132)
- **Add `[CI_ANALYSIS_SUMMARY]` JSON block** — structured summary
emitted at end of script with all key facts (builds, failed jobs, known
issues, PR correlation, recommendation hint)
- **Replace 47-line if/elseif recommendation chain** with a single
`recommendationHint` field in JSON (one of: `BUILD_SUCCESSFUL`,
`KNOWN_ISSUES_DETECTED`, `LIKELY_PR_RELATED`, `POSSIBLY_TRANSIENT`,
`REVIEW_REQUIRED`, `MERGE_CONFLICTS`, `NO_BUILDS`)
- **Add `failedJobDetails` to JSON** — per-job `errorCategory`
(test-failure, build-error, test-timeout, crash,
tests-passed-reporter-failed, unclassified), `errorSnippet`, and
`helixWorkItems`
- **Add `failedJobDetailsTruncated`** — boolean flag indicating when
`-MaxJobs` cap means `failedJobDetails` is incomplete vs
`failedJobNames`
- **Add top-level `knownIssues`** from Build Analysis (not per-job —
Build Analysis reports at the PR level, not per-job)
- **Add timeout pattern** to `Format-TestFailure` — catches `Timed Out
(timeout` that was previously invisible
- **Show log tail in PR mode** when no failure pattern matches (Helix
Job mode already did this)
- **Add accumulation variables** for cross-build aggregation
(`totalFailedJobs`, `totalLocalFailures`, `lastBuildJobSummary`)
- **Fix early-continue scoping bug** — job summary computation was at
end of build loop, after 3 `continue` paths that skipped it
- **Fix empty array falsy check** — `if ($listFiles)` → proper count
check
- **Fix `mergeable_state` trimming** — `gh api --jq` output trimmed to
prevent whitespace comparison failures
- **Remove interpretive prose** — "These failures are likely PR-related"
moved from script to agent reasoning
- **Fix empty catch** — merge state error now logged via `Write-Verbose`

### Changes to `SKILL.md` (+97/-144, net reduction)
- **Add Step 0: Gather Context** — PR type classification table (code,
flow, backport, merge, dependency update)
- **Add Step 3: Verify before claiming** — systematic checklist
- **Add build progression analysis** (Step 2, item 4) — comparing
pass/fail across PR builds to narrow down which commit introduced a
failure
- **Add prior-build mismatch detection** (Step 2, item 6) — ask user
when they reference jobs not in current results
- **Document `failedJobDetails`** — per-failure error categories in
Interpreting Results
- **Add Build Analysis check status enforcement** — red check means
unaccounted failures exist, never claim "all known" when it's red
- **Add timeout recovery workflow** — explicit guidance for verifying
timed-out builds have passing Helix results via `hlx_status`
- **Add crash/canceled job recovery procedure** — step-by-step using
`hlx_batch_status`, `hlx_files`, `hlx_download_url` to recover results
from crashed Helix work items
- **Fix MCP tool references** — use canonical short-form tool names
consistently
- **Condense anti-patterns** — tighter, more targeted, near relevant
steps
- **Net token reduction** — despite adding new content, SKILL.md shrank
from ~4.6K to ~3.5K tokens

### New reference files
- `references/azure-cli.md` — Azure CLI deep investigation guide
- `references/binlog-comparison.md` — binlog comparison workflow
- `references/delegation-patterns.md` — subagent delegation patterns (5
patterns including parallel artifact extraction and canceled job
recovery)
- `references/build-progression-analysis.md` — commit-to-build
correlation using `triggerInfo.pr.sourceSha`, SQL-based progression
tracking, MCP-first with AzDO MCP tools as primary

### Updated reference files
- `references/manual-investigation.md` — fix nonexistent `msbuild-mcp
analyze` tool refs, use real `mcp-binlog-tool-*` tools

### Design principles
- **Data/reasoning boundary**: Script emits structured JSON facts →
agent synthesizes recommendations. No more canned prose from the script.
- **MCP-first**: AzDO MCP tools (`get_builds`, `get_build_log_by_id`)
and Helix MCP tools (`hlx_status`, `hlx_logs`) positioned as primary,
CLI/script as fallback.
- **Token budget**: Orchestrating SKILL.md kept within 2K-4K token
budget by extracting depth to `references/`.
- **SQL for structured investigations**: Build progression tracking uses
SQL tables to persist SHAs across context, enabling queries for
pass→fail transitions and target branch movement.

### Testing
- Multi-model subagent testing (Sonnet 4 + GPT-5 + Opus 4.5) — two
review rounds with findings addressed
- Live MCP integration test confirmed `hlx_status`, `hlx_logs`,
`get_builds`, `get_build_log_by_id` all work
- Real-world validation against PRs #123245, #123883, #124125, #124232
@dkurepa
Copy link
Member

dkurepa commented Feb 12, 2026

@akoeplinger to get back to you on this, it appears that the original problem was this forward flow that didn't make the correct change: dotnet/dotnet#4680
After investigating I saw that it's another instance of the reverts problem, but this time in the opposite direction code path, where we didn't think these could happen, but basically it's a similar thing with the merge bases we we're hitting until recently.
We'll do our best to fix it as soon as possible

The previous fix (PR #124288) made EnableTargetingPackDownload=false and
EnableRuntimePackDownload=false unconditional for all platforms. This broke
coreclr/NativeAOT/Libraries test restores that need those packs from NuGet.

Fix: Add 'or TargetOS==browser' to the existing UseLocalAppHostPack condition
instead of making the flags unconditional. This fixes browser-wasm NU1102
while preserving original behavior for all other platforms.
@lewing
Copy link
Member

lewing commented Feb 12, 2026

@maraf @akoeplinger I pushed a fix (1de8519) to address the regression introduced by my earlier NU1102 fix (PR #124288).

Build progression analysis

Build Commit Failures Delta
1 (1287945) 85d231eb akoeplinger "Revert wasm files" 15 baseline
2 (1288824) 2a951e44 "Update deps" 11 +5 browser-wasm (NU1102), -9 other
3 (1290207) 25d8826e lewing "Fix NU1102" (#124288) 30 ✅ Fixed all browser-wasm, ❌ +27 coreclr/NativeAOT/Libraries

Root cause

PR #124288 moved EnableTargetingPackDownload=false and EnableRuntimePackDownload=false from conditional (only when UseLocalAppHostPack=true) to unconditional on the DotnetRestoreCommand in src/tests/build.proj. This meant all platforms — coreclr, NativeAOT, Mono on linux/windows/osx — were told to skip runtime and targeting pack downloads during test restore, even ones that actually need those packs from NuGet.

Fix (commit 1de8519)

Instead of making the flags unconditional, I added or '$(TargetOS)' == 'browser' to the existing UseLocalAppHostPack condition:

<!-- Before (broken): unconditional on DotnetRestoreCommand -->
-p:EnableTargetingPackDownload=false -p:EnableRuntimePackDownload=false

<!-- After (fixed): conditional, same as original + browser-wasm -->
<_ConfigurationProperties Condition="'$(UseLocalAppHostPack)' == 'true' or '$(TargetOS)' == 'browser'">
  $(_ConfigurationProperties) -p:EnableAppHostPackDownload=false -p:EnableTargetingPackDownload=false -p:EnableRuntimePackDownload=false
</_ConfigurationProperties>

This preserves the original behavior for all other platforms while fixing the browser-wasm NU1102 issue.

Suggestion

We should review whether this is the right long-term approach. The underlying issue is that after UseMonoRuntime was removed from in-tree wasm props (#121789), browser-wasm test restores try to download runtime packs that don't exist on NuGet. The TargetOS==browser condition works for now, but there may be a more principled way to handle this — perhaps the wasm SDK targets should set UseLocalAppHostPack or the equivalent pack download properties directly, rather than relying on build.proj to special-case it.

@agocke
Copy link
Member

agocke commented Feb 12, 2026

Something here broke bootstrapping for the community-supported platforms, but I'm not sure what.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-codeflow for labeling automated codeflow

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants