Skip to content

Land the verified REST-operations mapping table as a references fact sheet — every fleet operation's channel (REST endpoint / GraphQL-only / git zero-quota), session-verified 2026-08-23 #11375

Description

@claude

Authorized: maintainer 2026-08-23, live PM chat, verbatim: 「可走 REST 的操作清单,同意立卡」. Filed by the skills seat (session 5213b871-5164-5bc3-8874-28b336bbcd40), self-triaged under the skills-lane exception. Sibling of the quota trio #11364/#11365/#11366 (one ruling stroke earlier the same day): #11364 flips the POLICY (REST as default read path); this card lands the CONTENT — the concrete operation-to-channel mapping the policy needs to be executable without rediscovery.

What lands

A new small references file (suggested: references/rest-channel.md, own ratchet ceiling at landed count, headroom 0 — same Q1=A precedent as state-machine.md / contract-review.md), carrying the mapping below; platform-readings.md's API-quota section gets a one-line pointer (paid inside #11364's rewrite of the same section — fold candidate, see Serial). Every ✓ row was executed in a real session on 2026-08-23; rows must carry that provenance date per platform-readings conventions.

Read side (all migratable — the MCP list/search family is the GraphQL burner)

  • ✓ List by label/state: GET /repos/{o}/{r}/issues?state=open&labels=a,b&per_page=Nlabels= is true AND (MCP list_issues array is OR)
  • ✓ Card / PR metadata: GET .../issues/{n} · GET .../pulls/{n} (assignees, labels, body all present)
  • ✓ Full comment thread: GET .../issues/{n}/comments?per_page=100
  • ✓ Timeline events: GET .../issues/{n}/timeline (cross-refs, added_to_merge_queue, ready_for_review)
  • ✓ PR diff / files: GET .../pulls/{n} with Accept application/vnd.github.diff · .../pulls/{n}/files
  • ✓ File at ref: GET .../contents/{path}?ref=... (raw accept)
  • ✓ Ancestry / compare: GET .../compare/{base}...{head}
  • ✓ Checks / workflows: GET .../commits/{sha}/check-runs · .../actions/runs
  • ✓ Quota self-read: GET /rate_limit (zero-cost)

Write side (all migratable)

  • ✓ Comments: POST/PATCH .../issues/{n}/comments
  • ✓ Labels: additive POST .../issues/{n}/labels + targeted DELETE .../labels/{name} — safer than MCP issue_write whole-set replace (cannot strip a concurrent seat's labels)
  • ✓ Create issue with labels: POST .../issues · edit body/state: PATCH · assign: POST .../assignees
  • ✓ Request reviewers: POST .../pulls/{n}/requested_reviewers · open PR: POST .../pulls

NOT migratable (the only four — plan around them)

  1. Draft → ready flip: GraphQL-only mutation; the egress proxy serves only the pinned PR-review GraphQL set (measured refusal). Outage path: wait for MCP recovery or a human clicks.
  2. Auto-merge / queue enqueue: GraphQL mutation (MCP enable_pr_auto_merge).
  3. Semantic search: /search/* blocked by the egress proxy by design (repo-scoped paths only); fallback = REST list + local grep (existing discipline).
  4. Projects field_values: GraphQL-only — not needed by the fleet; the MCP server's unconditional fetch of it is the leak, not a requirement.

Third bucket — git zero-quota equivalents (ask git before REST)

Branch existence (ls-remote), merge-queue branches, landing-by-content (git grep ... origin/main), squash verification — already doctrine rows in platform-readings; the new file points at them rather than restating.

Boundary

The container curl channel = App installation token (independent 15,000/hr REST bucket); the egress proxy admits repo-scoped paths (/repos/{o}/{r}/...) plus /rate_limit only — org-level endpoints unverified.

Serial constraint & fold

Queues BEHIND the #11086 restructuring PRs (pm-dispatch hot-file chain). Strong fold candidate with #11364 (+#11366): same quota family, same ruling day, overlapping file surface — the claiming seat must answer fold-or-serial per the five-gate test at claim time; folding this card's table with #11364's policy flip into one PR is the likely PASS shape.

Tier: references-only ⇒ opus build + contract-review-tier acceptance.


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions