Skip to content

[ci-scan-feedback] Block no-op trimming-root fixes on already-rooted test assemblies #130171

Description

@github-actions

Triggering signals

Proposed edits

  • .github/workflows/ci-failure-fix.md (Area-routing table, Mobile row, line 181) — add a trimming/AOT-reflection exception: do not propose an ILLink.Descriptors.xml / TrimmerRootDescriptor that roots a type in the test assembly itself (library test assemblies are rooted whole by default, so rooting their own nested types is a no-op); only rooting a separate product/helper assembly the test reflects over is potentially valid; confirm the owning assembly from in-repo source first, and downgrade to a loop-in comment when it cannot be confirmed. Ties directly to signal [ci-fix] Needs review: root CustomAttributeDecoderTests enum types for Apple-mobile trimming (refs #128450) #130106.

Expected behavior change

The next fixer run will stop opening help-wanted PRs whose only change is an ILLink/trimmer root of an already-rooted test assembly's own types — the exact no-op a maintainer rejected on #130106. For maccatalyst/mobile trimming reflection failures (Type.GetType / reflection name returns null under ILLink), the fixer will either root the correct separate assembly (confirmed from source) or, when it cannot identify that assembly, hand off with a loop-in comment stating the trimming hypothesis rather than proposing a likely no-op root PR. This narrows the fixer rejection-rate signal without touching the confident-fix path.

Note

This pull request was drafted by an AI agent (GitHub Copilot) running the ci-failure-scan-feedback workflow. Please review carefully before merging.

Note

🔒 Integrity filter blocked 6 items

The following items were blocked because they don't meet the GitHub integrity level.

To allow these resources, lower min-integrity in your GitHub frontmatter:

tools:
  github:
    min-integrity: approved  # merged | approved | unapproved | none

Generated by CI Outer-Loop Failure Scanner — Feedback · ● 17.2M ·


Note

This was originally intended as a pull request, but the git push operation failed.

Workflow Run: View run details and download patch artifact

The patch file is available in the agent artifact in the workflow run linked above.

To create a pull request with the changes:

# Download the artifact from the workflow run
gh run download 28654414875 -n agent -D /tmp/agent-28654414875

# Create a new branch
git checkout -b ci-scan-feedback-20260703-5759878b5b946070

# Apply the patch (--3way handles cross-repo patches where files may already exist)
git am --3way /tmp/agent-28654414875/aw-ci-scan-feedback-20260703.patch

# Push the branch to origin
git push origin ci-scan-feedback-20260703-5759878b5b946070

# Create the pull request
gh pr create --title '[ci-scan-feedback] Block no-op trimming-root fixes on already-rooted test assemblies' --base main --head ci-scan-feedback-20260703-5759878b5b946070 --repo dotnet/runtime
Show patch preview (36 of 36 lines)
From 7eefa523b2a19405294378b6604836e72b479148 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com>
Date: Fri, 3 Jul 2026 10:58:26 +0000
Subject: [PATCH] [ci-scan-feedback] Block no-op trimming-root fixes on
 already-rooted test assemblies

The ci-failure-fix run opened help-wanted PR #130106 proposing an
ILLink.Descriptors.xml/TrimmerRootDescriptor root for nested enum types in a
test assembly to fix a maccatalyst trimming reflection failure. A maintainer
closed it: the fix is 'unlikely to help because the entire test assembly is
already rooted by default.' Add a Mobile-row exception so the fixer does not
propose rooting a type in an already-rooted test assembly, and downgrades to a
loop-in comment when it cannot confirm which assembly owns the stripped member.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---
 .github/workflows/ci-failure-fix.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/ci-failure-fix.md b/.github/workflows/ci-failure-fix.md
index 28271b34..aac7082f 100644
--- a/.github/workflows/ci-failure-fix.md
+++ b/.github/workflows/ci-failure-fix.md
@@ -178,7 +178,7 @@ Apply these fixer-specific bounds on top of the skill's guidance:
 
 | KBE pipeline / area | Fix policy |
 |---|---|
-| Mobile (ios/tvos/maccatalyst/android/wasm/wasi) | Small test/csproj/condition fixes in bounds are fair game. |
+| Mobile (ios/tvos/maccatalyst/android/wasm/wasi) | Small test/csproj/condition fixes in bounds are fair game. Exception for trimming/AOT reflection failures (`Type.GetType`/reflection name returns `null` under ILLink): do **not** propose an `ILLink.Descriptors.xml` / `TrimmerRootDescriptor` that roots a type **in the test assembly itself** as the fix — library test assemblies are rooted whole by default, so rooting their own (e.g. nested enum) types is a no-op that does not address the failure. Only rooting a *separate* product/helper assembly the test 
... (truncated)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions