Unify build-failure analysis comments and fix warning guidance - #10458
Conversation
…iding Propagates the review round from dotnet/sdk#55539 to testfx, applying only the items that actually apply here (this repo already digest-pins the binlog-mcp container via gh-aw v0.84.3, and the centralized router already enforces the slash-command position before dispatching). - `/analyze-build-failure` now posts with `target: "triggering"` instead of `"*"`, for both `add-comment` and `create-pull-request-review-comment`, so a prompt-injected agent cannot redirect its output to an arbitrary issue or PR. This works despite `strategy: centralized` making the workflow arrive as a `workflow_dispatch`: gh-aw's `resolveInvocationContext` reads the router's `aw_context`, restores `event_type: issue_comment` and rebuilds `payload.pull_request` / `payload.issue` from `item_type` / `item_number`, so `resolveTarget` resolves the triggering PR (verified by reading invocation_context_helpers.cjs, safe_output_helpers.cjs and aw_context.cjs at the exact SHA this repo pins, github/gh-aw-actions@c863074). The automatic workflow keeps `"*"`: it is triggered by `check_run`, which is not an issue/PR context, and its PR number comes from the ADO build. - `hide-older-comments` now uses the object form with `match: [build-failure-analysis, build-failure-analysis-command]`. Hiding is scoped to the posting workflow's id, so previously each workflow only hid its own comments and a `/analyze-build-failure` re-run left the stale automatic analysis visible beside the fresh one. - Dropped the non-existent `top: 10` argument from the `binlog_warnings` example in the analyst agent. The tool accepts only `binlog_file` plus the optional `code` and `project` filters (verified against Microsoft.AITools.BinlogMcp 2.0.1 over stdio: passing `top` changes nothing, it is silently ignored). Compiled with gh-aw v0.84.3: 32/32 succeeded, 0 warnings. `fetch-binlog` is still byte-identical across both locks (414 lines), `bash -n` is clean on all 94 generated run blocks, concurrency groups stay distinct, `retention-days` stays `"1"`, and `check_action_pins.py` passes (2177 refs / 47 files). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e5db9021-5257-4cf5-83ba-486a3e398391
There was a problem hiding this comment.
Pull request overview
Scopes command-triggered build analysis comments to the originating PR and improves cross-workflow comment supersession.
Changes:
- Pins command workflow comments to the triggering PR.
- Hides superseded analyses from either workflow.
- Corrects
binlog_warningsusage guidance.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/build-failure-analysis.md |
Adds cross-workflow comment supersession. |
.github/workflows/build-failure-analysis.lock.yml |
Regenerates automatic workflow configuration. |
.github/workflows/build-failure-analysis-command.md |
Restricts comment targets and adds supersession matching. |
.github/workflows/build-failure-analysis-command.lock.yml |
Regenerates command workflow configuration. |
.github/agents/build-failure-analyst.agent.md |
Removes the unsupported warning count argument. |
…: Build ID 3039930 (microsoft#10459)
Keep both command safe outputs on the verified GH_AW_PR_NUMBER path because the pinned gh-aw runtime does not enforce triggering targets consistently. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 880db896-e2cb-47dd-86e8-146b5f865084
There was a problem hiding this comment.
Review details
Suppressed comments (13)
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.zh-Hans.xlf:862
- This overwrites the existing Simplified Chinese target with English and marks it as new, so localized
--helpoutput regresses to English even though the source resource did not change. Restore the existing target; XLF updates should come from the localization pipeline.
<target state="new">Do not report a non-successful exit value for the specified exit codes.
For example, '--ignore-exit-code 8;9' ignores exit codes 8 and 9 and returns 0 in those cases.
For the full list, see https://github.com/microsoft/testfx/blob/main/docs/glossary.md#exit-codes.</target>
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.tr.xlf:862
- This overwrites the existing Turkish target with English and marks it as new, so localized
--helpoutput regresses to English even though the source resource did not change. Restore the existing target; XLF updates should come from the localization pipeline.
<target state="new">Do not report a non-successful exit value for the specified exit codes.
For example, '--ignore-exit-code 8;9' ignores exit codes 8 and 9 and returns 0 in those cases.
For the full list, see https://github.com/microsoft/testfx/blob/main/docs/glossary.md#exit-codes.</target>
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.zh-Hant.xlf:862
- This overwrites the existing Traditional Chinese target with English and marks it as new, so localized
--helpoutput regresses to English even though the source resource did not change. Restore the existing target; XLF updates should come from the localization pipeline.
<target state="new">Do not report a non-successful exit value for the specified exit codes.
For example, '--ignore-exit-code 8;9' ignores exit codes 8 and 9 and returns 0 in those cases.
For the full list, see https://github.com/microsoft/testfx/blob/main/docs/glossary.md#exit-codes.</target>
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.ru.xlf:862
- This overwrites the existing Russian target with English and marks it as new, so localized
--helpoutput regresses to English even though the source resource did not change. Restore the existing target; XLF updates should come from the localization pipeline.
<target state="new">Do not report a non-successful exit value for the specified exit codes.
For example, '--ignore-exit-code 8;9' ignores exit codes 8 and 9 and returns 0 in those cases.
For the full list, see https://github.com/microsoft/testfx/blob/main/docs/glossary.md#exit-codes.</target>
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.pt-BR.xlf:862
- This overwrites the existing Brazilian Portuguese target with English and marks it as new, so localized
--helpoutput regresses to English even though the source resource did not change. Restore the existing target; XLF updates should come from the localization pipeline.
<target state="new">Do not report a non-successful exit value for the specified exit codes.
For example, '--ignore-exit-code 8;9' ignores exit codes 8 and 9 and returns 0 in those cases.
For the full list, see https://github.com/microsoft/testfx/blob/main/docs/glossary.md#exit-codes.</target>
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.pl.xlf:862
- This overwrites the existing Polish target with English and marks it as new, so localized
--helpoutput regresses to English even though the source resource did not change. Restore the existing target; XLF updates should come from the localization pipeline.
<target state="new">Do not report a non-successful exit value for the specified exit codes.
For example, '--ignore-exit-code 8;9' ignores exit codes 8 and 9 and returns 0 in those cases.
For the full list, see https://github.com/microsoft/testfx/blob/main/docs/glossary.md#exit-codes.</target>
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.ko.xlf:862
- This overwrites the existing Korean target with English and marks it as new, so localized
--helpoutput regresses to English even though the source resource did not change. Restore the existing target; XLF updates should come from the localization pipeline.
<target state="new">Do not report a non-successful exit value for the specified exit codes.
For example, '--ignore-exit-code 8;9' ignores exit codes 8 and 9 and returns 0 in those cases.
For the full list, see https://github.com/microsoft/testfx/blob/main/docs/glossary.md#exit-codes.</target>
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.ja.xlf:863
- This overwrites the existing Japanese target with English and marks it as new, so localized
--helpoutput regresses to English even though the source resource did not change. Restore the existing target; XLF updates should come from the localization pipeline.
<target state="new">Do not report a non-successful exit value for the specified exit codes.
For example, '--ignore-exit-code 8;9' ignores exit codes 8 and 9 and returns 0 in those cases.
For the full list, see https://github.com/microsoft/testfx/blob/main/docs/glossary.md#exit-codes.</target>
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.it.xlf:862
- This overwrites the existing Italian target with English and marks it as new, so localized
--helpoutput regresses to English even though the source resource did not change. Restore the existing target; XLF updates should come from the localization pipeline.
<target state="new">Do not report a non-successful exit value for the specified exit codes.
For example, '--ignore-exit-code 8;9' ignores exit codes 8 and 9 and returns 0 in those cases.
For the full list, see https://github.com/microsoft/testfx/blob/main/docs/glossary.md#exit-codes.</target>
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.fr.xlf:862
- This overwrites the existing French target with English and marks it as new, so localized
--helpoutput regresses to English even though the source resource did not change. Restore the existing target; XLF updates should come from the localization pipeline.
<target state="new">Do not report a non-successful exit value for the specified exit codes.
For example, '--ignore-exit-code 8;9' ignores exit codes 8 and 9 and returns 0 in those cases.
For the full list, see https://github.com/microsoft/testfx/blob/main/docs/glossary.md#exit-codes.</target>
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.es.xlf:862
- This overwrites the existing Spanish target with English and marks it as new, so localized
--helpoutput regresses to English even though the source resource did not change. Restore the existing target; XLF updates should come from the localization pipeline.
<target state="new">Do not report a non-successful exit value for the specified exit codes.
For example, '--ignore-exit-code 8;9' ignores exit codes 8 and 9 and returns 0 in those cases.
For the full list, see https://github.com/microsoft/testfx/blob/main/docs/glossary.md#exit-codes.</target>
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.de.xlf:862
- This overwrites the existing German target with English and marks it as new, so localized
--helpoutput regresses to English even though the source resource did not change. Restore the existing target; XLF updates should come from the localization pipeline.
<target state="new">Do not report a non-successful exit value for the specified exit codes.
For example, '--ignore-exit-code 8;9' ignores exit codes 8 and 9 and returns 0 in those cases.
For the full list, see https://github.com/microsoft/testfx/blob/main/docs/glossary.md#exit-codes.</target>
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.cs.xlf:862
- This overwrites the existing Czech target with English and marks it as new, so localized
--helpoutput regresses to English even though the source resource did not change. Restore the existing target; XLF updates should come from the localization pipeline.
<target state="new">Do not report a non-successful exit value for the specified exit codes.
For example, '--ignore-exit-code 8;9' ignores exit codes 8 and 9 and returns 0 in those cases.
For the full list, see https://github.com/microsoft/testfx/blob/main/docs/glossary.md#exit-codes.</target>
- Files reviewed: 18/18 changed files
- Comments generated: 0 new
- Review effort level: Balanced
What changed
topargument tobinlog_warnings; it documents the supportedcodeandprojectfilters instead.GH_AW_PR_NUMBERexplicitly. The reviewedtarget: "triggering"change was removed because the pinned gh-aw runtime honors explicit summary destinations before target resolution and does not reconstruct centralized command context for inline review comments.Verification