dotnet / dotnet/runtime

[ci-scan-feedback] Treat per-work-item names as volatile in crossgen2/ILC compile-abort KBE signatures

Open
#133,947 1 comment 0 reactions 0 assignees View on GitHub
agentic-workflows area-ReadyToRun untriaged
Dominant language
C#
Stars
18.3k
Forks
5.6k
PR merge metrics
PR metrics pending

Description

## Triggering signals

- Scanner wrong-closure rate rose to **39.7%** (23 of 58 `[ci-scan]` KBE closures in the last 30d were `duplicate`/`not_planned`), 🔴 and up from 31.6% last tick — rubric finding, recomputed live this tick.
- **9 of the 22 duplicate closures (41%)** are one family: crossgen2 / R2R / ILC / NativeAOT compile-phase aborts re-filed under rotating per-work-item assembly/type names and auto-closed `duplicate`. Verified examples: #133489 (`TypeMapApp`), #133563 (`b27077` — "generic types cannot have explicit layout"), #133315 (`Negative002`), #133316 (`Regression_4`), #133216 (`LoaderClassloader`). All closed by automated dedup with **0 maintainer rejection comments**, so this is a scanner-precision gap, not maintainer friction.
- The prior tick's tracker claimed a variation-8 tightening PR for exactly this family was emitted, but **no `[ci-scan-feedback]` PR actually landed** — the earlier attempts (#133080, #132616) are orphaned "originally intended as a pull request, but the git push operation failed" issues. The rule was never applied.

## Proposed edits

- `.github/workflows/shared/create-kbe.instructions.md` (variation 8 invariant-phrase derivation, ~line 76) — for crossgen2 / R2R / ILC / NativeAOT compile-phase aborts, drop the per-work-item assembly/module/type/instantiation name being compiled (`TypeMapApp`, `Negative002`, `b27077`, `Regression_4`, `LoaderClassloader`, `Interop`) and keep only the stable exception + invariant reason, leaning on the leg root to bound it. Ties directly to the dedup-family signal above.
- `.github/workflows/shared/create-kbe.instructions.md` (Bad vs good signatures table, ~line 611) — add a Bad/Good row using the concrete `b27077` explicit-layout case, showing the anchor must be the stable failure mode + leg root, not the rotating compiled-item name.

## Expected behavior change

The next scanner run will derive the same variation-8 signature for a crossgen2/R2R/ILC compile abort regardless of which assembly or type happened to be under compilation, so the existing open KBE for that abort is matched and no new near-duplicate is filed — cutting the compile-abort family out of the duplicate-closure stream that pushed the 30d wrong-closure rate to 39.7%.

> [!NOTE]
> This PR description was generated by an AI/Copilot agentic workflow.

> Generated by [CI Outer-Loop Failure Scanner — Feedback](https://github.com/dotnet/runtime/actions/runs/34971878227) · opus48 · 507.6 AIC · ⌖ 20.1 AIC · ⊞ 18.7K · [◷](https://github.com/search?q=repo%3Adotnet%2Fruntime+%22gh-aw-workflow-id%3A+ci-failure-scan-feedback%22&type=pullrequests)

---

> [!NOTE]
> This was originally intended as a pull request, but the git push operation failed.
>
> **Original error:** The process '/usr/bin/git' failed with exit code 1
>
> **Workflow Run:** [View run details and download bundle artifact](https://github.com/dotnet/runtime/actions/runs/34971878227)
>
> The bundle file is available in the `agent` artifact in the workflow run linked above.

To create a pull request with the changes:

```sh
# Download the artifact from the workflow run
gh run download 34971878227 -n agent -D /tmp/agent-34971878227

# Fetch the bundle into a temporary ref, then update the local branch
git fetch /tmp/agent-34971878227/aw-ci-scan-feedback-crossgen2-compile-abort-dedup.bundle refs/heads/ci-scan-feedback/crossgen2-compile-abort-dedup:refs/bundles/create-pr-ci-scan-feedback-crossgen2-compile-abort-dedup-58299a7f308e3162-22123d40
git update-ref refs/heads/ci-scan-feedback/crossgen2-compile-abort-dedup-58299a7f308e3162 refs/bundles/create-pr-ci-scan-feedback-crossgen2-compile-abort-dedup-58299a7f308e3162-22123d40
git checkout ci-scan-feedback/crossgen2-compile-abort-dedup-58299a7f308e3162
# Ensure the working tree matches the updated branch
git reset --hard
# Remove the temporary bundle ref
git update-ref -d refs/bundles/create-pr-ci-scan-feedback-crossgen2-compile-abort-dedup-58299a7f308e3162-22123d40

# Push the branch to origin
git push origin ci-scan-feedback/crossgen2-compile-abort-dedup-58299a7f308e3162

# Create the pull request
gh pr create --title '[ci-scan-feedback] Treat per-work-item names as volatile in crossgen2/ILC compile-abort KBE signatures' --base main --head ci-scan-feedback/crossgen2-compile-abort-dedup-58299a7f308e3162 --repo dotnet/runtime
```

Contributor guide

Open the contributing guide

Research direction

Read .github/workflows/shared/create-kbe.instructions.md, especially variation 8 around line 76 and the Bad vs good signatures table around line 611. Compare the cited compile-abort examples, then update both guidance sections so per-work-item names are treated consistently as volatile. Done means the examples and invariant-phrase guidance produce one signature for the cited family.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions
Domain
ci-cd, tooling
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.