Skip to content

Update WinAppSDK to 1.8.260508005#35678

Merged
kubaflo merged 6 commits into
inflight/currentfrom
update-winappsdk-1.8.260508005
May 31, 2026
Merged

Update WinAppSDK to 1.8.260508005#35678
kubaflo merged 6 commits into
inflight/currentfrom
update-winappsdk-1.8.260508005

Conversation

@kubaflo
Copy link
Copy Markdown
Contributor

@kubaflo kubaflo commented May 31, 2026

Note

Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!

Updates the Windows App SDK (WinAppSDK) package version from 1.8.251106002 to 1.8.260508005.

This replaces #33850 with the latest listed stable 1.8 servicing build available on NuGet.

Changes Made

  • Updated MicrosoftWindowsAppSDKPackageVersion in eng/Versions.props.

PureWeen and others added 6 commits May 21, 2026 16:04
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## What
Restrict the agentic-labeler to apply **exactly one `area-*` label** per
item, while still allowing multiple `platform/*` labels.

## Why
Backfilling the 26 items affected by the `max:1` bug (fixed in #35540)
revealed that the labeler occasionally applies multiple `area-*` labels
for ambiguous cases:

- **#35501** got both `area-layout` and `area-safearea`
- **#35490** got both `area-navigation` and `area-controls-tabbedpage`

The intended behavior is exactly one best-fit `area-*` per item (a
label-quota distinction not expressible via
`safe-outputs.add-labels.max:` — that field counts total labels, not
labels per prefix). The fix has to live in the agent's instructions.

## Changes

### `.github/skills/agentic-labeler/SKILL.md`
- Scope section: "Exactly one `area-*`" / "One or more `platform/*`".
- Area rules section: renamed heading, changed "pick one or more" →
"apply exactly one".
- New **tie-breaking heuristics** for the area-* selection:
- Specific control beats generic area (`area-controls-tabbedpage` over
`area-navigation`)
  - Sub-area beats parent area (`area-safearea` over `area-layout`)
  - Subject-matter focus beats incidental touch
  - When genuinely tied, prefer the user-visible feature
- Mixed-PR rule clarified: infra-primary PRs get only
`area-infrastructure` (no second product area).

### `.github/workflows/agentic-labeler.md`
- Added explicit reinforcement in the workflow prompt: "Apply exactly
one `area-*` label … and one or more `platform/*` labels".
- Fixed two stale `max: 1` comments left over from #35540 (the cap is
now `max: 10`).

### `.github/workflows/agentic-labeler.lock.yml`
- Regenerated via `gh aw compile`. Diff is frontmatter-hash + heredoc
rotations only — no semantic change to the compiled config.

## Validation
- Reviewed all 21 existing eval scenarios in `tests/eval.yaml` — none
assert multiple `area-*` labels, so no test updates needed.
- The `max: 10` cap in `safe-outputs` is preserved as a blast-radius
safeguard (one area + several platforms still fit comfortably).

## Follow-ups (not in this PR)
If accuracy of the "one area" rule drops below ~95% in eval runs,
consider adding a deterministic post-step that strips extra `area-*`
labels per a known precedence list (Option B from the design
discussion).

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

Extends the `maui-copilot` DevDiv pipeline (pipeline 27723) with a
3-stage architecture that runs real UI tests on platform-pool agents and
reports results directly in the AI summary PR comment.

### Pipeline Workflow

