Skip to content

Commit 448a224

Browse files
authored
Merge pull request #199 from netresearch/feat/retro-superseded-pr-and-copilot-quota
docs(pull-request-workflow): superseded-PR conflicts and silent Copilot-request drops
2 parents 6d653a1 + 332af4c commit 448a224

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

skills/git-workflow/references/pull-request-workflow.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,43 @@ command. The month is in the **filename**, so the marker stops applying at the
152152
reset rather than being aged out; delete the file to undo a verdict recorded in
153153
error.
154154

155+
The quota wall has a second, earlier face: the `requested_reviewers` POST
156+
itself can be **silently dropped** — HTTP 200, but the response's
157+
`requested_reviewers` array is empty and a read-back seconds later still shows
158+
no pending request, with no errored review anywhere yet. That empty read-back
159+
right after the POST is the earliest quota tell there is; it looks like "the
160+
bot will pick it up asynchronously" and is not (five requests across four repos
161+
were swallowed this way on 2026-08-18 before a later errored review named the
162+
quota). Read `requested_reviewers` back after the **first** request of a
163+
session; empty means stop requesting — everywhere — and go straight to the
164+
self-review path above.
165+
166+
## A Rebase Conflict Can Mean the PR Is Superseded
167+
168+
When `NEXT: rebase` turns into a conflict, look at **what the main side of the
169+
hunk contains** before resolving anything. If main's side already implements
170+
what the PR implements — the same feature, ported independently or landed via a
171+
sibling PR — the conflict is not a merge problem, it is the discovery that the
172+
PR is superseded. This is the normal fate of a fix PR that sat for days while
173+
the incident it came from was also worked elsewhere.
174+
175+
The reflexive resolution — keep the PR's side, it is what you came to merge —
176+
is exactly wrong here: main's version has usually moved on (hardening, an extra
177+
call, review feedback the PR never saw), and preferring the PR side silently
178+
**reverts** that. Observed 2026-08-18 on `netresearch/jira-skill` #194: main's
179+
copy of the identical stdin feature had a mention-gate call integrated
180+
(`check_mentions_cli`); taking the PR's hunk would have merged green and
181+
dropped the gate.
182+
183+
What to do instead: diff the PR's intent against current main and keep only the
184+
delta main lacks (`git reset --hard origin/main`, re-apply just that delta,
185+
reword the commit) — or close the PR outright if nothing remains. Either way,
186+
update the PR title and body to describe what it now is; a re-scoped PR wearing
187+
its old description misleads its reviewer. And when reviewing a PR that is more
188+
than a couple of days old, check `mergeable`/`mergeStateStatus` first — a
189+
`CONFLICTING` docs-or-fix PR is a "has this landed already?" prompt before it
190+
is a content-review task.
191+
155192
## Check the Default Branch Before Operating
156193

157194
Not every repo uses `main` — older repos often use `master`, and some use

0 commit comments

Comments
 (0)