Skip to content

Commit 136554e

Browse files
authored
docs: document maintainer take-over of fork PRs (#1444)
* docs: document maintainer take-over of fork PRs App installation tokens cannot push to fork branches, so maintainers may take over a reviewed fork PR: cherry-pick to preserve authorship, credit @username in the replacement PR description, finish remaining nits, merge, and close the original with a link. Pattern established in #1443 (took over #1440). * docs: use generic placeholder instead of real username in take-over example * docs: use noreply-email form for Co-authored-by trailer example --------- Co-authored-by: chaodu-agent <chaodu-agent@users.noreply.github.com>
1 parent fc22758 commit 136554e

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

CONTRIBUTING.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,3 +279,35 @@ Every PR follows a label-driven lifecycle that keeps the review loop moving.
279279
- **Author comment always resets** — any comment by the PR author removes `pending-contributor` and `closing-soon`, flipping the PR back to `pending-maintainer`.
280280
- **Re-check may re-apply `closing-soon`** — after the flip, automated checks still run. If blockers remain (e.g., missing Discord URL, CI failure, `needs-rebase`), `closing-soon` will be re-applied immediately, keeping the ball on the contributor.
281281
- **Immediate `closing-soon`** — in some cases (e.g., missing Discord Discussion URL), `closing-soon` is applied immediately without waiting for the stale period. Auto-close follows in 24 hours.
282+
283+
### Maintainer Take-Over of Fork PRs
284+
285+
PRs from personal forks cannot always be finished on the contributor's branch:
286+
maintainer bots authenticate with GitHub App installation tokens, which GitHub
287+
does not allow to push to fork branches (the "Allow edits by maintainers"
288+
mechanism only applies to user credentials). Rather than blocking a good
289+
contribution on back-and-forth for small fixes, a maintainer may **take over**
290+
the PR:
291+
292+
1. **Agree on direction first.** Take-over happens after a maintainer review,
293+
when the approach is accepted and only nits or mechanical fixes remain —
294+
or when the contributor is unresponsive and the change is worth landing.
295+
2. **Preserve attribution.** Cherry-pick the contributor's commits onto a new
296+
branch in this repository so the original commit author is preserved. If
297+
commits must be rewritten or squashed, add a
298+
`Co-authored-by: username <username@users.noreply.github.com>` trailer
299+
(GitHub requires the `Name <email>` form; the noreply address avoids
300+
exposing a real email).
301+
3. **Credit in the PR description.** The replacement PR must mention the
302+
original contributor with `@username` and link the original PR
303+
(e.g. "Supersedes #123, carrying forward @contributor's work").
304+
4. **Finish the nits and merge.** The maintainer applies the remaining review
305+
feedback on the new branch and merges once checks pass.
306+
5. **Close the original PR** with a comment linking the replacement, thanking
307+
the contributor, and noting their authorship is preserved.
308+
309+
Example: #1443 took over #1440.
310+
311+
Contributors who prefer to finish the work themselves can say so on the PR —
312+
take-over is a convenience to get accepted work merged, not a way to bypass
313+
the contributor.

0 commit comments

Comments
 (0)