```
┌─────────────────────────────────────────────────────────┐
│  Stage 1: ReviewPR                                      │
│                                                         │
│  STEP 1: Branch Setup (checkout + cherry-pick PR)       │
│  STEP 2: Detect UI Test Categories                      │
│  STEP 3: Run Detected UI Tests (in-process, fast)       │
│  STEP 4: Regression Cross-Reference                     │
│  STEP 5: Gate — verify tests fail/pass before/after fix │
│  STEP 6: Code Review — deep analysis via Copilot agent  │
│                                                         │
│  Outputs → CopilotLogs artifact + detectedCategories    │
└──────────────────────┬──────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────┐
│  Stage 2: RunDeepUITests (platform-pool agent)          │
│                                                         │
│  iOS: AcesShared Tahoe + iOS 26.4                       │
│  Android: ubuntu-22.04 + KVM + AVD                      │
│                                                         │
│  Runs BuildAndRunHostApp.ps1 per detected category      │
│  Outputs → drop-deep-uitests artifact (TRX + diffs)     │
└──────────────────────┬──────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────┐
│  Stage 3: PostResults                                   │
│                                                         │
│  1. Download CopilotLogs (review content files)         │
│  2. Download drop-deep-uitests (TRX results)            │
│  3. Merge deep results into uitests/content.md          │
│  4. Post full AI Summary comment on PR                  │
│  5. Apply labels (s/agent-reviewed, etc.)               │
│                                                         │
│  One comment with everything — no patching needed       │
└─────────────────────────────────────────────────────────┘
```

### What's New

