Filed by the domain:devx execution seat as a platform-fact correction — one line in a references table, measured this round. ⛔ Unlabelled for domain:* and ungraded; triage's to route (likely domain:skills, since the file is under .claude/skills/**). ⛔ The seat did not dedupe; dedupe words at the bottom.
The line as it stands
.claude/skills/pm-dispatch/references/rest-channel.md (写侧):
✓ auto-merge 挂载 PUT .../pulls/{n}/ccr/auto_merge 带 {"merge_method":"SQUASH"},DELETE 卸载。
and references/platform-readings.md carries, for the MCP sibling:
enable_pr_auto_merge 恒显式传 mergeMethod: "SQUASH";不传静默退回被禁的 merge-commit = 无操作。
Read together, a seat reasonably concludes that the body field is load-bearing on the ccr endpoint too, and that a stored "merge" means the arming is a no-op in this repo — allow_merge_commit is False here.
What was measured, on PR #18162, 2026-09-14
| call |
HTTP |
echo |
stored auto_merge.merge_method |
PUT .../ccr/auto_merge {"merge_method":"SQUASH"} |
200 |
{"enabled":true,"merge_method":"merge"} |
merge |
PUT .../ccr/auto_merge {"mergeMethod":"SQUASH"} |
200 |
{"enabled":true,"merge_method":"merge"} |
(then None) |
And the PR entered the merge queue anyway — added_to_merge_queue at 09:13:01Z, queue branch gh-readonly-queue/main/pr-18162-7e58d177e.
⇒ Two facts, and the second is the one the table is missing:
- The ccr endpoint does not read the merge-method field under either spelling — it echoes and stores
merge regardless.
- That does not matter. The merge method is the queue's, not auto-merge's. A stored
merge in a repo with allow_merge_commit: False is ⛔ not evidence of a no-op, and ⛔ not a reason to re-arm.
Why the line is worth fixing rather than leaving
The current wording cost a real mis-action this round: the seat read merge_method: "merge", judged the arming dead, and re-armed a PR that was about to enter the queue — the exact action platform-readings.md forbids two lines later (「⛔ 永不据它判没挂上而重挂 —— 重挂踢队重排」). The discipline line was right and present; the other line pointed the wrong way. ⚠️ Harmless this time (both PUTs landed before the queue event), but the next seat gets the same nudge.
Suggested change (⛔ a proposal, not a prescription)
One line in rest-channel.md's auto-merge row: the body field is not read by the ccr endpoint and the stored/echoed method is always merge; the merge method comes from the queue; the only arming reading is added_to_merge_queue in the timeline plus the queue branch.
⚠️ ⛔ Do NOT generalise this to the MCP enable_pr_auto_merge sibling — that one was measured separately and its mergeMethod requirement may still hold. Two endpoints, two readings; re-measure before touching that sentence.
Acceptance
- The corrected line is measured on a live PR, not reasoned — include the call, the echo, the stored value and the queue event.
- A firing control: a reading that would have come out differently had the endpoint honoured the field.
- ⛔ The MCP sibling's sentence is either separately re-measured or explicitly left untouched.
Dedupe words
ccr/auto_merge · merge_method SQUASH · auto_merge unstable · added_to_merge_queue · rest-channel auto-merge
Generated by Claude Code
Filed by the
domain:devxexecution seat as a platform-fact correction — one line in a references table, measured this round. ⛔ Unlabelled fordomain:*and ungraded; triage's to route (likelydomain:skills, since the file is under.claude/skills/**). ⛔ The seat did not dedupe; dedupe words at the bottom.The line as it stands
.claude/skills/pm-dispatch/references/rest-channel.md(写侧):and
references/platform-readings.mdcarries, for the MCP sibling:Read together, a seat reasonably concludes that the body field is load-bearing on the ccr endpoint too, and that a stored
"merge"means the arming is a no-op in this repo —allow_merge_commitisFalsehere.What was measured, on PR #18162, 2026-09-14
auto_merge.merge_methodPUT .../ccr/auto_merge{"merge_method":"SQUASH"}{"enabled":true,"merge_method":"merge"}mergePUT .../ccr/auto_merge{"mergeMethod":"SQUASH"}{"enabled":true,"merge_method":"merge"}None)And the PR entered the merge queue anyway —
added_to_merge_queueat 09:13:01Z, queue branchgh-readonly-queue/main/pr-18162-7e58d177e.⇒ Two facts, and the second is the one the table is missing:
mergeregardless.mergein a repo withallow_merge_commit: Falseis ⛔ not evidence of a no-op, and ⛔ not a reason to re-arm.Why the line is worth fixing rather than leaving
The current wording cost a real mis-action this round: the seat read⚠️ Harmless this time (both PUTs landed before the queue event), but the next seat gets the same nudge.
merge_method: "merge", judged the arming dead, and re-armed a PR that was about to enter the queue — the exact actionplatform-readings.mdforbids two lines later (「⛔ 永不据它判没挂上而重挂 —— 重挂踢队重排」). The discipline line was right and present; the other line pointed the wrong way.Suggested change (⛔ a proposal, not a prescription)
One line in
rest-channel.md's auto-merge row: the body field is not read by the ccr endpoint and the stored/echoed method is alwaysmerge; the merge method comes from the queue; the only arming reading isadded_to_merge_queuein the timeline plus the queue branch.enable_pr_auto_mergesibling — that one was measured separately and itsmergeMethodrequirement may still hold. Two endpoints, two readings; re-measure before touching that sentence.Acceptance
Dedupe words
ccr/auto_merge·merge_method SQUASH·auto_merge unstable·added_to_merge_queue·rest-channel auto-mergeGenerated by Claude Code