[ci-scan-feedback] Tighten fixer handoff-comment dedup (Step 3.6)
- Dominant language
- C#
- Stars
- 18.3k
- Forks
- 5.6k
- PR merge metrics
- PR metrics pending
Description
## Triggering signals
- KBE #129385 (`[ci-scan]` Hang `System.Collections.Tests` on osx) carries **two** `[ci-fix]` `Artifact kind: handoff` loop-in comments — one on 2026-06-19 and a second on 2026-08-09 — from `github-actions[bot]`. Hard rule 5 allows one loop-in per KBE ever, so the second comment is a violation. (https://github.com/dotnet/runtime/issues/129385)
- Root cause: Step 3.6 (prior hand-off comment) of `ci-failure-fix.md` told the agent to "inspect each comment independently" but, unlike Step 3.5 (author-already-engaged), omitted the explicit "if the issue read did not return comments, call the comments tool" fallback — and never stated that a handoff from *any* prior run (not just the 30-day dedup window used by the PR checks) counts. Both gaps let the older handoff be missed and a duplicate posted.
## Proposed edits
- `.github/workflows/ci-failure-fix.md` (Step 3, check 6, ~lines 171–175): reuse Step 3.5's comments-collection discipline (don't assume a fixed array index; call the comments tool explicitly if the issue read returned no comments), state that a handoff from any prior run counts regardless of age ("one loop-in per KBE ever", not per-window), and add an explicit `-> skipped: handoff comment already posted on #` verdict — directly closes the #129385 duplicate-handoff gap.
## Expected behavior change
The next fixer run will explicitly fetch and scan the full comment collection of every candidate KBE for any prior `handoff` artifact — of any age — before posting, so an existing loop-in like the 2026-06-19 comment on #129385 is detected and the run records `skipped: handoff comment already posted` instead of posting a second, rule-violating loop-in.
> [!NOTE]
> This PR description was generated by the AI/Copilot `ci-scan-feedback` workflow.
> Generated by [CI Outer-Loop Failure Scanner — Feedback](https://github.com/dotnet/runtime/actions/runs/32372835373) · opus48 · 508.5 AIC · ⌖ 25.3 AIC · ⊞ 20.6K · [◷](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/32372835373)
>
> 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 32372835373 -n agent -D /tmp/agent-32372835373
# Fetch the bundle into a temporary ref, then update the local branch
git fetch /tmp/agent-32372835373/aw-ci-scan-feedback-handoff-dedup-20260820.bundle refs/heads/ci-scan-feedback-handoff-dedup-20260820:refs/bundles/create-pr-ci-scan-feedback-handoff-dedup-20260820-2407b826d5bb4209-50fdf228
git update-ref refs/heads/ci-scan-feedback-handoff-dedup-20260820-2407b826d5bb4209 refs/bundles/create-pr-ci-scan-feedback-handoff-dedup-20260820-2407b826d5bb4209-50fdf228
git checkout ci-scan-feedback-handoff-dedup-20260820-2407b826d5bb4209
# 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-handoff-dedup-20260820-2407b826d5bb4209-50fdf228
# Push the branch to origin
git push origin ci-scan-feedback-handoff-dedup-20260820-2407b826d5bb4209
# Create the pull request
gh pr create --title '[ci-scan-feedback] Tighten fixer handoff-comment dedup (Step 3.6)' --base main --head ci-scan-feedback-handoff-dedup-20260820-2407b826d5bb4209 --repo dotnet/runtime
```
Contributor guide
Research direction
Start with .github/workflows/ci-failure-fix.md and compare Step 3, check 6 (Step 3.6) with Step 3.5. Confirm the wording covers explicit comment collection, handoffs from any prior run, and the skipped verdict; it is done when the documented behavior closes the duplicate-handoff case described for #129385.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions
- Domain
- ci-cd, documentation
- Issue type
- Documentation
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 82/100