From 2f71a30bd7063ee3808c99355de870a168026dca Mon Sep 17 00:00:00 2001 From: Dai Ha Date: Mon, 7 Sep 2026 05:01:31 +0700 Subject: [PATCH] charter: say what step 8 means when the forge refuses the merge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Step 8 said 'then merge' and nothing about a refusal. fleet01 is the first host to hit that: on akb/kb its lead gets 405 'User not allowed to merge PR' from the API, and main is protected, so merging locally and pushing is refused too. Both routes shut. The charter was telling a lead to do something the forge would not let it do, and that gap was latent in every copy of the block. The amendment keeps the rule that the merge decision is never delegated, while admitting the mechanical merge may not be the lead's to make. The second sentence is the one that earns its keep, and it came from the fleet01 lead rather than from me: never call a PR 'ready to merge' without having read the diff. A refusal is exactly when that shortcut is tempting, because no action is left that forces the lead to look. Without it, a refused merge quietly turns step 8 from 'read it yourself, then merge' into 'forward the reviewer's verdict' — the proxy-delegation the same step forbids two lines earlier. Propagated to the wiki template in the same turn; the sync check in this file's addendum reports 'in sync: True'. --- CLAUDE.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 6361f3a..3fb757f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -94,6 +94,12 @@ below are the procedure — run them in order, every task, not only the big ones 8. **Adjudicate, merge, tear down — yours alone.** Read the diff yourself: fully if it is small, targeted at the reported findings and the risky paths if it is large. Reviewer findings direct your attention; they never substitute for it. Then merge, then `fleet_stop{paneId}`. + **If the forge refuses you the merge** — a protected branch, a token without the grant — the + adjudication is still yours. Read the diff, decide, and hand the operator a merge-ready queue + with the refusal quoted. Never report a PR as merged, and never call one "ready to merge" + without having read the diff yourself. A refusal is exactly when that shortcut is tempting, + because no action is left that forces you to look, and taking it turns this step into + forwarding a reviewer's verdict — which is delegating the merge by proxy, two lines above. **Steps 3 and 4 are separate on purpose** — spawning and sending in one loop is how parallel work silently becomes serial, and it is the most common way this layer is wasted. For the same reason,