@@ -1018,6 +1018,41 @@ Other ruleset rules to expect: `required_approving_review_count`, `required_revi
10181018> about merge-readiness — see the Merge-Gate Command above plus this ruleset
10191019> call. Discovering gates one round-trip at a time is the anti-pattern.
10201020
1021+ ## Self-Authored PR Merge (Permission Classifier)
1022+
1023+ When you drive your own PR to merge (e.g. via ` /pr-finish ` ), the auto-mode
1024+ permission classifier blocks self-merges and admin self-bypass — a self-authored
1025+ merge is treated as requiring a human. Do ** not** attempt the merge twice and
1026+ then bounce to the human; two denials read as stalling.
1027+
1028+ - Recognize up front that finishing a self-authored PR will hit the classifier,
1029+ and settle the merge path ** before** starting.
1030+ - For archive/cleanup tasks, take the local-clone + signed-commit + PR path from
1031+ the start — not a Contents-API commit or an admin bypass the classifier will
1032+ reject.
1033+ - If a human merge is genuinely required, ask ** one** structured question up
1034+ front rather than discovering the block via two denials.
1035+
1036+ ## Shared-Account and Parallel-Job PR Races
1037+
1038+ When several agent jobs run under the ** same** git/GitHub identity (a shared
1039+ bot/CI account), a PR can be force-pushed or merged out from under your review or
1040+ take-over by a parallel job — and you cannot prove your own job didn't do it.
1041+ Defend:
1042+
1043+ 1 . ** Snapshot head + merge state** at the start of any review/take-over, and
1044+ re-check immediately before acting; abort or rebase if it moved:
1045+
1046+ ``` bash
1047+ gh pr view < NUMBER> --json headRefOid,state,mergeStateStatus
1048+ ```
1049+
1050+ 2 . ** Never trust a pre-existing shared worktree** for review/fix — a parallel job
1051+ may churn or delete it mid-task. Create your own isolated worktree off a
1052+ freshly-fetched ` origin/main ` .
1053+ 3 . ** ` gh pr diff ` vs the file you ` Read ` disagree?** The branch was force-pushed
1054+ between calls — re-fetch and re-derive from the committed state on origin.
1055+
10211056## Signed Commits with Rebase Merge
10221057
10231058### The Problem
0 commit comments