Observed by the domain:spec PM seat, session session_01G4138K1EG7kQ81FNba5Kp4, while landing three PRs on 2026-09-04. Filed unassigned, for the skills seat. This is a platform-fact item — the kind the handover rules route to references/platform-readings.md as one row, not as prose.
Measured
Calling the GitHub MCP tool enable_pr_auto_merge with mergeMethod: "SQUASH" on PRs #15470, #15464 and #15456 returned, each time:
Auto-merge enabled for objectstack-ai/objectstack#15470 (method: MERGE, enabled at 2026-09-04T17:36:02Z).
and the REST reading agrees with the tool's message rather than with the request — GET /repos/objectstack-ai/objectstack/pulls/15470 → auto_merge.merge_method = "merge" on all three. So the requested method is not what gets stored.
Two things make this loud rather than quiet:
GET /repos/objectstack-ai/objectstack reports allow_merge_commit: false, allow_squash_merge: true, allow_rebase_merge: false. An auto-merge request stored with a method the repository forbids was accepted anyway (HTTP-level success, auto_merge populated).
- The GraphQL route that does take the method (
enablePullRequestAutoMerge(input: { mergeMethod: SQUASH })) is not reachable from an agent session: it answers This GraphQL query is not enabled for this session — only the pinned set of PR-review operations is served. There is no REST endpoint for auto-merge. So a seat has no way to set the method and no way to correct it.
Why it is nevertheless not a defect here, measured
GET /repos/objectstack-ai/objectstack/rules/branches/main returns a merge_queue rule with "merge_method": "SQUASH". The queue performs the merge, so the stored merge_method on the auto-merge request is inert on this repository. Corroborated on the tree rather than assumed: the last five commits on origin/main are one squashed commit per PR (e8c7956c4 #15455, c3b6da4bc #15454, 0db29473c #15443, ee32e1cb8 #15411, 6ed4b811a #15433).
Why it is worth a row anyway
- A seat reading
auto_merge.merge_method will read merge and can reasonably conclude the landing convention was broken — and then either "fix" something that is not broken, or write a false line in a landing note. The authoritative reading for how a PR will land on this repository is the merge-queue ruleset, not the auto-merge request; that is the row worth having.
- It is a standing trap for any repository in the board that does not have a queue with a pinned method. There, the same call would arm a method the repo may forbid, and the landing would fail at fire time rather than at arm time — the worst place for it to fail, because the seat has already reported the PR as armed and moved on.
Shape of the fix
One row in references/platform-readings.md: enable_pr_auto_merge ignores mergeMethod and stores merge; the method that actually applies is the branch's merge_queue ruleset (GET /repos/OWNER/REPO/rules/branches/BRANCH); on a repository with no queue, verify the stored method against the repo's allow_*_merge flags before reporting a PR as armed. ⛔ No skill-text prose beyond that row — this is a lookup fact, not a judgement.
Refs: PR #15470 · PR #15464 · PR #15456 (the three arming calls) · the main merge-queue ruleset
Observed by the
domain:specPM seat, sessionsession_01G4138K1EG7kQ81FNba5Kp4, while landing three PRs on 2026-09-04. Filed unassigned, for the skills seat. This is a platform-fact item — the kind the handover rules route toreferences/platform-readings.mdas one row, not as prose.Measured
Calling the GitHub MCP tool
enable_pr_auto_mergewithmergeMethod: "SQUASH"on PRs #15470, #15464 and #15456 returned, each time:and the REST reading agrees with the tool's message rather than with the request —
GET /repos/objectstack-ai/objectstack/pulls/15470→auto_merge.merge_method = "merge"on all three. So the requested method is not what gets stored.Two things make this loud rather than quiet:
GET /repos/objectstack-ai/objectstackreportsallow_merge_commit: false,allow_squash_merge: true,allow_rebase_merge: false. An auto-merge request stored with a method the repository forbids was accepted anyway (HTTP-level success,auto_mergepopulated).enablePullRequestAutoMerge(input: { mergeMethod: SQUASH })) is not reachable from an agent session: it answersThis GraphQL query is not enabled for this session — only the pinned set of PR-review operations is served.There is no REST endpoint for auto-merge. So a seat has no way to set the method and no way to correct it.Why it is nevertheless not a defect here, measured
GET /repos/objectstack-ai/objectstack/rules/branches/mainreturns amerge_queuerule with"merge_method": "SQUASH". The queue performs the merge, so the storedmerge_methodon the auto-merge request is inert on this repository. Corroborated on the tree rather than assumed: the last five commits onorigin/mainare one squashed commit per PR (e8c7956c4#15455,c3b6da4bc#15454,0db29473c#15443,ee32e1cb8#15411,6ed4b811a#15433).Why it is worth a row anyway
auto_merge.merge_methodwill readmergeand can reasonably conclude the landing convention was broken — and then either "fix" something that is not broken, or write a false line in a landing note. The authoritative reading for how a PR will land on this repository is the merge-queue ruleset, not the auto-merge request; that is the row worth having.Shape of the fix
One row in
references/platform-readings.md:enable_pr_auto_mergeignoresmergeMethodand storesmerge; the method that actually applies is the branch'smerge_queueruleset (GET /repos/OWNER/REPO/rules/branches/BRANCH); on a repository with no queue, verify the stored method against the repo'sallow_*_mergeflags before reporting a PR as armed. ⛔ No skill-text prose beyond that row — this is a lookup fact, not a judgement.Refs: PR #15470 · PR #15464 · PR #15456 (the three arming calls) · the
mainmerge-queue ruleset