Skip to content

[automated] Merge branch 'main' => 'release/dnup'#55328

Merged
nagilson merged 155 commits into
release/dnupfrom
merge/main-to-release/dnup
Jul 20, 2026
Merged

[automated] Merge branch 'main' => 'release/dnup'#55328
nagilson merged 155 commits into
release/dnupfrom
merge/main-to-release/dnup

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

I detected changes in the main branch which have not been merged yet to release/dnup. I'm a robot and am configured to help you automatically keep release/dnup up to date, so I've opened this PR.

This PR merges commits made on main by the following committers:

  • baronfel
  • mthalman
  • Evangelink
  • Copilot
  • jonathanpeppers

Instructions for merging from UI

This PR will not be auto-merged. When pull request checks pass, complete this PR by creating a merge commit, not a squash or rebase commit.

merge button instructions

If this repo does not allow creating merge commits from the GitHub UI, use command line instructions.

Instructions for merging via command line

Run these commands to merge this pull request from the command line.

git fetch
git checkout main
git pull --ff-only
git checkout release/dnup
git pull --ff-only
git merge --no-ff main

# If there are merge conflicts, resolve them and then run git merge --continue to complete the merge
# Pushing the changes to the PR branch will re-trigger PR validation.
git push https://github.com/dotnet/sdk HEAD:merge/main-to-release/dnup
or if you are using SSH
git push git@github.com:dotnet/sdk HEAD:merge/main-to-release/dnup

After PR checks are complete push the branch

git push

Instructions for resolving conflicts

⚠️ If there are merge conflicts, you will need to resolve them manually before merging. You can do this using GitHub or using the command line.

Instructions for updating this pull request

Contributors to this repo have permission update this pull request by pushing to the branch 'merge/main-to-release/dnup'. This can be done to resolve conflicts or make other changes to this pull request before it is merged.
The provided examples assume that the remote is named 'origin'. If you have a different remote name, please replace 'origin' with the name of your remote.

git fetch
git checkout -b merge/main-to-release/dnup origin/release/dnup
git pull https://github.com/dotnet/sdk merge/main-to-release/dnup
(make changes)
git commit -m "Updated PR with my changes"
git push https://github.com/dotnet/sdk HEAD:merge/main-to-release/dnup
or if you are using SSH
git fetch
git checkout -b merge/main-to-release/dnup origin/release/dnup
git pull git@github.com:dotnet/sdk merge/main-to-release/dnup
(make changes)
git commit -m "Updated PR with my changes"
git push git@github.com:dotnet/sdk HEAD:merge/main-to-release/dnup

Contact .NET Core Engineering (dotnet/dnceng) if you have questions or issues.
Also, if this PR was generated incorrectly, help us fix it. See https://github.com/dotnet/arcade/blob/main/.github/workflows/scripts/inter-branch-merge.ps1.

