carlos / platform Public

CLAUDE.md: agents may merge a PR; the rule is about how work reaches main

The "never take it if offered" wording read as a blanket ban on agents
merging, which is not what the rule means. Paul, 2026-08-16: the rule is that
work must not land on main without a PR — so the PR can carry the context, the
iterations and the several commits a squashed push would flatten — not that a
person must be the one to click merge.

Cost of the old wording, concretely: a session finished a green, mergeable PR,
was told "merge and roll", and had to spend a round trip asking whether the
instruction overrode the file. Judgement still applies — a PR under review,
gated (#62), or wanting a second pair of eyes waits for a person.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Paul Campbell 22d97e57e5ef7b5ea221382226b21baf00f5266f parent c80b67e
1 file changed, +13 −2
  • CLAUDE.md +13 −2
diff --git a/CLAUDE.md b/CLAUDE.md
index fc66ddc9d..d2f8faccb 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -56,8 +56,19 @@ through a PR. That includes doc-only edits, one-line fixes, and revert
commits.
Agents: this rule is on you as much as on people. When work is complete,
-push the branch and open the PR; never offer merging to `main` as an
-option, and never take it if offered. Merging the PR is a human's action.
+push the branch and open the PR — never a local merge, never a direct
+commit, however small the change.
+
+**Merging that PR is fine** (Paul, 2026-08-16, clarifying an earlier
+wording that read as a blanket ban and cost a session a round trip). The
+rule is about how work REACHES `main`, not about whose hand lands it: the
+PR has to exist, so that it can carry the context, the iterations and the
+several commits that a single squashed push to `main` would flatten. Once
+it exists and is green, `gh pr merge` is an ordinary step.
+
+Use the judgement the rest of this file asks for: a PR that is still
+collecting review, that is gated on something (`#62`), or whose diff you
+would want a second pair of eyes on, waits for a person.
The reason is timing, not ceremony. `.github/workflows/ci.yml` triggers on
`pull_request` *and* on `push` to `main`, so a locally merged change does