From 3f975198105ea1f8427bcaa82bfe128f66a3aac8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 22 May 2026 00:11:40 +0000 Subject: [PATCH 1/3] Initial plan From c3031aaf0ec4b919a0e48aec80f2b3d9a79b8d95 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 22 May 2026 00:20:41 +0000 Subject: [PATCH 2/3] Improve doc-healer handling of closed-unmerged docs PRs Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com> --- .github/workflows/daily-doc-healer.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/daily-doc-healer.md b/.github/workflows/daily-doc-healer.md index bb885d316ad..e39289ca4e8 100644 --- a/.github/workflows/daily-doc-healer.md +++ b/.github/workflows/daily-doc-healer.md @@ -89,7 +89,18 @@ repo:${{ github.repository }} is:issue is:closed label:documentation closed:>=YY For each issue found: - Record the issue number, title, body, and closing date. - Check whether a DDUw-created PR (label `documentation automation`, title prefix `[docs]`) was merged that references or addresses the issue in the same time window. If such a PR exists, DDUw likely already handled it — skip this issue. -- If no DDUw `[docs]` PR references the issue, also search for any merged PR that closes or fixes the issue by number (e.g. `closes #NNN`, `fixes #NNN`, `resolves #NNN` in the PR body). If such a PR is found, verify the documentation change it made is complete and skip the issue. +- After the merged-PR check, search for DDUw `[docs]` PRs (labels `documentation` + `automation`, author `github-actions[bot]`) that were **closed without merging** in the last 30 days and reference the same issue or drift keyword/file path. Use: + +```bash +gh api "search/issues?q=repo:${{ github.repository }}+is:pr+is:closed+is:unmerged+author:github-actions[bot]+label:documentation+label:automation+&per_page=20" +``` + +- A closed-unmerged DDUw `[docs]` PR is a strong rejection signal for that fix direction. Do **not** re-attempt the same docs fix. +- Instead, create a `[doc-healer]` improvement issue that: + 1. Names the rejected PR and the unresolved drift. + 2. Proposes the inverse fix direction (for example, code change instead of docs-only change). + 3. Tags the maintainer for an explicit next-step decision. +- If there is no merged DDUw `[docs]` PR and no closed-unmerged rejection signal, also search for any merged PR that closes or fixes the issue by number (e.g. `closes #NNN`, `fixes #NNN`, `resolves #NNN` in the PR body). If such a PR is found, verify the documentation change it made is complete and skip the issue. If no unaddressed documentation issues are found, call `noop` and stop. @@ -227,4 +238,4 @@ Call `noop` with a summary: - **Follow DDUw style**: Match the tone and format used by existing DDUw pull requests. - **Link everything**: Reference issues and PRs in all output. - **One PR per run**: Bundle all documentation fixes into a single pull request. -- **Exit cleanly**: Always call exactly one safe-output tool before finishing (`create_pull_request`, `create_issue`, or `noop`). \ No newline at end of file +- **Exit cleanly**: Always call exactly one safe-output tool before finishing (`create_pull_request`, `create_issue`, or `noop`). From 34efdc12f52b66379c89bf3806107bc7d5de5f93 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 22 May 2026 00:28:32 +0000 Subject: [PATCH 3/3] Clarify doc-healer rejected PR detection guidance Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com> --- .github/workflows/daily-doc-healer.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/daily-doc-healer.md b/.github/workflows/daily-doc-healer.md index e39289ca4e8..fcbe9da20ce 100644 --- a/.github/workflows/daily-doc-healer.md +++ b/.github/workflows/daily-doc-healer.md @@ -89,17 +89,19 @@ repo:${{ github.repository }} is:issue is:closed label:documentation closed:>=YY For each issue found: - Record the issue number, title, body, and closing date. - Check whether a DDUw-created PR (label `documentation automation`, title prefix `[docs]`) was merged that references or addresses the issue in the same time window. If such a PR exists, DDUw likely already handled it — skip this issue. -- After the merged-PR check, search for DDUw `[docs]` PRs (labels `documentation` + `automation`, author `github-actions[bot]`) that were **closed without merging** in the last 30 days and reference the same issue or drift keyword/file path. Use: +- After the merged-PR check, use the GitHub MCP search tool to find DDUw `[docs]` PR candidates (label `documentation`, label `automation`, author `github-actions[bot]`) that were closed in the last 30 days and reference the same issue or drift keyword/file path. Query pattern: -```bash -gh api "search/issues?q=repo:${{ github.repository }}+is:pr+is:closed+is:unmerged+author:github-actions[bot]+label:documentation+label:automation+&per_page=20" -``` + `repo: is:pr is:closed author:github-actions[bot] label:documentation label:automation ` + + Replace `` with the repository from the Context section (`${{ github.repository }}` at runtime), and replace `` with a stable term tied to the drift (for example: `#NNN`, `"reference/engines.md"`, or a unique feature term from the issue body). +- For each candidate PR returned by search, use `pull_request_read` (`method: get`) and keep only PRs where `merged` is false. +- Before treating it as rejection, inspect closure context with `issue_read` (`method: get` and `method: get_comments`): treat as rejected only when `closed_by` appears in GitHub MCP `list_repository_collaborators` results and comments/reviews indicate intentional direction (or explicit lack of acceptance), not an obvious transient/accidental closure. - A closed-unmerged DDUw `[docs]` PR is a strong rejection signal for that fix direction. Do **not** re-attempt the same docs fix. - Instead, create a `[doc-healer]` improvement issue that: 1. Names the rejected PR and the unresolved drift. 2. Proposes the inverse fix direction (for example, code change instead of docs-only change). - 3. Tags the maintainer for an explicit next-step decision. + 3. Tags `@` (login extracted from the `closed_by` user object in rejected PR issue data) for an explicit next-step decision. If `closed_by` is unavailable, do not suppress retries automatically; escalate uncertainty in the improvement issue body. - If there is no merged DDUw `[docs]` PR and no closed-unmerged rejection signal, also search for any merged PR that closes or fixes the issue by number (e.g. `closes #NNN`, `fixes #NNN`, `resolves #NNN` in the PR body). If such a PR is found, verify the documentation change it made is complete and skip the issue. If no unaddressed documentation issues are found, call `noop` and stop.