nagilson and others added 30 commits July 10, 2026 14:30
Verbatim copy of microsoft/mxc .github/workflows/issue-triage.md as the starting point for a .NET SDK agentic triage workflow. No modifications yet.
Strip the mxc container/executor label allowlist, the mxc owner logins and area->owner map, and the mxc macOS-backend synonym example. Leave placeholders for the dotnet/sdk labels (commit 2.5) and CODEOWNERS + round-robin owner routing (commits 3-6).
Populate add-labels.allowed with the real dotnet/sdk Area-* component labels and core type labels (Bug/enhancement/Feature Request/question/documentation/Task). Switch the removed lifecycle label from mxc's 'Needs-Triage' to dotnet/sdk's 'untriaged' (the label the policy service auto-adds). Update body guidance to reference Area-* + type labels.
Replace the owner-assignment placeholder with Azure/azure-sdk-for-net's CODEOWNERS owner-lookup and routing sections (their Step 5 + Step 6), copied verbatim with headings demoted to nest under ## Task. Still Azure-specific (ServiceLabel/AzureSdkOwners/ServiceOwners/Service Attention/mention_owners); commit 4 adapts it to how dotnet/sdk CODEOWNERS actually works.
Rewrite the Azure owner-lookup section to match how dotnet/sdk CODEOWNERS works: root-level CODEOWNERS organized into '# Area-<Name>' sections that map directly to Area-* labels, with individual (@login) vs team (@dotnet/team) owners. Assign individuals; route team-only areas via the 'needs team triage' label. Remove all Azure-isms (ServiceLabel/%/AzureSdkOwners/ServiceOwners/Service Attention/needs-team-attention/customer-reported/mention_owners and the Event Hubs/ARM/Mgmt examples).
Insert microsoft/pylance-release's round-robin rotation body verbatim (rotation order, stateful #4462 pointer, skip-reassign, steps 1-6). Headings demoted to nest under ## Task. Commit 6 makes it stateless and merges it with expertise-based owner routing.
Replace pylance's stateful rotation with a stateless, expertise-first, load-balanced selection: prefer the area's CODEOWNERS individual owner(s), measure each candidate's current open-assigned load via 'repo:... is:open assignee:<login>', and assign the least-loaded; when the SME is overloaded and an alternate owner exists, assign the lighter teammate and name the SME. is:open avoids penalizing tenured members and avoids flooding newer ones. Populate assign-to-user.allowed with the 12 CODEOWNERS individuals and add the 'needs team triage' routing label. No persisted rotation state, no #4462 pointer, no unassign-from-user.
Teach the triager .NET SDK phrasing -> Area-* mapping (build/restore/publish/pack/test/run/watch/format, MSBuild, NuGet, workloads, templates, trimming/AOT/single-file/R2R, source-build/VMR, SWA/Blazor/Razor). Add special-purpose labels to the allowlist and body guidance: cookie (Copilot-suitable easy issues: small fixes, doc changes, backports, simple tests), Test Debt, performance, dotnetup, breaking-change, good first issue, help wanted, backport. Add a needs-info (needs-more-info) behavior: detect incomplete bug reports, apply needs-info, ask for the specific missing details, and hold owner routing.
Make the description dotnet/sdk-specific; add 'roles: all' so external-contributor issues are processed; switch to 'min-integrity: none' with a justification so external issue content is read (not filtered) while still treated as untrusted data; add github toolsets [issues, labels] and a 'noop' safe output; add a 'Before you start' anti-noise guard (skip already-triaged issues, re-triage after needs-info is answered) and a prompt-injection security note; drop the stale internal commit reference in the label comment.
Add a workflow_dispatch trigger with an issue_number input so the workflow can be run manually against a specific existing issue for testing (in addition to issues opened/edited). Resolve the target issue as github.event.issue.number || github.event.inputs.issue_number, and set target: '*' on the write safe-outputs so a dispatched run acts on the specified issue. Fix compile errors: nest 'roles: all' under 'on:', and drop the fixed add-labels allowlist (dotnet/sdk exceeds the 50-item cap) in favor of an instruction to apply only existing repo labels. Generate issue-triage.lock.yml via 'gh aw compile' and update the pinned actions-lock.json.
The gateway rejected the guard policy with "allow-only.repos string must be all or public" because allowed-repos was a scalar repo string. A specific repo must be a list, so repos compiles to an array the gateway accepts. This is why the agent step failed with nothing listening on 8080 -- the gateway never started.
Implement device-aware deployment and shared binlogging for Microsoft.Testing.Platform test runs, with solution, multi-targeting, no-build, and failure coverage.

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

Copilot-Session: b632d2a6-9948-490a-bb12-d6a52041773f
Attach the command-owned facade logger when device selection creates its own project collection.

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

Copilot-Session: b632d2a6-9948-490a-bb12-d6a52041773f
Read the shared binlog and assert DeployToDevice completes before ComputeRunArguments begins.

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

Copilot-Session: b632d2a6-9948-490a-bb12-d6a52041773f
Give the user an opportunity (2 minute window) to edit the issue content before we pull it. This will save on resources as many edits are minor and should not cause a new triage workflow to occur, as this would not be useful.
Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>
CODEOWNERS_PAT_0 through _2  would need to exist as secrets containing a token with exclusively organization Members: read and repository Issues: read for this to function.

This is scope creep so I will be likely removing this and deferring it to another PR but including here so we have it for future reference to build on top of.
nagilson and others added 24 commits July 17, 2026 13:50
…ound

