Filed by the skills seat (session session_01MCLBsUgfykL74aU716rzVK, GitHub os-sales) at 2026-09-12T09:17Z, promoting the #17820 dev's noted, not filed (report 5644946032) so the reading does not live only in a report. Class (b): a reference table's declared fact no longer matches the platform.
The three lines
.claude/skills/pm-dispatch/references/platform-readings.md on origin/main f830fa21, lines 47–49 (the PR-lifecycle write section):
47 - undraft 可用路径只有 MCP 这条:传 `draft: false` 落地。
48 - 裸 GraphQL 在会话内被拒,它建议的改用 REST 对 undraft 是错的。
49 - 裸 REST `PATCH /pulls/{n}` 传 `draft: false` 回 200 而无操作 ⇒ 接口性质,池 0 只能等重置。
What the platform does today (measured twice on 2026-09-12, both with read-back)
The session proxy refuses POST /graphql and its refusal names REST routes on the seat's own credential; POST /repos/{owner}/{repo}/pulls/{n}/ccr/ready_for_review flips a draft (read back draft: false, timeline ready_for_review) and PUT …/pulls/{n}/ccr/auto_merge arms auto-merge (timeline added_to_merge_queue). Evidence: #11742 comments 5644551740 (cli seat, 07:46Z, PR #17812) and 5644830981 (this seat, 08:45Z, PR #17816). The sibling table rest-channel.md is corrected by PR #17823 (#17820, at the human terminal).
⇒ line 47 is false (MCP is not the only path); line 48 is false in its second half (the REST route the refusal suggests DOES work for undraft — the ccr one, not the naked PATCH); line 49's first half is still true (the naked PATCH is a no-op) but 「池 0 只能等重置」 is false — the ccr route is the exit. Lines 50 / 58 / 60 (the enable_pr_auto_merge rows) stay true of the MCP channel and are ⛔ not this card's.
Work item
Rewrite lines 47–49 in place so they state today's fact, dated 2026-09-12, with the naked-PATCH no-op reading kept as the ⛔ line: undraft has two channels (ccr REST on the seat credential, MCP update_pull_request); the GraphQL refusal's suggested ccr route works, the naked PATCH does not; a red window on the MCP identity is not a wait. ⛔ In place at the same line count — the file is at its ceiling (449/449); no raise, no new row. ⛔ No ruling on the timeline-actor question (#11742). The 「不可迁移」 wording in rest-channel.md is PR #17823's, ⛔ not touched here.
What this card is NOT
Refs
#17820 / PR #17823 (the rest-channel.md half) · #11742 (5644551740, 5644830981) · platform-readings.md lines 47–49 · scripts/check-skill-line-ratchet.mjs CEILINGS (449).
Generated by Claude Code
Filed by the skills seat (session
session_01MCLBsUgfykL74aU716rzVK, GitHubos-sales) at 2026-09-12T09:17Z, promoting the #17820 dev'snoted, not filed(report 5644946032) so the reading does not live only in a report. Class (b): a reference table's declared fact no longer matches the platform.The three lines
.claude/skills/pm-dispatch/references/platform-readings.mdonorigin/mainf830fa21, lines 47–49 (the PR-lifecycle write section):What the platform does today (measured twice on 2026-09-12, both with read-back)
The session proxy refuses
POST /graphqland its refusal names REST routes on the seat's own credential;POST /repos/{owner}/{repo}/pulls/{n}/ccr/ready_for_reviewflips a draft (read backdraft: false, timelineready_for_review) andPUT …/pulls/{n}/ccr/auto_mergearms auto-merge (timelineadded_to_merge_queue). Evidence: #11742 comments 5644551740 (cli seat, 07:46Z, PR #17812) and 5644830981 (this seat, 08:45Z, PR #17816). The sibling tablerest-channel.mdis corrected by PR #17823 (#17820, at the human terminal).⇒ line 47 is false (MCP is not the only path); line 48 is false in its second half (the REST route the refusal suggests DOES work for undraft — the
ccrone, not the nakedPATCH); line 49's first half is still true (the nakedPATCHis a no-op) but 「池 0 只能等重置」 is false — theccrroute is the exit. Lines 50 / 58 / 60 (theenable_pr_auto_mergerows) stay true of the MCP channel and are ⛔ not this card's.Work item
Rewrite lines 47–49 in place so they state today's fact, dated 2026-09-12, with the naked-
PATCHno-op reading kept as the ⛔ line: undraft has two channels (ccrREST on the seat credential, MCPupdate_pull_request); the GraphQL refusal's suggestedccrroute works, the nakedPATCHdoes not; a red window on the MCP identity is not a wait. ⛔ In place at the same line count — the file is at its ceiling (449/449); no raise, no new row. ⛔ No ruling on the timeline-actor question (#11742). The 「不可迁移」 wording inrest-channel.mdis PR #17823's, ⛔ not touched here.What this card is NOT
ccrREST routes now do both on the seat's own credential (measured twice on 2026-09-12) #17820 (therest-channel.mdhalf, already at the human terminal). Dedupe: the 32 opendomain:skillscards grepped forundraftand forplatform-readings∧ (ccr∨GraphQL) — hits [finding] rest-channel.md rows 1–2 say the draft flip and auto-merge are GraphQL-only with no fallback — the proxy'sccrREST routes now do both on the seat's own credential (measured twice on 2026-09-12) #17820 (the sibling), [PM decision] skills lane batch 9 — platform-readings.md third increment: raise the ceiling by the measured +39 (358 → 397); and the MCP write-pool quota sentence collision #15275 (a ceiling-raise decision on hold), PM corpus audit (maintainer-directed): classify every instruction line — keep / duplicate / demote / delete — then rewrite and re-lock every ratchet #13597 (the corpus audit anchor); control: 6 open lane cards mentionplatform-readings, so the corpus was read. [finding] The "pair every zero with a control" rule does not say the control must be scoped to the same thing as the claim — three misses in one shift, every one returning a reassuring answer #17569's rider is a different fact (git greppathspec).Refs
#17820 / PR #17823 (the
rest-channel.mdhalf) · #11742 (5644551740, 5644830981) ·platform-readings.mdlines 47–49 ·scripts/check-skill-line-ratchet.mjsCEILINGS (449).Generated by Claude Code