From 04b6a1fe3a2c2369211fa082dcd584982dc1abdb Mon Sep 17 00:00:00 2001 From: Minsu Lee Date: Sun, 15 Mar 2026 02:00:47 +0900 Subject: [PATCH 1/3] docs(workflow): add reply and resolve step to PR feedback sweep protocol Add step 4 to the feedback sweep: reply explaining resolution, then resolve bot threads only (identified by user.type == "Bot"). Human reviewer threads are left unresolved for the reviewer to confirm. --- WORKFLOW.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/WORKFLOW.md b/WORKFLOW.md index b42777d9..15427771 100644 --- a/WORKFLOW.md +++ b/WORKFLOW.md @@ -261,9 +261,12 @@ When a ticket has an attached PR, run this protocol before moving to `Human Revi 3. Treat every actionable reviewer comment (human or bot), including inline review comments, as blocking until one of these is true: - code/test/docs updated to address it, or - explicit, justified pushback reply is posted on that thread. -4. Update the workpad plan/checklist to include each feedback item and its resolution status. -5. Re-run validation after feedback-driven changes and push updates. -6. Repeat this sweep until there are no outstanding actionable comments. +4. After addressing a comment (code update or pushback reply), reply explaining what was done (`gh api … pulls//comments//replies -f body='…'`). + For **bot threads only** (`user.type == "Bot"` in the comment payload), also resolve the thread (`gh api graphql -f query='mutation { resolveReviewThread(input:{threadId:""}) { thread { id } } }'`). + Leave human reviewer threads unresolved — let the reviewer confirm and resolve themselves. +5. Update the workpad plan/checklist to include each feedback item and its resolution status. +6. Re-run validation after feedback-driven changes and push updates. +7. Repeat this sweep until there are no outstanding actionable comments. ## Blocked-access escape hatch (required behavior) From fa1cf96e83f1f32ef59725094406c959e10ef44f Mon Sep 17 00:00:00 2001 From: Minsu Lee Date: Sun, 15 Mar 2026 02:03:05 +0900 Subject: [PATCH 2/3] docs(workflow): mention comment authors except Copilot in replies Copilot auto-creates fix PRs when mentioned, so exclude it. Other bots and human reviewers should be @mentioned normally. --- WORKFLOW.md | 1 + 1 file changed, 1 insertion(+) diff --git a/WORKFLOW.md b/WORKFLOW.md index 15427771..f8ebc601 100644 --- a/WORKFLOW.md +++ b/WORKFLOW.md @@ -264,6 +264,7 @@ When a ticket has an attached PR, run this protocol before moving to `Human Revi 4. After addressing a comment (code update or pushback reply), reply explaining what was done (`gh api … pulls//comments//replies -f body='…'`). For **bot threads only** (`user.type == "Bot"` in the comment payload), also resolve the thread (`gh api graphql -f query='mutation { resolveReviewThread(input:{threadId:""}) { thread { id } } }'`). Leave human reviewer threads unresolved — let the reviewer confirm and resolve themselves. + @mention the comment author when replying, **except Copilot** — mentioning Copilot triggers unwanted auto-fix PRs. 5. Update the workpad plan/checklist to include each feedback item and its resolution status. 6. Re-run validation after feedback-driven changes and push updates. 7. Repeat this sweep until there are no outstanding actionable comments. From fb19efb9aabe2f1dedc099d049f1ca5d75425d22 Mon Sep 17 00:00:00 2001 From: Minsu Lee Date: Sun, 15 Mar 2026 02:20:34 +0900 Subject: [PATCH 3/3] docs(workflow): clarify reply APIs and thread ID in feedback sweep - Distinguish inline review comment replies from top-level PR comment replies (different API endpoints) - Clarify that resolveReviewThread requires the GraphQL thread ID (from reviewThreads.nodes[].id), not the comment ID --- WORKFLOW.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/WORKFLOW.md b/WORKFLOW.md index f8ebc601..0a04fde8 100644 --- a/WORKFLOW.md +++ b/WORKFLOW.md @@ -261,8 +261,10 @@ When a ticket has an attached PR, run this protocol before moving to `Human Revi 3. Treat every actionable reviewer comment (human or bot), including inline review comments, as blocking until one of these is true: - code/test/docs updated to address it, or - explicit, justified pushback reply is posted on that thread. -4. After addressing a comment (code update or pushback reply), reply explaining what was done (`gh api … pulls//comments//replies -f body='…'`). - For **bot threads only** (`user.type == "Bot"` in the comment payload), also resolve the thread (`gh api graphql -f query='mutation { resolveReviewThread(input:{threadId:""}) { thread { id } } }'`). +4. After addressing a comment (code update or pushback reply), reply explaining what was done: + - Inline review comments: `gh api … pulls//comments//replies -f body='…'` + - Top-level PR comments: `gh api … issues//comments -f body='…'` + For **bot threads only** (`user.type == "Bot"` on the review comment), also resolve the thread using its GraphQL thread ID (from `reviewThreads.nodes[].id`, not the comment `id`): `gh api graphql -f query='mutation { resolveReviewThread(input:{threadId:""}) { thread { id } } }'`. Leave human reviewer threads unresolved — let the reviewer confirm and resolve themselves. @mention the comment author when replying, **except Copilot** — mentioning Copilot triggers unwanted auto-fix PRs. 5. Update the workpad plan/checklist to include each feedback item and its resolution status.