Bump gh-aw to v0.82.9 and recompile issue-triage and add-tactics-template-on-comment. The detection job now gains pat_pool in its needs (github/gh-aw#43917 fix in #44202), so threat detection authenticates with the pooled Copilot PAT instead of resolving to an empty token. Also route GitHub tools and Safe Outputs through the CLI proxy (tools.cli-proxy + github.mode: gh-proxy) to avoid the awmg-mcpg native HTTP MCP firewall denial (github/gh-aw#45915).
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…260717.7

On relative base path root
Microsoft.Testing.Platform From Version 2.4.0-preview.26360.5 -> To Version 2.4.0-preview.26367.7
MSTest , MSTest.Sdk From Version 4.4.0-preview.26360.5 -> To Version 4.4.0-preview.26367.7
The whole-run zero-tests normalization (microsoft/testfx#7457) means an empty
module's exit code 8 (ZeroTests) is normalized to success before aggregation,
so it no longer collides with the failing module's exit code 2 to produce
GenericFailure (1). The run's verdict is now AtLeastOneTestFailed (2). Update
the expectation and rename the test accordingly.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: e0b86e41-a49a-4a68-bea8-3cf5df5694d8
…dule E2E test

- Skip the whole-run zero-tests verdict when invoked in help mode so the help command keeps returning exit code 0 (Success) instead of ZeroTests.

- Add an E2E test (plus MultiTestProjectSolutionWithZeroTestsAndPassingTests asset) covering a run where one module matches no tests (exit code 8) but another passes, asserting the overall exit code is Success.

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

Copilot-Session: 8abef3da-3035-4f48-85ab-485d5f704fc2
Add the new --show-slowest-tests option exposed by the updated Microsoft.Testing.Platform dependency.

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

Copilot-Session: 9ea8d68f-84b3-433b-bc39-87a62a722a8c
Resolve dotnet test conflicts by preserving SDK-side JSON discovery rendering while adopting main's TestModule environment-variable ownership and thread-safe discovery state.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 537abc96-3b4d-450f-883e-643ba843dfd1
The testfx bump adds a --show-slowest-tests Platform Option and the MTP help output no longer ends with a trailing newline. Regenerate the VerifyMTPHelpOutput snapshot to match.

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

Copilot-Session: cbea02c7-5d29-435e-9601-732a3c9c38fd
Treat an empty module as successful when computing the terminal run summary, matching the whole-run exit-code aggregation. Add focused coverage for an empty module alongside a passing module.

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

Copilot-Session: 182327bb-5826-4966-a2cc-1b92338b706f
Use regular team alias (not admin)
Preserve dispose failures after normalizing zero-test module results and retain the per-assembly zero-tests label in terminal output.

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

Copilot-Session: 182327bb-5826-4966-a2cc-1b92338b706f
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 686dec80-f08b-44bf-b541-518a215a1068
Resolve 3 conflicts:

  CODEOWNERS -> kept release/dnup (ours). dnup intentionally keeps a
  minimal CODEOWNERS to avoid review-ping noise on automated merge PRs;
  github-merge-flow.jsonc sets ResetToTargetPaths=CODEOWNERS for the
  main -> release/dnup flow, so ours is correct by design (not a sync gap).

  eng/pipelines/templates/jobs/sdk-build.yml -> semantic merge: kept dnup's
  "Check for built assets" guard (scoped dotnetup builds produce no Shipping
  packages) AND adopted main's improved AoT gate (categoryName == 'AoT'
  instead of runAoTTests, so build-only cross-arch AoT legs are included).

  sdk.slnx -> union: kept both test/dotnetup.Tests (dnup) and
  test/Microsoft.DotNet.Cli.Telemetry.Tests (main).

Also de-duplicated OpenTelemetry in Directory.Packages.props: the auto-merge
kept both main's general-block entry and dnup's dotnetup-telemetry-block entry
(same $(OpenTelemetryDotnetPackageVersion)), producing a duplicate
PackageVersion in a single ItemGroup. Removed the dotnetup-block copy and kept
the unique OpenTelemetry.Exporter.Console.

Dependency/toolset files (global.json, Versions.props, Version.Details.xml)
flow from main as intended — dnup has no darc subscription, so this
auto-merge is its only path to those updates.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 59570d89-a7e3-4993-baa9-3fb1f442a617
@dsplaisted
dsplaisted force-pushed the merge/main-to-release/dnup branch from 58451c5 to 878664a Compare July 20, 2026 13:13
Two compile errors surfaced by pulling the latest main into release/dnup:

1. HostFxrLocator.cs CS0234 (dnup-specific): main added HostFxrLocator.cs to
   Microsoft.DotNet.NativeWrapper, which `using`s Microsoft.DotNet.HostFxr
   (src/Common/HostFxrPathResolver.cs). The dnup-only
   Microsoft.Dotnet.Installation.csproj source-globs all of NativeWrapper but
   didn't compile that Common file (nor reference NuGet.Versioning). Added both,
   mirroring Microsoft.DotNet.NativeWrapper.csproj and dn.csproj.

2. TerminalTestReporterTests.cs CS0104 (temporary workaround for a main
   regression): main's tip is currently red with this same ambiguous `ExitCode`
   reference (Microsoft.DotNet.Cli.Commands.Test.ExitCode vs the globally-used
   Microsoft.NET.TestFramework.ExitCode). Added a using alias to disambiguate so
   this merge can build; expected to be superseded when main fixes it upstream.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 59570d89-a7e3-4993-baa9-3fb1f442a617
@nagilson
nagilson merged commit 0717d7e into release/dnup Jul 20, 2026
36 checks passed
@nagilson
nagilson deleted the merge/main-to-release/dnup branch July 20, 2026 20:48
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.