Repository navigation
Add /review performance GitHub Agentic Workflow for PR benchmarks - #38324
Conversation
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 38324Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 38324" |
|
Azure Pipelines: Successfully started running 1 pipeline(s). There may be pipelines that require an authorized user to comment /azp run to run. |
Skill Validation Results
❌ Skill Validation Results —
|
|
Hey there @@morning4coffe-dev! Thank you so much for your PR! Someone from the team will get assigned to your PR shortly and we'll get it reviewed. |
|
Hey there @morning4coffe-dev! Thank you so much for your PR! Someone from the team will get assigned to your PR shortly and we'll get it reviewed. |
Updated [Microsoft.Maui.Controls](https://github.com/dotnet/maui) from 10.0.110 to 10.0.120. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Maui.Controls's releases](https://github.com/dotnet/maui/releases)._ ## 10.0.120 # .NET MAUI 10.0.120 Release Notes **Release source:** [6aca5366139ed0e1cd05cca3e32b6a887d5a8dd0](dotnet/maui@6aca536) .NET MAUI 10.0.120 introduces significant improvements across all platforms with focus on quality, performance, and developer experience. This release includes 213 commits with various improvements, bug fixes, and enhancements. ## Ai Agents - Remove only legacy /review rerun queue and scanner by @kubaflo in dotnet/maui#39029 - Preserve packed-ref access in isolated Vally workspace by @PureWeen in dotnet/maui#39025 - Add /review performance GitHub Agentic Workflow for PR benchmarks by @morning4coffe-dev in dotnet/maui#38324 - Use GPT-6.1 Sol for gh-aw workflows by @kubaflo in dotnet/maui#39036 - Add maintainer-triggered issue regression tracing by @kubaflo in dotnet/maui#38710 - Issue regression tracing: Bound evidence and preflight version gaps by @kubaflo in dotnet/maui#39121 - Add /issue triage agentic workflow for manual issue labels by @kubaflo in dotnet/maui#39065 - Keep /issue triage reports artifact-only while applying real labels by @kubaflo in dotnet/maui#39201 - Expose citation-safe prose to /issue triage by @kubaflo in dotnet/maui#39276 - Add /review gate without replacing full review by @kubaflo in dotnet/maui#39189 - Fix unattended CI-fixer evidence retrieval by @PureWeen in dotnet/maui#39237 ## Animation - Fix AnimationManager.Dispose — retained ticker keeps disposed manager and callbacks alive by @HarishwaranVijayakumar in dotnet/maui#37639 <details> <summary>🔧 Fixes</summary> - [[leak-scan] AnimationManager.Dispose — retained ticker keeps disposed manager and callbacks alive](dotnet/maui#37228) </details> ## Blazor - Fix BlazorWebView root component subscriptions on disconnect by @sheiksyedm in dotnet/maui#39247 <details> <summary>🔧 Fixes</summary> - [[Android] BlazorWebViewHandler never unsubscribes from RootComponents.CollectionChanged on disconnect, retaining the old MauiContext and finished Activity](dotnet/maui#39227) </details> - [Windows] Enable external file drops in BlazorWebView by @danroth27 in dotnet/maui#37904 <details> <summary>🔧 Fixes</summary> ... (truncated) Commits viewable in [compare view](dotnet/maui@10.0.110...10.0.120). </details> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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!
Description of Change
Adds a maintainer-triggered GitHub Agentic Workflow (gh-aw) for
/review performance. The command runs selected managed benchmarks against pinned merge-base/head revisions, asks GPT to interpret the evidence and coverage gaps, and publishes one independently rendered and validated performance report.It follows the
/review testscommand entrypoint and #38807's separation between untrusted execution and credentialed reporting. The PR is now scoped to this hosted workflow and its required managed benchmarking/reporting dependencies.Hosted-only scope
Reduced from 63 changed files to 24, all under
.github/. There are no remaining changes to framework source, device tests/runners,eng/, ordocs/.Retained: the workflow source/compiled lock, trusted orchestration, managed selector/ABBA runner/comparator, trusted managed benchmark overlays, coverage catalogs, GPT interpretation skill, deterministic decision/renderer/validator, focused managed/report checks, and command documentation/routing.
Removed: native-device infrastructure and drivers, the local
check-pr-performanceskill, native request/evidence ingestion, the history writer, duplicate benchmark sources undersrc/, and their dedicated tests/documentation. This PR no longer depends on #38274. The platform catalog only describes coverage gaps; it does not execute native scenarios or promise an available device driver.Merged
mainwithout rewriting history. Preserved its removal of legacy rerun automation and moved the performance-command exclusion into the new shared recovery helper.New GitHub Agentic Workflow
.github/workflows/copilot-review-performance.md..github/workflows/copilot-review-performance.lock.yml, generated with gh-aw v0.86.2..github/scripts/Review-Performance.ps1(Gather,Measure,Prepare,Render).perf-analysis, usinggpt-5.6-sol.A current write/maintain/admin collaborator requests a review with a newly created comment on an open PR:
Only this exact subcommand activates the performance workflow. Other subcommands, unauthorized comments, issues, closed PRs, and changes without product files do not start measurements. The full
/reviewtrigger and missed-command recovery explicitly exclude/review performance.Production uses the existing
copilot-pat-poolenvironment for GPT credentials and the repository's GitHub Actions token for scoped publication. There is no new Azure pipeline, service connection, device queue, or scheduled recovery.Manual dispatch and retries
After deployment to the default branch:
pr_numbermust identify an open PR. Dry-run mode suppresses publication, not measurements, GPT interpretation, or report validation. Context, structured evidence, reports, and separate SDK-install/build/benchmark diagnostics are retained for seven days. Diagnostic logs are not admitted as measurement evidence.Retry with a fresh dispatch or a new command, not Re-run failed jobs. Repeated attempts can leave same-named gh-aw agent artifacts in one run, allowing a downstream job to select an earlier attempt's empty output. The decision resolver recommends a managed retry only for missing/incomplete execution or benchmark data; repeating completed unchanged filters cannot fill excluded benchmark-input or native coverage gaps.
Evidence policy
The deterministic scripts own verdicts, coverage, and permitted actions. GPT cannot erase a measured regression or clear missing/sampled evidence. Recommendations distinguish measurements, static support, and hypotheses. There is no numeric worth-it score, automatic merge decision, code/label mutation, issue closure, or automatic follow-up.
Successful final fork verification
The fresh final fork canary completed successfully against #32382, using the final production implementation from
867ffde2fe.LinuxUsersisolation withcredentialsSanitized: true.needs_human_discussion; no native measurements or whole-PR clearance were claimed.valid: trueanderrors: [].Canary commit
e2550e87badiffers from production only in the two workflow files: it uses the existing personal Copilot secret, restricts dispatch to the dedicated fork branch, targets the selected upstream PR, and forces staged output. No new upstream report was posted, and no upstream environment protection was changed. Production PAT-pool configuration and normal publication behavior remain intact on the PR branch.The staged run retains a non-fatal gh-aw conclusion annotation about the absent
safe-outputs-itemsartifact. The actual safe-output rendering/validation job and overall run succeeded; this is not a claim that live upstream publication was exercised by the dry run.Additional validation and CI caveats
All five retained managed/decision/report suites passed again on the final revision. The 69 existing command-routing/recovery checks passed. PowerShell/JSON syntax, scoped formatting, whitespace checks, strict gh-aw compilation, and native actionlint checks passed. Existing shared-workflow actionlint diagnostics were verified against
mainand left unchanged.Normal PR checks are not all green: the Pester check has 2,201 passes and two stale assertions expecting
gpt-5.6-solwhileReview-Tests.ps1usesgpt-6-astra. Both test files and their subject are byte-identical to the mergedmain. Skill Validation fails before inspecting PR content because the unchanged checkout action refuses fork checkout inpull_request_target. These unrelated shared checks were not weakened or modified.maui-pris neutral on the final GitHub-only revision.Earlier real hosted runs exposed and verified fixes for assigning to PowerShell's read-only
$HOMEand using the Windows-only SDK installer on Linux. Those fixes and retained diagnostic artifacts remain in the reduced implementation.Deployment remains pending: the PR is still a draft and unmerged. The workflow, lock, skill, and trusted scripts must reach
dotnet/maui's default branch before the upstream slash command operates. Fork validation does not imply production activation or replace normal CI and human review. Operating instructions are in.github/docs/pr-review-workflow.md.Issues Fixed
No product issue is closed. This PR adds an explicitly authorized, hosted managed-performance review workflow.