Filed by the director seat on the maintainer's ruling on #16502 (decision batch #73, 2026-09-07 — options C + D). Governance text (.claude/skills/**, scripts/check-partof-closing-keyword.mjs) ⇒ the landing PR is on a governed surface and is merged by the maintainer.
What the ruling established
- C: a PR may enter the queue carrying a red on a non-required gate when that gate's own text says the red is expected on a pushed branch and is remedied at merge time (the
Part-of PR must not also close its card gate, RULE 2, header :108-112). The existing rule's premise — "a red on a non-required gate is either a real defect or a broken gate" — has a third case, red by design, and the rule must name it rather than leave every future instance to a decision box.
- D: the repository setting
squash_merge_commit_message moves from COMMIT_MESSAGES to PR_BODY (the maintainer's own change), so the gate's prescribed remedy — the PR body becomes the landing text — happens automatically on every squash instead of depending on someone remembering at the merge button.
The two edits this card makes
.claude/skills/pm-dispatch/SKILL.md — queue entry. Add the third case next to 「入队资格 = PR 上每一个 check 全绿,⛔ 不是 required 子集」: a red on a non-required check is admissible only when (a) the check's own source names the red as by-design on a pushed branch, (b) the check does not run on merge_group, and (c) the PR comment records which check and why. Anything else stays a defect or a broken gate. ⛔ Keep 「队列是唯一被认可的落地路径」 untouched — option A (manual merge) was refused.
scripts/check-partof-closing-keyword.mjs — failure output. Today the output says "pushing rewritten commits re-runs this check" beside "⛔ no amend / rebase / force-push"; the resolution lives only in the file header. Put the header's resolution into the output: the red stays on the branch; it is discharged at merge because the squash message is the PR body (squash_merge_commit_message = PR_BODY); do not rewrite history. Once D is in effect, the output states a fact; before D it must say the merge needs the PR body.
Verification the dispatch will expect
The gate's own test file gains a pin on the new output text; the skill text change is reviewed against the ruling comment on #16502; ⛔ no change to what the gate detects (RULE 2's four counterfactuals stay as they are).
Refs: #16502 (ruling) · PR #16470 (the PR the ruling lets through) · AGENTS.md:464 / :474 / .claude/agents/os-dev.md:63 (the history-rewrite ban that must not be contradicted by a gate's output).
Filed by the director seat on the maintainer's ruling on #16502 (decision batch #73, 2026-09-07 — options C + D). Governance text (
.claude/skills/**,scripts/check-partof-closing-keyword.mjs) ⇒ the landing PR is on a governed surface and is merged by the maintainer.What the ruling established
Part-of PR must not also close its cardgate, RULE 2, header:108-112). The existing rule's premise — "a red on a non-required gate is either a real defect or a broken gate" — has a third case, red by design, and the rule must name it rather than leave every future instance to a decision box.squash_merge_commit_messagemoves fromCOMMIT_MESSAGEStoPR_BODY(the maintainer's own change), so the gate's prescribed remedy — the PR body becomes the landing text — happens automatically on every squash instead of depending on someone remembering at the merge button.The two edits this card makes
.claude/skills/pm-dispatch/SKILL.md— queue entry. Add the third case next to 「入队资格 = PR 上每一个 check 全绿,⛔ 不是 required 子集」: a red on a non-required check is admissible only when (a) the check's own source names the red as by-design on a pushed branch, (b) the check does not run onmerge_group, and (c) the PR comment records which check and why. Anything else stays a defect or a broken gate. ⛔ Keep 「队列是唯一被认可的落地路径」 untouched — option A (manual merge) was refused.scripts/check-partof-closing-keyword.mjs— failure output. Today the output says "pushing rewritten commits re-runs this check" beside "⛔ no amend / rebase / force-push"; the resolution lives only in the file header. Put the header's resolution into the output: the red stays on the branch; it is discharged at merge because the squash message is the PR body (squash_merge_commit_message = PR_BODY); do not rewrite history. Once D is in effect, the output states a fact; before D it must say the merge needs the PR body.Verification the dispatch will expect
The gate's own test file gains a pin on the new output text; the skill text change is reviewed against the ruling comment on #16502; ⛔ no change to what the gate detects (RULE 2's four counterfactuals stay as they are).
Refs: #16502 (ruling) · PR #16470 (the PR the ruling lets through) ·
AGENTS.md:464/:474/.claude/agents/os-dev.md:63(the history-rewrite ban that must not be contradicted by a gate's output).