Replace mobile-scan with platform-agnostic CI outer-loop failure scanner#127824
Replace mobile-scan with platform-agnostic CI outer-loop failure scanner#127824kotlarmilos merged 19 commits intomainfrom
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…uilds Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Tagging subscribers to this area: @dotnet/runtime-infrastructure |
There was a problem hiding this comment.
Pull request overview
This PR replaces the prior mobile-only CI failure scanning workflow prompt with a platform-agnostic “CI Outer-Loop Failure Scanner” that targets multiple outer-loop pipelines and supports broader failure classification and convergence actions (issues, Known Build Errors, and muting PRs).
Changes:
- Removes the old
.github/workflows/mobile-scan.mdprompt and introduces a new generalized.github/workflows/ci-failure-scan.mdprompt with expanded pipeline coverage and updated run cadence. - Updates the corresponding generated workflow
.github/workflows/ci-failure-scan.lock.ymlto reflect the new workflow identity, schedule, model, and expanded safe-outputs configuration.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/mobile-scan.md | Deleted the mobile-only scanner prompt (replaced by platform-agnostic scanner). |
| .github/workflows/ci-failure-scan.md | New platform-agnostic scanner prompt (pipelines list, classification rules, Known Build Error guidance, convergence/muting guidance). |
| .github/workflows/ci-failure-scan.lock.yml | Regenerated/updated locked workflow to match the new prompt, schedule, model, and safe-outputs settings. |
Copilot's findings
Comments suppressed due to low confidence (1)
.github/workflows/ci-failure-scan.lock.yml:418
- The Safe Outputs protection list is inconsistent:
config.json'sprotected_filesomitsAGENTS.md, butGH_AW_SAFE_OUTPUTS_HANDLER_CONFIGincludes it later in the workflow. This likely leavesAGENTS.mdunprotected for PR patches depending on which config is enforced. Align the two protected file lists (e.g., addAGENTS.mdto theconfig.jsonlist as well).
- Files reviewed: 3/3 changed files
- Comments generated: 2
…erage discipline Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… small product fixes, schedule every 12h Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
vitek-karas
left a comment
There was a problem hiding this comment.
I like this - my main remaining question is the approach we want to take:
- Do we prefer muting PRs (adding ActiveIssue or similar) - which are not effective immediately, and require human interaction to take effect.
- Or prefer KBEs, which are effective immediately, but they will likely have a muting PR eventually anyway.
Side observation: Creating a KBE which is immediately active (so the issues has the right labels for build analysis to pick it up) is something which so far has been reserved for contributors, since it effectively disables that test/failure for all PRs and potentially allows introducing more breaks into the system by PRs causing new breaks with the same signature.
Right now I don't know what would be better - letting the agent create KBEs, which reduces noise and keeps the PR CI greener, or require human approval (either on the KBE or via a PR) which introduces a delay into the system but avoids remote chance of introduction of further breaks.
|
@kotlarmilos, please add these pipelines: |
|
For JIT pipelines, please add these informations: failed pipelines, console log link, failed test legs (and failed test case names), and error message. You can add other details after that. |
…scipline, more pipelines Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…n] on KBE title, dedup convergence statement Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Copilot's findings
Comments suppressed due to low confidence (3)
.github/workflows/ci-failure-scan.lock.yml:418
- The safe-outputs protected_files list includes "NuGet.Config", but the repo file is "NuGet.config" (lowercase 'c'). On case-sensitive filesystems this would leave NuGet.config unprotected for agent-authored PRs. Please update the protected file entry to match the actual filename (and consider including both casings if you want to be defensive).
.github/workflows/ci-failure-scan.lock.yml:1357 - The safe-outputs protected_files list is duplicated (config.json earlier in the workflow, and this GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG). They diverge (e.g., AGENTS.md appears here but not in config.json), which risks future protection gaps. Please make these lists identical (or ensure one source of truth) so protected-file enforcement is consistent.
.github/workflows/ci-failure-scan.lock.yml:1357 - This handler config also lists "NuGet.Config" as a protected file, but the repo file is "NuGet.config". On case-sensitive filesystems that means NuGet.config wouldn't be protected unless the casing matches. Please change this entry to "NuGet.config" (and keep it consistent with the config.json protected_files list).
- Files reviewed: 3/3 changed files
- Comments generated: 1
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
vitek-karas
left a comment
There was a problem hiding this comment.
Thanks a lot - this looks great.
This comment has been minimized.
This comment has been minimized.
|
#127856 - the title is really weird - the safe output probably does something with issue titles which are too long. Maybe we need to instruct the agent to make sure the issue title is reasonably short. But it's a nit - we can do this later. |
- safe-outputs.create-issue.allowed-labels restricted to ["Known Build Error", "blocking-clean-ci"] - safe-outputs.create-pull-request.allowed-labels restricted to [agentic-workflows] - Stripped prose telling the model to add os-*/area-*/arch-* labels; added a single 'Labels (hard restriction)' clause under 'Outputs: title and labels'; KBE label line lists only the two permitted labels - Added 'Signature specificity (mandatory)' subsection: rejects bare exit codes / generic tool-failed verbs / bare exception types; requires assertion text or test+exception message; forbids padding ErrorMessage arrays with generic tokens; instructs model to file a regular issue (not a KBE) when no specific signature exists Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
🤖 Copilot Code Review — PR #127824Note This review was generated by GitHub Copilot. Holistic AssessmentMotivation: The PR generalizes the existing mobile-only CI failure scanner into a platform-agnostic outer-loop failure scanner covering 30+ pipelines. This is well-motivated — keeping outer-loop CI green requires systematic tracking, and the previous scope (mobile-only, single pipeline) was too narrow. Approach: The approach evolves the existing Summary: Detailed Findings
|
Summary
Generalizes the existing
.github/workflows/mobile-scan.md(Apple mobile + Android only, daily, sonnet-4.5, helix-centric) into.github/workflows/ci-failure-scan.md. The new workflow scans every public outer-loop pipeline ondnceng-public/public, classifies each failure (build break vs test failure vs infra), and converges the pipeline to green by either filing tracking issues, filing Known Build Errors that Arcade Build Analysis can auto-match, opening companion PRs that skip the failing test against an existing tracking issue, or opening small product-fix PRs when a localized root cause is clear.What changed
<GCStressIncompatible>for stress-incompatible JIT tests;[ActiveIssue(..., TestPlatforms.<plat>)]for unit tests) + small product-fix PR (≤20 lines, single file, non-API, non-JIT/GC/threading/security, with the failing test as evidence)allowed-filessrc/libraries/**/tests/**src/libraries/**,src/coreclr/**,src/mono/**,src/tests/**,src/native/**,eng/testing/**[ci-scan]; titles use "Skip"/"Disable"/"Suppress", never "Mute"mobile-scan.{md,lock.yml}ci-failure-scan.{md,lock.yml}Test runs
The test runs produced the following issues:
#127817
#127827
#127828
#127829
#127830
#127831
Security
No new secrets and no new actions are introduced relative to the workflow. The only changes are inside the
engine,tools,safe-outputs,network, and prompt sections of the markdown. The PRallowed-fileswidening is the surface-area change: it lets the agent edit any path undersrc/libraries,src/coreclr,src/mono,src/tests,src/native, andeng/testing/**— including product/runtime source — to enable small, well-localized product fixes. Theprotected-files: blockedpolicy still prevents touchingpackage.json, lockfiles,global.json,NuGet.Config,Directory.Packages.props,CODEOWNERS, and.github//.agents/paths. CODEOWNERS-mandated review remains the hard gate before any merge.