**Deep UI Test Execution (Stage 2)**
- Runs detected UI test categories on proper platform-pool agents (not
in-process on Linux)
- **iOS**: AcesShared Tahoe agents with iOS 26.4 simulator, iPhone 11
Pro (matching `ios-26` baselines from PR #35061)
- **Android**: ubuntu-22.04 with KVM, AVD boot with `-partition-size
2048`, `ignoreHiddenApiPolicyError` capability
- TRX results + snapshot-diff PNGs published as `drop-deep-uitests`
artifact

**Unified Comment Posting (Stage 3)**
- Comment posting and label application deferred to Stage 3 (after deep
tests complete)
- Single AI summary comment includes ALL results: code review + deep
test results
- Nested collapsible `<details>` for failed tests with full error +
stack trace
- Dynamic section title: `🧪 UI Tests — CollectionView, TabbedPage`
- Artifact download link for snapshot-diff PNGs

**Android Emulator Improvements**
- AVD boot step with proper partition size, ADB key pre-authorization,
boot wait
- `DEVICE_UDID` pass-through prevents double emulator boot
- Disk cleanup on hosted ubuntu agents (frees ~22GB)
- KVM enablement + `appium:ignoreHiddenApiPolicyError` for API 30

**iOS Simulator Improvements**
- Tahoe pool demand ensures macOS 26.x agents
- Explicit iOS 26.4 download via latest Xcode
- Auto-creates iPhone 11 Pro for baseline resolution match

### Validation

Tested across 30+ pipeline iterations on 6 PRs:

| PR | iOS | Android |
|---|---|---|
| 35358 (ViewBaseTests) | **112/112 ALL PASS** ✅ | **118/119 PASS** ✅ |
| 35359 (TabbedPage) | 44/50 (1 real failure) | 74/75 (1 real failure) |
| 35356 (CollectionView) | **415/417 PASS** ✅ | 593/619 (26 real
failures) |

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

Backport of #35460 to `main`.

/cc @PureWeen

Co-authored-by: HarishKumarSF4517 <harish.kumar@syncfusion.com>
### Description of Change


https://github.com/GitOps-microsoft/GitOps.PullRequestIssueManagement/pull/262
(internal Microsoft link) changed the `${issueAuthor}` placeholder to
include the `@` character.

Remove the one we added so we don't duplicate it.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 35678

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 35678"

@kubaflo
Copy link
Copy Markdown
Contributor Author

kubaflo commented May 31, 2026

/review -b feature/enhanced-reviewer

@github-actions github-actions Bot added the area-infrastructure CI, Maestro / Coherency, upstream dependencies/versions label May 31, 2026
@kubaflo
Copy link
Copy Markdown
Contributor Author

kubaflo commented May 31, 2026

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 3 pipeline(s).

@MauiBot MauiBot added s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels May 31, 2026
Copy link
Copy Markdown
Collaborator

@MauiBot MauiBot left a comment

Choose a reason for hiding this comment

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

AI Review Summary

@kubaflo — new AI review results are available based on this last commit: 939653b.
Update WinAppSDK to 1.8.260508005

Gate Skipped Code Review In Review Confidence Medium Platform Windows

Review Sessions — click to expand
Gate — Test Before & After Fix

Gate Result: ⚠️ SKIPPED

No tests were detected in this PR.

Recommendation: Add tests to verify the fix using the write-tests-agent.


Pre-Flight — Context & Validation

Issue: N/A - No linked issue
PR: #35678 - Update WinAppSDK to 1.8.260508005
Platforms Affected: Windows (dependency update); requested test platform: android
Files Changed: 1 implementation, 0 test

Key Findings

  • PR updates MicrosoftWindowsAppSDKPackageVersion in eng/Versions.props from 1.8.251106002 to 1.8.260508005.
  • No tests were detected by the prior gate step; the gate result was skipped and was not re-run.
  • The change has no direct Android code path impact; Android testing can only validate that cross-platform restore/build inputs are not regressed.

Code Review Summary

Verdict: LGTM
Confidence: medium
Errors: 0 | Warnings: 0 | Suggestions: 0

Key code review findings:

  • No correctness findings from the dependency-version diff.

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #35678 Update MicrosoftWindowsAppSDKPackageVersion to 1.8.260508005 ⚠️ SKIPPED (Gate: no tests detected) eng/Versions.props Original PR

Code Review — Deep Analysis

Code Review — PR #35678

Independent Assessment

What this changes: Updates the Windows App SDK package version in eng/Versions.props from 1.8.251106002 to 1.8.260508005.
Inferred motivation: Consume the latest Windows App SDK 1.8 servicing build used by MAUI Windows packaging/builds.

Reconciliation with PR Narrative

Author claims: The PR updates WinAppSDK to 1.8.260508005 and replaces an earlier servicing update PR.
Agreement/disagreement: The diff matches the stated dependency update exactly.

Findings

No correctness findings.

Devil's Advocate

The change is Windows-only dependency flow, so Android-specific testing is not relevant. The main risk is dependency availability/restore compatibility, which requires package restore/build validation rather than source-level code changes.

Verdict: LGTM

Confidence: medium
Summary: The source change is a single version bump and is consistent with the PR narrative. No MAUI handler/platform code paths are modified.


Fix — Analysis & Comparison

Fix Candidates

# Source Approach Test Result Files Changed Notes
1 try-fix-1 Update eng/Version.Details.xml dependency metadata only ❌ FAIL 1 file MSBuild property stayed at baseline 1.8.251106002; metadata does not drive package version replacement.
2 try-fix-2 Hard-code Microsoft.WindowsAppSDK PackageVersion item in eng/NuGetVersions.targets ❌ FAIL 1 file Bypasses one package consumer but leaves central property/workload replacements stale.
3 try-fix-3 Update central property and also align eng/Version.Details.xml metadata ✅ TARGETED VALIDATION PASSED 2 files Mechanically works, but not demonstrably better; Version.Details.xml placeholder may be intentional dependency-flow behavior.
PR PR #35678 Update MicrosoftWindowsAppSDKPackageVersion in eng/Versions.props ⚠️ SKIPPED (Gate: no tests detected) 1 file Original PR; simplest source-of-truth update.

Iterative Learnings

Candidate Lesson fed into next attempt
1 Version.Details.xml does not define MicrosoftWindowsAppSDKPackageVersion; a viable fix must touch the MSBuild property or every consumer.
2 Consumer-level overrides split the version source of truth and miss workload metadata replacement; keep eng/Versions.props authoritative.
3 Adding metadata alignment is mechanically valid but introduces dependency-flow uncertainty, so it is not clearly superior to the PR's direct property bump.

Cross-Pollination

Model/Reviewer Loop Round New Ideas? Details
Expert review loop 1 Yes Try dependency-flow metadata only to avoid touching package property.
Expert review loop 2 Yes Try consumer-level package override after metadata-only failed.
Expert review loop 3 Yes Try central property plus metadata alignment after source-of-truth split failed.
Expert review loop 4 No Remaining variants are trivial variations of the same central property update or riskier dependency-flow changes.

Exhausted: Yes
Selected Fix: PR's fix — it is the simplest and safest source-of-truth update. Candidate #3 passed targeted validation but is not demonstrably better because changing the Version.Details.xml placeholder could alter dependency-flow semantics.

Candidate Details


Try-Fix Candidate 1: Dependency-flow metadata only

Approach Description

Update eng/Version.Details.xml from placeholder 0.0.1 to 1.8.260508005, leaving eng/Versions.props at the broken baseline value.

Diff

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index acff08c44c..31736d7d74 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -51,7 +51,7 @@
       <Uri>https://github.com/dotnet/macios</Uri>
       <Sha>e5afbf5332820488c4a2d26dad02df88c0110136</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.WindowsAppSDK" Version="0.0.1">
+    <Dependency Name="Microsoft.WindowsAppSDK" Version="1.8.260508005">
       <Uri>https://dev.azure.com/microsoft/ProjectReunion/_git/ProjectReunionInternal</Uri>
     </Dependency>
     <Dependency Name="Microsoft.AspNetCore.Authorization" Version="10.0.0">

Test Results

Test command: dotnet msbuild src/Core/src/Core.csproj -getProperty:MicrosoftWindowsAppSDKPackageVersion -p:TargetFramework=net10.0-android -v:quiet
1.8.251106002
Expected: 1.8.260508005
FAIL: property did not resolve to 1.8.260508005

Failure Analysis

Failed. Version.Details.xml is not the source of the MicrosoftWindowsAppSDKPackageVersion MSBuild property, so Android-targeted MSBuild evaluation still resolved the old baseline version.


Try-Fix Candidate 2: Override package item literal

Approach Description

Change the Microsoft.WindowsAppSDK PackageVersion item in eng/NuGetVersions.targets to the target literal version while leaving eng/Versions.props at the broken baseline value.

Diff

diff --git a/eng/NuGetVersions.targets b/eng/NuGetVersions.targets
index 1c4fd496bc..9f2dddcf7c 100644
--- a/eng/NuGetVersions.targets
+++ b/eng/NuGetVersions.targets
@@ -154,7 +154,7 @@
     />
     <PackageReference
         Update="Microsoft.WindowsAppSDK"
-        Version="$(MicrosoftWindowsAppSDKPackageVersion)"
+        Version="1.8.260508005"
         NoWarn="NU1605"
     />
     <PackageReference

Test Results

Test command 1: dotnet msbuild src/Core/src/Core.csproj -getProperty:MicrosoftWindowsAppSDKPackageVersion -p:TargetFramework=net10.0-android -v:quiet
1.8.251106002
Test command 2: grep WorkloadDependencies.in.json template still uses @MicrosoftWindowsAppSDKPackageVersion@ resolved from property
Expected property/template source: 1.8.260508005
FAIL: central property remains at baseline, so workload dependency replacement would still use old version.

Failure Analysis

Failed. This bypasses one consumer but leaves the central property stale, so workload metadata and any property replacement still produce the old version.


Try-Fix Candidate 3: Central property plus dependency metadata

Approach Description

Update the central MSBuild property in eng/Versions.props and also align eng/Version.Details.xml for Microsoft.WindowsAppSDK to 1.8.260508005.

Diff

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index acff08c44c..31736d7d74 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -51,7 +51,7 @@
       <Uri>https://github.com/dotnet/macios</Uri>
       <Sha>e5afbf5332820488c4a2d26dad02df88c0110136</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.WindowsAppSDK" Version="0.0.1">
+    <Dependency Name="Microsoft.WindowsAppSDK" Version="1.8.260508005">
       <Uri>https://dev.azure.com/microsoft/ProjectReunion/_git/ProjectReunionInternal</Uri>
     </Dependency>
     <Dependency Name="Microsoft.AspNetCore.Authorization" Version="10.0.0">
diff --git a/eng/Versions.props b/eng/Versions.props
index e127635424..8948c7423b 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -79,7 +79,7 @@
     <!-- Samsung/Tizen.NET -->
     <SamsungTizenSdkPackageVersion>8.0.148</SamsungTizenSdkPackageVersion>
     <!-- wasdk -->
-    <MicrosoftWindowsAppSDKPackageVersion>1.8.251106002</MicrosoftWindowsAppSDKPackageVersion>
+    <MicrosoftWindowsAppSDKPackageVersion>1.8.260508005</MicrosoftWindowsAppSDKPackageVersion>
     <MicrosoftWindowsSDKBuildToolsPackageVersion>10.0.26100.4654</MicrosoftWindowsSDKBuildToolsPackageVersion>
     <MicrosoftGraphicsWin2DPackageVersion>1.3.2</MicrosoftGraphicsWin2DPackageVersion>
     <MicrosoftWindowsWebView2PackageVersion>1.0.3179.45</MicrosoftWindowsWebView2PackageVersion>

Test Results

Test command 1: dotnet msbuild src/Core/src/Core.csproj -getProperty:MicrosoftWindowsAppSDKPackageVersion -p:TargetFramework=net10.0-android -v:quiet
1.8.260508005
Expected: 1.8.260508005
Test command 2: check Version.Details.xml metadata matches target version
54:    <Dependency Name="Microsoft.WindowsAppSDK" Version="1.8.260508005">

Failure Analysis

No targeted-validation failure. However, this candidate is not demonstrably better than the PR because Version.Details.xml currently pins Microsoft.WindowsAppSDK to placeholder 0.0.1; changing it may unintentionally alter dependency-flow behavior for an external dependency.


Report — Final Recommendation

Comparative Report — PR #35678

Candidates compared

Rank Candidate Result Assessment
1 pr ⚠️ Gate skipped; expert review LGTM Best candidate. It updates the authoritative MicrosoftWindowsAppSDKPackageVersion property in eng/Versions.props, which is the source used by package references and workload replacement paths.
1 pr-plus-reviewer ⚠️ Gate skipped; no reviewer changes Equivalent to pr because the expert reviewer found no actionable issues and produced no patch.
3 try-fix-3 ✅ Targeted validation passed Also works mechanically by updating the central property, but adds a Version.Details.xml change from the existing 0.0.1 placeholder to the real Windows App SDK version. That extra dependency-flow metadata change is not shown to be necessary and may alter intentional dependency-flow behavior.
4 try-fix-1 ❌ Failed regression validation Updates only eng/Version.Details.xml; targeted MSBuild evaluation still resolved MicrosoftWindowsAppSDKPackageVersion to the old baseline 1.8.251106002.
5 try-fix-2 ❌ Failed regression validation Hard-codes the package reference item but leaves the central property stale, so workload/template replacements and any property consumers continue to use the old version.

Analysis

try-fix-1 and try-fix-2 must rank below the passing candidates because both failed targeted regression checks. try-fix-3 passed targeted validation, but its additional Version.Details.xml update is not required for the observed fix and changes a placeholder that may intentionally avoid normal Maestro dependency-flow semantics for this external dependency.

The expert reviewer found the raw PR fix consistent with MAUI dependency-version conventions and produced no inline findings. Because pr-plus-reviewer has no actual delta from pr, the simplest winning candidate is the raw PR fix.

Winner

Winner: pr

The PR fix is the narrowest correct source-of-truth update. It avoids the failed approaches that leave the central property stale and avoids the unnecessary dependency-flow metadata change from try-fix-3.


Future Action — review latest findings

No alternative fix was selected for this run. Review the session findings and CI results before merging.

@kubaflo kubaflo changed the base branch from main to inflight/current May 31, 2026 18:39
@kubaflo kubaflo merged commit 16eafcf into inflight/current May 31, 2026
164 of 167 checks passed
@kubaflo kubaflo deleted the update-winappsdk-1.8.260508005 branch May 31, 2026 18:39
@github-actions github-actions Bot added this to the .NET 10.0 SR8 milestone May 31, 2026
PureWeen pushed a commit that referenced this pull request Jun 2, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

Updates the Windows App SDK (WinAppSDK) package version from
`1.8.251106002` to `1.8.260508005`.

This replaces #33850 with the latest listed stable 1.8 servicing build
available on NuGet.

## Changes Made

- Updated `MicrosoftWindowsAppSDKPackageVersion` in
`eng/Versions.props`.

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

Labels

area-infrastructure CI, Maestro / Coherency, upstream dependencies/versions s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants