From 7ac1333871d9a92d8e82815ccf7716e076279e18 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 21 Feb 2026 18:15:51 +0000 Subject: [PATCH 1/4] Initial plan From cf0c5e9f2a01dc2ed3ba298488d6d985c3e78e48 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 21 Feb 2026 18:20:52 +0000 Subject: [PATCH 2/4] Fix duplicate issue detector formatting: collapse related issues, keep duplicates visible, no repeated refs in details Co-authored-by: strawgate <6384545+strawgate@users.noreply.github.com> --- .github/workflows/gh-aw-duplicate-issue-detector.lock.yml | 8 ++++++-- .github/workflows/gh-aw-duplicate-issue-detector.md | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gh-aw-duplicate-issue-detector.lock.yml b/.github/workflows/gh-aw-duplicate-issue-detector.lock.yml index c94f5ec7..3102a773 100644 --- a/.github/workflows/gh-aw-duplicate-issue-detector.lock.yml +++ b/.github/workflows/gh-aw-duplicate-issue-detector.lock.yml @@ -34,7 +34,7 @@ # # inlined-imports: true # -# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"a42e6db2bc4a150c439e71c44d24fe9ca2e3ff4bed1b9ec5e4c9ecdd2ee278d0"} +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"a5f28ae255b2c7702b8099f8dc095c9ab9bac2cc978631393985417a7fb9ec25"} name: "Duplicate Issue Detector" "on": @@ -391,6 +391,8 @@ jobs: {optional extra context about shared symptoms, component, or scope} +
{N} related issues found + **Highly related** (separate issues that significantly overlap or share scope): - #{number} — {one concise sentence explaining the shared scope and the key difference from this issue}
More detail @@ -400,9 +402,11 @@ jobs:
More detail {optional extra context about the overlap and distinction}
+ +
``` - Omit the **Highly related** section entirely when related issues detection is disabled or when no issues qualify for it. Omit a section entirely if no issues qualify for it. Put issue references on the main list line (outside ``) so GitHub renders issue status badges. Keep `` text generic (for example, `More detail`) and avoid repeating issue titles there. In justifications, refer to the current report as **"this issue"** (not by number). Use neutral, helpful language — the reporter may not be familiar with the existing issues. Do NOT use `fixes`, `closes`, or `resolves` keywords. + Omit the **Possible duplicates** section entirely if no issues qualify for it. Omit the `
` block wrapping **Highly related** entirely when related issues detection is disabled or when no issues qualify for it. Put issue references on the main list line (outside any ``) so GitHub renders issue status badges. Keep `` text generic (e.g. `More detail` or `{N} related issues found`) and do NOT repeat issue titles or numbers anywhere inside `
` bodies. In justifications, refer to the current report as **"this issue"** (not by number) and refer to the candidate by "it" or a short description — never by repeating the title or issue number. Use neutral, helpful language — the reporter may not be familiar with the existing issues. Do NOT use `fixes`, `closes`, or `resolves` keywords. **If no duplicate (or highly related issue, when detection is enabled) is found:** diff --git a/.github/workflows/gh-aw-duplicate-issue-detector.md b/.github/workflows/gh-aw-duplicate-issue-detector.md index 42eeab27..abe1934e 100644 --- a/.github/workflows/gh-aw-duplicate-issue-detector.md +++ b/.github/workflows/gh-aw-duplicate-issue-detector.md @@ -136,6 +136,8 @@ Call `add_comment` with a single comment combining all findings. Include up to * {optional extra context about shared symptoms, component, or scope}
+
{N} related issues found + **Highly related** (separate issues that significantly overlap or share scope): - #{number} — {one concise sentence explaining the shared scope and the key difference from this issue}
More detail @@ -145,9 +147,11 @@ Call `add_comment` with a single comment combining all findings. Include up to *
More detail {optional extra context about the overlap and distinction}
+ +
``` -Omit the **Highly related** section entirely when related issues detection is disabled or when no issues qualify for it. Omit a section entirely if no issues qualify for it. Put issue references on the main list line (outside ``) so GitHub renders issue status badges. Keep `` text generic (for example, `More detail`) and avoid repeating issue titles there. In justifications, refer to the current report as **"this issue"** (not by number). Use neutral, helpful language — the reporter may not be familiar with the existing issues. Do NOT use `fixes`, `closes`, or `resolves` keywords. +Omit the **Possible duplicates** section entirely if no issues qualify for it. Omit the `
` block wrapping **Highly related** entirely when related issues detection is disabled or when no issues qualify for it. Put issue references on the main list line (outside any ``) so GitHub renders issue status badges. Keep `` text generic (e.g. `More detail` or `{N} related issues found`) and do NOT repeat issue titles or numbers anywhere inside `
` bodies. In justifications, refer to the current report as **"this issue"** (not by number) and refer to the candidate by "it" or a short description — never by repeating the title or issue number. Use neutral, helpful language — the reporter may not be familiar with the existing issues. Do NOT use `fixes`, `closes`, or `resolves` keywords. **If no duplicate (or highly related issue, when detection is enabled) is found:** From dcf57ad49b6fe8c9828d9e6a1da47031e9bb2749 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 21 Feb 2026 18:26:25 +0000 Subject: [PATCH 3/4] Simplify Step 4 instructions: two concrete examples, no nested details blocks Co-authored-by: strawgate <6384545+strawgate@users.noreply.github.com> --- .../gh-aw-duplicate-issue-detector.lock.yml | 48 +++++++++++-------- .../gh-aw-duplicate-issue-detector.md | 46 +++++++++++------- 2 files changed, 57 insertions(+), 37 deletions(-) diff --git a/.github/workflows/gh-aw-duplicate-issue-detector.lock.yml b/.github/workflows/gh-aw-duplicate-issue-detector.lock.yml index 3102a773..a8406fad 100644 --- a/.github/workflows/gh-aw-duplicate-issue-detector.lock.yml +++ b/.github/workflows/gh-aw-duplicate-issue-detector.lock.yml @@ -34,7 +34,7 @@ # # inlined-imports: true # -# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"a5f28ae255b2c7702b8099f8dc095c9ab9bac2cc978631393985417a7fb9ec25"} +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ce53175ccbf032dd221bb0c3e10ef7eb83e46eaca241e4a0eadd84c74af86e9f"} name: "Duplicate Issue Detector" "on": @@ -378,35 +378,45 @@ jobs: **If any duplicates (or highly related issues, when detection is enabled) were found:** - Call `add_comment` with a single comment combining all findings. Include up to **3 duplicate issues** and, when related issues detection is enabled, up to **3 highly related issues**, each ranked from most to least relevant to the current issue. Use this format: + Call `add_comment` with a single comment combining all findings. Include up to **3 duplicate issues** and, when related issues detection is enabled, up to **3 highly related issues**, each ranked from most to least relevant to the current issue. + + If both duplicates and highly related issues were found, use this format: ``` **Possible duplicates** (issues that appear to describe the same problem): - - #{number} — {one concise sentence explaining why this issue overlaps with the candidate issue} -
More detail - {optional extra context about shared symptoms, component, or scope} -
- - #{number} — {one concise sentence explaining why this issue overlaps with the candidate issue} -
More detail - {optional extra context about shared symptoms, component, or scope} -
+ - #{number} — {one concise sentence explaining why this issue overlaps with the candidate} + - #{number} — {one concise sentence explaining why this issue overlaps with the candidate} + +
{N} related issues found + + **Highly related** (separate issues that significantly overlap or share scope): + - #{number} — {one concise sentence explaining the shared scope and the key difference} + - #{number} — {one concise sentence explaining the shared scope and the key difference} + +
+ ``` + If only duplicates were found (no highly related issues, or related issues detection is disabled), use this format: + + ``` + **Possible duplicates** (issues that appear to describe the same problem): + - #{number} — {one concise sentence explaining why this issue overlaps with the candidate} + - #{number} — {one concise sentence explaining why this issue overlaps with the candidate} + ``` + + If only highly related issues were found (no duplicates), use this format: + + ```
{N} related issues found **Highly related** (separate issues that significantly overlap or share scope): - - #{number} — {one concise sentence explaining the shared scope and the key difference from this issue} -
More detail - {optional extra context about the overlap and distinction} -
- - #{number} — {one concise sentence explaining the shared scope and the key difference from this issue} -
More detail - {optional extra context about the overlap and distinction} -
+ - #{number} — {one concise sentence explaining the shared scope and the key difference} + - #{number} — {one concise sentence explaining the shared scope and the key difference}
``` - Omit the **Possible duplicates** section entirely if no issues qualify for it. Omit the `
` block wrapping **Highly related** entirely when related issues detection is disabled or when no issues qualify for it. Put issue references on the main list line (outside any ``) so GitHub renders issue status badges. Keep `` text generic (e.g. `More detail` or `{N} related issues found`) and do NOT repeat issue titles or numbers anywhere inside `
` bodies. In justifications, refer to the current report as **"this issue"** (not by number) and refer to the candidate by "it" or a short description — never by repeating the title or issue number. Use neutral, helpful language — the reporter may not be familiar with the existing issues. Do NOT use `fixes`, `closes`, or `resolves` keywords. + Put issue references on the main list line so GitHub renders issue status badges. Do NOT repeat issue titles or numbers in justification text. Refer to the current report as **"this issue"** (not by number) and refer to the candidate by "it" or a short description. Use neutral, helpful language — the reporter may not be familiar with the existing issues. Do NOT use `fixes`, `closes`, or `resolves` keywords. **If no duplicate (or highly related issue, when detection is enabled) is found:** diff --git a/.github/workflows/gh-aw-duplicate-issue-detector.md b/.github/workflows/gh-aw-duplicate-issue-detector.md index abe1934e..a4ce39cd 100644 --- a/.github/workflows/gh-aw-duplicate-issue-detector.md +++ b/.github/workflows/gh-aw-duplicate-issue-detector.md @@ -123,35 +123,45 @@ Post **exactly one** `add_comment` call total (or `noop` if nothing is found). D **If any duplicates (or highly related issues, when detection is enabled) were found:** -Call `add_comment` with a single comment combining all findings. Include up to **3 duplicate issues** and, when related issues detection is enabled, up to **3 highly related issues**, each ranked from most to least relevant to the current issue. Use this format: +Call `add_comment` with a single comment combining all findings. Include up to **3 duplicate issues** and, when related issues detection is enabled, up to **3 highly related issues**, each ranked from most to least relevant to the current issue. + +If both duplicates and highly related issues were found, use this format: ``` **Possible duplicates** (issues that appear to describe the same problem): -- #{number} — {one concise sentence explaining why this issue overlaps with the candidate issue} -
More detail - {optional extra context about shared symptoms, component, or scope} -
-- #{number} — {one concise sentence explaining why this issue overlaps with the candidate issue} -
More detail - {optional extra context about shared symptoms, component, or scope} -
+- #{number} — {one concise sentence explaining why this issue overlaps with the candidate} +- #{number} — {one concise sentence explaining why this issue overlaps with the candidate} + +
{N} related issues found + +**Highly related** (separate issues that significantly overlap or share scope): +- #{number} — {one concise sentence explaining the shared scope and the key difference} +- #{number} — {one concise sentence explaining the shared scope and the key difference} + +
+``` +If only duplicates were found (no highly related issues, or related issues detection is disabled), use this format: + +``` +**Possible duplicates** (issues that appear to describe the same problem): +- #{number} — {one concise sentence explaining why this issue overlaps with the candidate} +- #{number} — {one concise sentence explaining why this issue overlaps with the candidate} +``` + +If only highly related issues were found (no duplicates), use this format: + +```
{N} related issues found **Highly related** (separate issues that significantly overlap or share scope): -- #{number} — {one concise sentence explaining the shared scope and the key difference from this issue} -
More detail - {optional extra context about the overlap and distinction} -
-- #{number} — {one concise sentence explaining the shared scope and the key difference from this issue} -
More detail - {optional extra context about the overlap and distinction} -
+- #{number} — {one concise sentence explaining the shared scope and the key difference} +- #{number} — {one concise sentence explaining the shared scope and the key difference}
``` -Omit the **Possible duplicates** section entirely if no issues qualify for it. Omit the `
` block wrapping **Highly related** entirely when related issues detection is disabled or when no issues qualify for it. Put issue references on the main list line (outside any ``) so GitHub renders issue status badges. Keep `` text generic (e.g. `More detail` or `{N} related issues found`) and do NOT repeat issue titles or numbers anywhere inside `
` bodies. In justifications, refer to the current report as **"this issue"** (not by number) and refer to the candidate by "it" or a short description — never by repeating the title or issue number. Use neutral, helpful language — the reporter may not be familiar with the existing issues. Do NOT use `fixes`, `closes`, or `resolves` keywords. +Put issue references on the main list line so GitHub renders issue status badges. Do NOT repeat issue titles or numbers in justification text. Refer to the current report as **"this issue"** (not by number) and refer to the candidate by "it" or a short description. Use neutral, helpful language — the reporter may not be familiar with the existing issues. Do NOT use `fixes`, `closes`, or `resolves` keywords. **If no duplicate (or highly related issue, when detection is enabled) is found:** From 8a2dc940fc2c79c04a5a30593f39999880b1c1c3 Mon Sep 17 00:00:00 2001 From: William Easton Date: Sat, 21 Feb 2026 12:34:06 -0600 Subject: [PATCH 4/4] update prompt --- .../gh-aw-duplicate-issue-detector.lock.yml | 79 +++++++++++-------- .../gh-aw-duplicate-issue-detector.md | 77 ++++++++++-------- 2 files changed, 87 insertions(+), 69 deletions(-) diff --git a/.github/workflows/gh-aw-duplicate-issue-detector.lock.yml b/.github/workflows/gh-aw-duplicate-issue-detector.lock.yml index a8406fad..24fd3e67 100644 --- a/.github/workflows/gh-aw-duplicate-issue-detector.lock.yml +++ b/.github/workflows/gh-aw-duplicate-issue-detector.lock.yml @@ -34,7 +34,7 @@ # # inlined-imports: true # -# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ce53175ccbf032dd221bb0c3e10ef7eb83e46eaca241e4a0eadd84c74af86e9f"} +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ac05861b4f42b7ed0ac61f61bac11118431a50c6cd14b76b7bc84fb267988a1b"} name: "Duplicate Issue Detector" "on": @@ -355,70 +355,79 @@ jobs: **Related issues detection setting**: __GH_AW_EXPR_7ADFD0BD__ - Classify each promising candidate using the categories below. If related issues detection is disabled (setting is `"false"`), only use the **Clear duplicate** and **Not related** categories — skip the **Highly related** category entirely. + Classify each promising candidate into one of the categories below. If related issues detection is disabled (setting is `"false"`), skip the **Related** category entirely. - **Clear duplicate** — the candidate describes **the same underlying problem or request**: - - Reports the same bug or requests the exact same feature - - The affected component, behavior, and scope are the same - - A fix for the candidate would fully resolve this issue too + **Duplicate** — a fix or resolution for the candidate would **fully resolve this issue too**: + - Reports the same bug with the same root cause, or requests the exact same feature + - The affected component, behavior, and scope match + - One being closed as "done" means the other is also done - **Highly related** *(only when related issues detection is enabled)* — the candidate is closely related but **not** the same issue: - - Covers a very similar area, component, or failure mode + **Related** *(only when detection is enabled)* — **not** the same issue, but may provide useful context or a partial answer: + - Covers a similar area, component, or failure mode but has distinct scope + - Contains discussion, workarounds, or decisions that would help the reporter - One issue is a subset or superset of the other - - Both issues overlap significantly but each has distinct scope or nuance - **Not related** — skip it if: - - The candidate only shares the same general topic area - - The candidate is closed as "wont fix" or "invalid" with no resolution of the underlying issue - - You are uncertain — when in doubt, err on the side of "not related"; if related issues detection is enabled, prefer "highly related" over "duplicate" for borderline overlapping cases + **Skip** a candidate if: + - It only shares the same general topic area + - It is closed as "won't fix" or "invalid" with no useful discussion + - You are uncertain — when in doubt, skip it; prefer **Related** over **Duplicate** for borderline cases ### Step 4: Post Result - Post **exactly one** `add_comment` call total (or `noop` if nothing is found). Do not call `add_comment` more than once. + Post **exactly one** `add_comment` call (or `noop` if nothing is found). Do not call `add_comment` more than once. - **If any duplicates (or highly related issues, when detection is enabled) were found:** + **If any duplicates or related issues were found:** - Call `add_comment` with a single comment combining all findings. Include up to **3 duplicate issues** and, when related issues detection is enabled, up to **3 highly related issues**, each ranked from most to least relevant to the current issue. + Call `add_comment` with a single comment. Include up to **3 duplicates** and up to **3 related issues**, ranked most-to-least relevant. - If both duplicates and highly related issues were found, use this format: + When there are duplicates, start with a recommendation line telling the maintainer whether this issue looks safe to close — for example: *"This issue looks like a duplicate of #123 and may be safe to close."* If there are multiple duplicate candidates, recommend the single best one. + + Example with both duplicates and related issues: ``` - **Possible duplicates** (issues that appear to describe the same problem): - - #{number} — {one concise sentence explaining why this issue overlaps with the candidate} - - #{number} — {one concise sentence explaining why this issue overlaps with the candidate} + This issue looks like a duplicate of #101 and may be safe to close. + + **Possible duplicates:** + - #101 — {why this is the same problem, e.g. "same crash in the auth module when tokens expire"} + - #88 — {why this is the same problem} -
{N} related issues found +
{N} related issues - **Highly related** (separate issues that significantly overlap or share scope): - - #{number} — {one concise sentence explaining the shared scope and the key difference} - - #{number} — {one concise sentence explaining the shared scope and the key difference} + - #204 — {how this could help, e.g. "documents a workaround for the same timeout behavior"} + - #190 — {how this could help}
``` - If only duplicates were found (no highly related issues, or related issues detection is disabled), use this format: + Example with only duplicates: ``` - **Possible duplicates** (issues that appear to describe the same problem): - - #{number} — {one concise sentence explaining why this issue overlaps with the candidate} - - #{number} — {one concise sentence explaining why this issue overlaps with the candidate} + This issue looks like a duplicate of #101 and may be safe to close. + + **Possible duplicates:** + - #101 — {why this is the same problem} ``` - If only highly related issues were found (no duplicates), use this format: + Example with only related issues: ``` -
{N} related issues found +
{N} related issues - **Highly related** (separate issues that significantly overlap or share scope): - - #{number} — {one concise sentence explaining the shared scope and the key difference} - - #{number} — {one concise sentence explaining the shared scope and the key difference} + - #204 — {how this could help} + - #190 — {how this could help}
``` - Put issue references on the main list line so GitHub renders issue status badges. Do NOT repeat issue titles or numbers in justification text. Refer to the current report as **"this issue"** (not by number) and refer to the candidate by "it" or a short description. Use neutral, helpful language — the reporter may not be familiar with the existing issues. Do NOT use `fixes`, `closes`, or `resolves` keywords. + Formatting rules: + - Put `#{number}` on the list line so GitHub renders status badges + - Do NOT repeat issue titles or numbers in justification text + - Refer to the current report as "this issue" and to candidates by "it" or a short description + - Do NOT use `fixes`, `closes`, or `resolves` keywords (they auto-close issues) + - For duplicates, explain **why it is the same problem** + - For related issues, explain **how it could help the reporter** - **If no duplicate (or highly related issue, when detection is enabled) is found:** + **If nothing is found:** Call `noop` with message "No duplicate found for issue #__GH_AW_GITHUB_EVENT_ISSUE_NUMBER__". diff --git a/.github/workflows/gh-aw-duplicate-issue-detector.md b/.github/workflows/gh-aw-duplicate-issue-detector.md index a4ce39cd..dbf41993 100644 --- a/.github/workflows/gh-aw-duplicate-issue-detector.md +++ b/.github/workflows/gh-aw-duplicate-issue-detector.md @@ -100,70 +100,79 @@ For each candidate result, read the title and (if promising) the body to assess **Related issues detection setting**: ${{ inputs.detect-related-issues }} -Classify each promising candidate using the categories below. If related issues detection is disabled (setting is `"false"`), only use the **Clear duplicate** and **Not related** categories — skip the **Highly related** category entirely. +Classify each promising candidate into one of the categories below. If related issues detection is disabled (setting is `"false"`), skip the **Related** category entirely. -**Clear duplicate** — the candidate describes **the same underlying problem or request**: -- Reports the same bug or requests the exact same feature -- The affected component, behavior, and scope are the same -- A fix for the candidate would fully resolve this issue too +**Duplicate** — a fix or resolution for the candidate would **fully resolve this issue too**: +- Reports the same bug with the same root cause, or requests the exact same feature +- The affected component, behavior, and scope match +- One being closed as "done" means the other is also done -**Highly related** *(only when related issues detection is enabled)* — the candidate is closely related but **not** the same issue: -- Covers a very similar area, component, or failure mode +**Related** *(only when detection is enabled)* — **not** the same issue, but may provide useful context or a partial answer: +- Covers a similar area, component, or failure mode but has distinct scope +- Contains discussion, workarounds, or decisions that would help the reporter - One issue is a subset or superset of the other -- Both issues overlap significantly but each has distinct scope or nuance -**Not related** — skip it if: -- The candidate only shares the same general topic area -- The candidate is closed as "wont fix" or "invalid" with no resolution of the underlying issue -- You are uncertain — when in doubt, err on the side of "not related"; if related issues detection is enabled, prefer "highly related" over "duplicate" for borderline overlapping cases +**Skip** a candidate if: +- It only shares the same general topic area +- It is closed as "won't fix" or "invalid" with no useful discussion +- You are uncertain — when in doubt, skip it; prefer **Related** over **Duplicate** for borderline cases ### Step 4: Post Result -Post **exactly one** `add_comment` call total (or `noop` if nothing is found). Do not call `add_comment` more than once. +Post **exactly one** `add_comment` call (or `noop` if nothing is found). Do not call `add_comment` more than once. -**If any duplicates (or highly related issues, when detection is enabled) were found:** +**If any duplicates or related issues were found:** -Call `add_comment` with a single comment combining all findings. Include up to **3 duplicate issues** and, when related issues detection is enabled, up to **3 highly related issues**, each ranked from most to least relevant to the current issue. +Call `add_comment` with a single comment. Include up to **3 duplicates** and up to **3 related issues**, ranked most-to-least relevant. -If both duplicates and highly related issues were found, use this format: +When there are duplicates, start with a recommendation line telling the maintainer whether this issue looks safe to close — for example: *"This issue looks like a duplicate of #123 and may be safe to close."* If there are multiple duplicate candidates, recommend the single best one. + +Example with both duplicates and related issues: ``` -**Possible duplicates** (issues that appear to describe the same problem): -- #{number} — {one concise sentence explaining why this issue overlaps with the candidate} -- #{number} — {one concise sentence explaining why this issue overlaps with the candidate} +This issue looks like a duplicate of #101 and may be safe to close. + +**Possible duplicates:** +- #101 — {why this is the same problem, e.g. "same crash in the auth module when tokens expire"} +- #88 — {why this is the same problem} -
{N} related issues found +
{N} related issues -**Highly related** (separate issues that significantly overlap or share scope): -- #{number} — {one concise sentence explaining the shared scope and the key difference} -- #{number} — {one concise sentence explaining the shared scope and the key difference} +- #204 — {how this could help, e.g. "documents a workaround for the same timeout behavior"} +- #190 — {how this could help}
``` -If only duplicates were found (no highly related issues, or related issues detection is disabled), use this format: +Example with only duplicates: ``` -**Possible duplicates** (issues that appear to describe the same problem): -- #{number} — {one concise sentence explaining why this issue overlaps with the candidate} -- #{number} — {one concise sentence explaining why this issue overlaps with the candidate} +This issue looks like a duplicate of #101 and may be safe to close. + +**Possible duplicates:** +- #101 — {why this is the same problem} ``` -If only highly related issues were found (no duplicates), use this format: +Example with only related issues: ``` -
{N} related issues found +
{N} related issues -**Highly related** (separate issues that significantly overlap or share scope): -- #{number} — {one concise sentence explaining the shared scope and the key difference} -- #{number} — {one concise sentence explaining the shared scope and the key difference} +- #204 — {how this could help} +- #190 — {how this could help}
``` -Put issue references on the main list line so GitHub renders issue status badges. Do NOT repeat issue titles or numbers in justification text. Refer to the current report as **"this issue"** (not by number) and refer to the candidate by "it" or a short description. Use neutral, helpful language — the reporter may not be familiar with the existing issues. Do NOT use `fixes`, `closes`, or `resolves` keywords. +Formatting rules: +- Put `#{number}` on the list line so GitHub renders status badges +- Do NOT repeat issue titles or numbers in justification text +- Refer to the current report as "this issue" and to candidates by "it" or a short description +- Do NOT use `fixes`, `closes`, or `resolves` keywords (they auto-close issues) +- For duplicates, explain **why it is the same problem** +- For related issues, explain **how it could help the reporter** -**If no duplicate (or highly related issue, when detection is enabled) is found:** +**If nothing is found:** Call `noop` with message "No duplicate found for issue #${{ github.event.issue.number }}".