Skip to content

[ci-scan-feedback] Add build-break KBE dedup variation - #133149

Merged
vitek-karas merged 4 commits into
dotnet:mainfrom
vitek-karas:vitek-karas-build-break-kbe-dedup
Sep 11, 2026
Merged

vitek-karas merged 4 commits into
dotnet:mainfrom
vitek-karas:vitek-karas-build-break-kbe-dedup

Conversation

@vitek-karas

Copy link
Copy Markdown
Member

Triggering problem

  • #132669 reported that the scanner filed the same build-break failure as duplicate KBEs, including the SYSTEM_ACCESSTOKEN and JIT.Generics_ro examples.
  • #132700 is the later duplicate feedback report. It expands the same proposed fix with a bounded leg/root descriptor and an explicit human-review fallback.
  • The referenced duplicate KBE sets were filed under drifting titles and leg prose, while build breaks often have no test/assertion key for the existing search variations.

Proposed fix

  • Add variation 8 to .github/workflows/shared/create-kbe.instructions.md for build breaks without a test or method identifier.
  • Derive a bounded invariant error fragment and a bounded leg root, then search both as exact body terms with is:issue is:open label:"Known Build Error" in:body.
  • Use each stable array element independently, require both terms plus the existing full candidate verification, and reuse the existing ambiguous dup / weak signature outcomes rather than adding a new tally vocabulary.

Why this works

The stable invariant phrase catches title and prose drift, while the leg root prevents unrelated build breaks sharing a generic diagnostic from colliding. Requiring both fragments in the same KBE body and refusing to guess among multiple candidates prevents false reuse; the prescribed query is expressible through the workflow's integrity-gated GitHub issue search.

Validation

  • github-agentic-workflows-compile passed for ci-failure-scan.md and ci-failure-fix.md with no compilation errors.
  • The combined invariant-plus-leg in:body search syntax was verified against the referenced KBE body shape using the authenticated GitHub API.

Note

This pull request was generated by GitHub Copilot.

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
15 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

@vitek-karas
vitek-karas marked this pull request as ready for review September 3, 2026 06:54
Copilot AI lite review requested due to automatic review settings September 3, 2026 06:54
@vitek-karas
vitek-karas requested review from a team and jeffhandley as code owners September 3, 2026 06:54
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
15 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The new variation text introduces an internal documentation inconsistency (separator rendering and range punctuation) that can mislead readers and should be corrected before merge.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Adds a new “variation 8” to the create-kbe authoring instructions to improve deduplication for build breaks that don’t have a stable test/method identifier, by searching for a bounded invariant error phrase plus a bounded build-leg root in existing open KBEs.

Changes:

  • Document a new “build-break invariant + leg root” search variation (variation 8) under “Search for an existing KBE”.
  • Extend the per-variation summary paragraph to describe what variation 8 is intended to catch.
File summaries
File Description
.github/workflows/shared/create-kbe.instructions.md Adds variation 8 guidance and updates the summary to cover build-break dedup when titles/prose drift.
Review details
  • Files reviewed: 1/1 changed files
  • Comments generated: 1
  • Review effort level: Lite

Copilot AI review requested due to automatic review settings September 8, 2026 07:26

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Minor wording/spelling and an ambiguity in the new extraction guidance should be corrected to avoid inconsistent or incorrect signature/leg-root derivation.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 1/1 changed files
  • Comments generated: 3
  • Review effort level: Lite

Copilot AI review requested due to automatic review settings September 8, 2026 07:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

A newly introduced term in the operational instructions is undefined and can lead to inconsistent dedup behavior in practice.

Review details

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

.github/workflows/shared/create-kbe.instructions.md:89

  • The phrase “stable element” is introduced here but not defined elsewhere in the instructions. Since these are operational prompts, this ambiguity can lead to inconsistent behavior (e.g., different interpretations of what counts as “stable”). Consider rewording to reference the already-defined specificity criteria instead of the undefined term.
  • Files reviewed: 1/1 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

@PureWeen PureWeen left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both original findings are addressed: the invariant/leg search now covers closed and recurrence paths, and an unbounded fragment skips only variation 8. One interaction remains in shared/create-kbe.instructions.md:199-200: the new unlabeled pair search records linked-tracker, which ci-failure-scan.md:343 treats as terminal: record and emit nothing. This conflicts with the shared guidance that plain trackers are not KBE substitutes.

For a stable actionable build break with a matching unlabeled tracker but no open or closed KBE and no matching PR, this newly reachable path suppresses creation of the labeled KBE needed by Build Analysis. The scanner contradiction predates this PR; the new pair-only search routes additional failures into it. PALTests is not a reproducer for this case because its closed predecessors independently trigger recurrence handling.

Please keep tracker-only hits as nonterminal cross-link context and align the scanner so Branch A creates a KBE with Tracking unless an actual KBE, PR, or independent skip condition suppresses it. Do not treat an unlabeled title match as an existing KBE.

Note

This review was generated by GitHub Copilot.

Copilot AI review requested due to automatic review settings September 10, 2026 08:28
@vitek-karas

Copy link
Copy Markdown
Member Author

@PureWeen Thanks for the feedback. I changed the scanner so a tracker-only match does not stop KBE creation. It keeps the tracker for the Tracking field and creates a KBE unless an existing KBE, PR, or skip rule applies.

Note

This response was generated by GitHub Copilot.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The changes are documentation/workflow-guidance clarifications with low risk; only a minor wording ambiguity was found with an inline fix suggestion.

Review details

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

.github/workflows/shared/create-kbe.instructions.md:89

  • The phrase “each stable element” is undefined in this document, which can lead to inconsistent interpretation (and therefore inconsistent search behavior) when ErrorMessage is an array. If the intent is simply to try each array entry independently, removing “stable” makes the guidance unambiguous.
  • Files reviewed: 2/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

@PureWeen PureWeen left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Holistic Review

Motivation: Tracker-only matches should preserve tracking context without suppressing the labeled KBE needed by Build Analysis.

Approach: The scanner now keeps linked-tracker nonterminal and adds the tracker link when creating a KBE. An actual KBE, handling PR, or independent skip condition still prevents emission.

Summary: LGTM from this focused code re-review at 8ce59c50. The remaining tracker-only suppression warning in my previous review is addressed. No new actionable findings; unlabeled trackers are not promoted into existing KBEs.

Scope: static code review only, not an executed workflow. CI/check status and merge readiness were not evaluated.

Note

This review was generated by GitHub Copilot.

@vitek-karas
vitek-karas merged commit 8179cec into dotnet:main Sep 11, 2026
24 checks passed
@vitek-karas
vitek-karas deleted the vitek-karas-build-break-kbe-dedup branch September 11, 2026 08:13
@dotnet-milestone-bot dotnet-milestone-bot Bot added this to the 12.0-preview1 milestone Sep 14, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 15, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants