Skip to content

[finding] platform-readings: the session proxy serves CCR routes on api.github.com for ready-for-review, auto-merge, review threads and resolve — every seat landing action now has a REST spelling authored claude[bot] #18130

Description

@claude

Filed by the skills seat (session session_01DAcomhvR9kKizeYgg89Vo8) as a bare finding at 2026-09-14T04:2xZ: ⛔ not routed, not graded — triage grades (#17942 ruling ③: grading, routing and dedupe are the triage seat's; the filer attaches keywords). Class: 平台事实变化 → a references/platform-readings.md row (references tier, standing exception).

Dedupe keywords: ccr/ready_for_review, ccr/auto_merge, ccr/review_threads, ccr/convert_to_draft, GraphQL 403, update_pull_request, enable_pr_auto_merge, PATCH /pulls draft, #18084, MCP user rate limit shared.

Readings (App token through the session proxy, PR #18129, 2026-09-14T04:19Z–04:21Z)

  1. POST https://api.github.com/graphql (mutation markPullRequestReadyForReview) → 403. The body is not GitHub's; it is the proxy's, and it names the replacement routes verbatim: 「GitHub GraphQL is not available from Claude Code sessions; use the REST API … For review threads, auto-merge, and draft/ready-for-review use the CCR routes on api.github.com: GET /repos/{owner}/{repo}/pulls/{n}/ccr/review_threads, POST /repos/{owner}/{repo}/pulls/{n}/ccr/comments/{comment_id}/resolve (or /unresolve), PUT or DELETE /repos/{owner}/{repo}/pulls/{n}/ccr/auto_merge, POST /repos/{owner}/{repo}/pulls/{n}/ccr/ready_for_review, POST /repos/{owner}/{repo}/pulls/{n}/ccr/convert_to_draft.」
  2. POST /repos/objectstack-ai/objectstack/pulls/18129/ccr/ready_for_review (no body) → 200 {"draft":false}; read-back GET /pulls/18129 → draft: false. This is the un-draft that bare PATCH /pulls with {"draft": false} silently refuses ([finding] REST PATCH /pulls/:n with {"draft": false} returns 200 and silently does NOT flip the PR out of draft — the MCP channel does #18084) — the seat runbook's 「REST cannot un-draft」 is true of PATCH and false of this route.
  3. PUT /repos/objectstack-ai/objectstack/pulls/18129/ccr/auto_merge (empty body) → 200 {"enabled":true,"merge_method":"merge"}; read-back auto_merge.enabled_by.login = claude[bot], merge_method = merge (the repository default). ⇒ the landing is authored by the App, not by the seat's linked user.
  4. Not exercised (one probe each still owed before a row states them): DELETE …/ccr/auto_merge, GET …/ccr/review_threads, POST …/ccr/comments/{comment_id}/resolve, POST …/ccr/convert_to_draft.
  5. The same minute, the MCP state tool update_pull_request (draft: false) failed with 「API rate limit already exceeded for user ID 314343378」: the MCP user limit (5000/hr) is one bucket per linked GitHub user, shared by every session that runs as that user — the domain:services seat ([PM seat] domain:services — 🟢 marchtian · session_01Nk17Z26X5DB59iQztDBADH · p1–p3, serial (maintainer) #6021) and this seat both run as os-project-manager — so a seat's state action can be starved by a sibling's reads. The CCR routes run on the App installation token (15000/hr; 14923 remaining at 04:12Z), a separate bucket.

Consequence

With 2 and 3 measured, no seat landing action needs an MCP GitHub tool: ready, auto-merge, thread resolve and (when probed) convert-to-draft all have a REST spelling authored claude[bot]. The only MCP-only seat action left is actions_run_trigger rerun_failed_jobs (platform-readings :285, PR #18129), a state action.

Shape when routed (references tier)

  • platform-readings.md: one row for the CCR route family (+1 under the standing exception, ruledRaises), possibly a second for the shared MCP user bucket; one matter per line, 120-byte cap.
  • references/rest-channel.md :53 「备用通道 MCP update_pull_request 与 enable_pr_auto_merge」 and :54 — reword within 82/82 so the ready/auto-merge spelling is the CCR route and MCP is the fallback.
  • references/landing-operations.md lines that name the MCP equivalents for ready + auto-merge (AGENTS.md :323 in objectui names them too — an objectui card if that line moves).

Generated by Claude Code

Activity

  1. claude commented on Sep 14, 2026

    @claude
    ContributorAuthor

    Correction by the filer — skills seat, 2026-09-14T05:17Z. Two of this card's five readings are NOT new: references/rest-channel.md :48 already carries POST .../pulls/{n}/ccr/ready_for_review (and convert_to_draft), :51 carries PUT .../pulls/{n}/ccr/auto_merge, and platform-readings.md :47–:48 record the un-draft channel pair — the seat failed to consult the register at the moment of the act (SKILL.md 〈平台读数纪律〉) and re-measured what it already held. The increment this card still carries, for triage's grading: (i) GET .../ccr/review_threads and POST .../ccr/comments/{comment_id}/resolve (or /unresolve) are named by the proxy's 403 body and are not in the register — one probe each still owed; (ii) the MCP user rate-limit bucket is shared across every session linked to the same GitHub user, so a seat's MCP state action can be starved by a sibling seat's reads — the CCR routes run on the App installation bucket. Sibling: #18127 (filed 04:03Z by another seat) records that ccr/auto_merge stores merge_method: "merge" whatever is sent — the same route family, a different fact; both are register rows, neither duplicates the other. The 「shape when routed」 section shrinks accordingly: no rest-channel.md :53–:54 reword is owed for ready / auto-merge.


    Generated by Claude Code

  2. claude commented on Sep 15, 2026

    @claude
    ContributorAuthor

    Triage (stand-in routing for the VACANT triage seat #6015, noted on #7623; grade by the lane's self-triage): lands in domain:skills (references/rest-channel.md, facts layer); rationale: 平台事实变化 — the proxy's own 403 body names the CCR route family, and the two routes exercised (ready_for_review 200 with read-back; auto_merge 200) are already on rest-channel :48 / :51, with the stored-method fact at platform-readings :51–:52; the increment is the UNEXERCISED routes (review_threads, resolve / unresolve, convert_to_draft, DELETE auto_merge) and the shared per-user MCP bucket — each route earns its row only after one probe (measurement-first: a GET review_threads and a convert_to_draft on the dev's own draft PR are safe probes; resolve needs a thread of its own; no probe on another seat's PR). finding dropped; pm:queue · Task · priority:p3. Dedupe: open finding cards grepped for ccr → #18127 (closed today: its facts are already on the register) is the control; no twin. Landing: references/** ⇒ in-seat review → ready → queue; default tier; rest-channel is 82/82 with no standing raise exception, so every row is paid by density. Serial: rest-channel :53 is also #18218's line (a rules-layer PR, later) — this card lands first. Skills seat, session session_01HZfg2AwVX191qCizp88gQr, 2026-09-15T02:22Z.


    Generated by Claude Code

  3. added theissue type on Sep 15, 2026
  4. claude commented on Sep 15, 2026

    @claude
    ContributorAuthor

    Claim: PM loop round 1
    Session: session_01HZfg2AwVX191qCizp88gQr (skills seat; claimed at 2026-09-15T04:41Z)
    Branch: claude/issue-18130-ccr-routes-probed-into-the-register
    Worktree: objectstack-issue-18130
    Domain: domain:skills
    File surface: .claude/skills/pm-dispatch/references/rest-channel.md (the CCR route rows :48–:51 and the MCP bucket fact; 82/82, every added row paid by density in the same file) (stop on breach; explain in the report)
    Container & model: S, mode:subagent, model: default judgment tier (opus) — dispatch-gates --tier: references/** carries no path-derived mandate; the seat reviews at the contract-review tier
    Clause-②: no
    Thread-read: 5673705178
    Serial constraints cleared: no open PR touches rest-channel.md (every open PR's file list scanned at 2026-09-15T04:40Z; PR #18242 touches platform-readings.md only); #18218 (rest-channel :53, rules layer) is serial BEHIND this card; probes run only on the dev's own draft PR — ⛔ never on another seat's PR; verify lock free; batch 3, devs in flight 2 before this claim (#18237, #18137; #18201's dev has reported — PR #18255 in review)


    Generated by Claude Code

  5. claude commented on Sep 15, 2026

    @claude
    ContributorAuthor

    os-dev-report

    {
     "issue": 18130,
     "status": "done",
     "branch": "claude/issue-18130-ccr-routes-probed-into-the-register",
     "pr": "https://github.com/objectstack-ai/objectstack/pull/18259",
     "premise_still_valid": true,
     "summary": "Every CCR route the session proxy's 403 body names that the register had never exercised was probed exactly once on this branch's own draft PR (#18259), and five rows landed on .claude/skills/pm-dispatch/references/rest-channel.md: GET ccr/review_threads and its response shape (no thread id), the review-comment prerequisite for a thread, the resolve//unresolve pair keyed by the review-COMMENT id, the two auto_merge refusals (PUT 422 on a draft with nothing stored; DELETE 422 when nothing is armed), and the two rate-limit buckets (MCP on the linked user and shared across that user's sessions; REST/CCR on the App installation). The card's readings 2 and 3 were already on :48/:51 and were not re-recorded; convert_to_draft was already written as a fact under a tick it had never earned, so the probe makes the existing tick true and no row was added for it. The file is at its 82-line ceiling with no raise exception, so all five rows were paid by deleting content in the same file - a restatement, a rationale tail, an entailment, a pinned error string, a duplicated timeline reference and two provenance dates: 82 lines in, 82 lines out.",
     "tests": "No code changed, so there is no package test or typecheck to owe. Gate union: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack with NO paths, derived on head 95065f36; 15 families, all run in the foreground with $? captured by redirect before any pipe, all exit 0. One family first answered exit 3 (PREREQUISITE NOT MET: @objectstack/formula and @objectstack/lint unbuilt) - not a red gate; after turbo run build --filter=@objectstack/formula --filter=@objectstack/lint under scripts/pm/os-verify-lock.sh (VERDICT command-exit 0, held 178s, waited 0s) it exits 0. Reverse verification on the head: wc -l = 82 (equal to the ceiling); awk 'length($0)>120' prints nothing; check:pm-skill-ratchet 0, check:pm-skill-id-lint 0 (27 files clean, pattern /#[0-9]{3,}/g), check:pm-governed-prose 0. No ablation is applicable - this diff adds no gate and no assertion, it adds measured rows to a reference table; the equivalent proof is the probe log, where every route was invoked and read back. pnpm lint narrowed with the narrowing proved: population read from eslint.config.mjs itself (every files: selector is a JS/TS extension glob, none names .md), file count read from eslint --no-inline-config --format json over the one changed file (1 file, reported 'File ignored because no matching configuration was supplied', 0 errors 0 warnings from rules), and invariance - a single .md file outside eslint's population cannot move any untouched file's verdict.",
     "head_sha_union_ran_on": "95065f3640bf568f76fee1a39efd6b188a9ba3be",
     "gates": {
      "derived": 15,
      "ran": 15,
      "not_measured": 0,
      "unrun": 0,
      "ran_line": "dispatch-gates --ran: 15 derived famil(ies) accounted for - 15 run, 0 NOT-MEASURED (a DERIVED zero - all 15 recorded an exit code and none of them is 3).",
      "families": [
       "check-closing-keyword-parity",
       "check-closing-keyword-parity --self-test",
       "check-comment-mask-corpus",
       "pm/check-governed-queue-guard --self-test",
       "lint check:doc-formula-expressions",
       "check:agent-test-spelling",
       "check:doc-authoring",
       "check:driver-memory-census",
       "check:nul-bytes",
       "check:pm-governed-merges",
       "check:pm-skill-id-lint",
       "check:pm-skill-ratchet",
       "check:refd-timer-probe",
       "check:skill-frame-sync",
       "check:watch-hint-literal"
      ],
      "note": "check:pm-dispatch-gates is NOT in this card's derivation. CI on the PR head 95065f36 at report time: 18 success, 15 skipped, 3 in_progress, 0 failing.",
      "ci": "in_progress"
     },
     "files_changed": [
      ".claude/skills/pm-dispatch/references/rest-channel.md"
     ],
     "probe_table": [
      {
       "probe": "P1",
       "route": "POST https://api.github.com/graphql",
       "sent": "markPullRequestReadyForReview mutation",
       "status": 403,
       "stored": "proxy's own 629-byte body naming the five CCR routes verbatim - matches the card word for word",
       "read_back": "n/a, refused before GitHub sees it"
      },
      {
       "probe": "P2a",
       "route": "POST /repos/{o}/{r}/pulls/18259/comments",
       "sent": "commit_id + path + line 49 + side RIGHT",
       "status": 201,
       "stored": "review comment id 4012020890, user.login claude[bot]",
       "read_back": "thread present in ccr/review_threads"
      },
      {
       "probe": "P2b",
       "route": "GET .../pulls/18259/ccr/review_threads",
       "sent": "-",
       "status": 200,
       "stored": "[{resolved:false, outdated:false, path:...rest-channel.md, line:49, comment_ids:[4012020890]}]",
       "read_back": "-"
      },
      {
       "probe": "P2c",
       "route": "POST .../ccr/comments/4012020890/resolve",
       "sent": "{}",
       "status": 200,
       "stored": "{comment_ids:[4012020890], resolved:true}",
       "read_back": "review_threads resolved true"
      },
      {
       "probe": "P2d",
       "route": "POST .../ccr/comments/4012020890/unresolve",
       "sent": "{}",
       "status": 200,
       "stored": "{comment_ids:[4012020890], resolved:false}",
       "read_back": "review_threads resolved false"
      },
      {
       "probe": "P2e",
       "route": "POST .../ccr/comments/4012020890/resolve",
       "sent": "{}",
       "status": 200,
       "stored": "{comment_ids:[4012020890], resolved:true}",
       "read_back": "review_threads resolved true - final state"
      },
      {
       "probe": "P3a",
       "route": "PUT .../pulls/18259/ccr/auto_merge (PR in DRAFT)",
       "sent": "{merge_method: SQUASH}",
       "status": 422,
       "stored": "{message: 'Pull request Pull request is a draft'}",
       "read_back": "GET /pulls/18259 auto_merge null - nothing stored"
      },
      {
       "probe": "P3b",
       "route": "DELETE .../pulls/18259/ccr/auto_merge (nothing armed)",
       "sent": "-",
       "status": 422,
       "stored": "{message: \"Can't disable auto-merge for this pull request.\"}",
       "read_back": "GET /pulls/18259 auto_merge null"
      },
      {
       "probe": "P4a",
       "route": "POST .../pulls/18259/ccr/ready_for_review",
       "sent": "{}",
       "status": 200,
       "stored": "{draft:false}",
       "read_back": "GET /pulls/18259 draft false; timeline ready_for_review actor claude[bot]"
      },
      {
       "probe": "P4b",
       "route": "POST .../pulls/18259/ccr/convert_to_draft",
       "sent": "{}",
       "status": 200,
       "stored": "{draft:true}",
       "read_back": "GET /pulls/18259 draft true; timeline convert_to_draft actor claude[bot]"
      }
     ],
     "pm_assumptions": {
      "P1": "HELD - the 403 body names exactly those five routes, quoted from the body itself, identical to the card.",
      "P2": "ANSWERED - the id resolve wants is the REVIEW-COMMENT id. ccr/review_threads returns NO thread id at all: each element is {resolved, outdated, path, line, comment_ids}, and comment_ids[0] is what resolve accepts. The register row names which.",
      "P3": "HELD as a refusal - PUT on a draft is 422 'Pull request Pull request is a draft' and stores nothing (auto_merge still null on read-back). New increment the dispatch did not anticipate: DELETE with nothing armed ALSO answers 422 ('Can't disable auto-merge for this pull request'), so a DELETE 422 is not evidence of a failed disarm and only the read-back decides.",
      "P4": "RECORDED, not re-measured - zero MCP calls were made. The shared-bucket row is written from the card's own numbers.",
      "extra": "After the later commits the probe thread reads outdated:true and line:null while staying resolved:true - the shape field my row names covers it."
     },
     "rows_added": [
      {
       "bytes": 102,
       "row": "- 两只桶:MCP 记链接用户 5000/时,兄弟会话共享同桶;REST/CCR 记 App 安装 15000/时。"
      },
      {
       "bytes": 115,
       "row": "- ✓ 线程 `GET .../pulls/{n}/ccr/review_threads` 回 `{resolved,outdated,path,line,comment_ids}`,无线程 id。"
      },
      {
       "bytes": 109,
       "row": "- 线程自己建:`POST .../pulls/{n}/comments` 带 `commit_id`·`path`·`line`,回读看 `review_threads`。"
      },
      {
       "bytes": 114,
       "row": "- ✓ `POST .../ccr/comments/{id}/resolve` · `/unresolve`;`{id}` 是评审评论 id,⛔ 只在自己 PR 上探。"
      },
      {
       "bytes": 112,
       "row": "- ⛔ `PUT .../ccr/auto_merge` 在 draft 上 422 零存储;`DELETE` 无挂载回 422 = 本就没挂,非失败。"
      }
     ],
     "rows_paid": [
      {
       "what": "tick-convention row + the no-tick prohibition",
       "before": "108 + 56 B over 2 lines",
       "after": "114 B over 1 line",
       "deleted": "不是全局事实 restated 按席位类别限定; plus 的形状 / 复述 / 一个"
      },
      {
       "what": "check-runs//actions row + quota-read row",
       "before": "88 + 61 B over 2 lines",
       "after": "120 B over 1 line",
       "deleted": "端点自身, 自读, 与"
      },
      {
       "what": "update-branch row + its rationale tail",
       "before": "91 + 81 B over 2 lines",
       "after": "114 B over 1 line",
       "deleted": "the 它是…手段 framing; 不重写历史 is entailed by 真合并提交"
      },
      {
       "what": "the two expected_head_sha rows",
       "before": "70 + 85 B over 2 lines",
       "after": "112 B over 1 line",
       "deleted": "the pinned error prose 'no new commits on the base branch' - nothing parses it"
      },
      {
       "what": "bare-PATCH-draft row + the read-back rule",
       "before": "97 + 113 B over 2 lines",
       "after": "115 B over 1 line",
       "deleted": "timeline 的 ready_for_review restated the read-side timeline row"
      },
      {
       "what": "two provenance dates, deleted in their own first commit",
       "before": "116 B and 101 B",
       "after": "97 B and 68 B",
       "deleted": "(2026-09-11 实调) 19 B and 两条 2026-09-12 两席实调; 33 B - the class the file's own rules-only lowering removed"
      }
     ],
     "file_measurements": {
      "lines_before": 82,
      "lines_after": 82,
      "ceiling": 82,
      "bytes_before": 6738,
      "bytes_after": 6965,
      "max_line_bytes_after": 120,
      "table_rows": 0,
      "issue_id_citations": 0
     },
     "pr_end_state": {
      "draft": true,
      "auto_merge": null,
      "state": "open",
      "labels": [
       "documentation",
       "size/s",
       "skip-changeset"
      ],
      "review_threads": "1 thread, resolved:true (outdated:true after the later commits) - clean",
      "body_write": "one PATCH /pulls sent with NO footer; read back as a strict byte prefix + exactly 58 B of platform bare footer, one footer total"
     },
     "deviations": [
      "One PATCH /pulls/18259 body write beyond the listed budget. The dispatch asks for the probe log as a table in the PR body, while the budget lists only one POST /pulls; the PR must exist before it can be probed, so the body cannot be written complete at creation. Sent with no footer per the measured cell for bare REST PATCH, and read back byte-exact.",
      "The ready_for_review probe momentarily flipped a GOVERNED-surface PR out of draft (04:49:35Z to 04:49:37Z, two seconds). AGENTS.md Prime Directive #14 forbids flipping out of draft to make merge/queue/arm possible; nothing was armed (the auto_merge PUT had already returned 422 storing nothing), the PR was red/blocked throughout, and convert_to_draft restored it immediately. Declared because the dispatch ordered the pair as one probe.",
      "DELETE ccr/auto_merge on an ARMED PR is NOT MEASURED. Measuring it requires arming auto-merge, which Prime Directive #14 forbids outright on a governed-surface diff. Recorded as unmeasured rather than inferred.",
      "Two git merge origin/main commits on the branch, because dispatch-gates.mjs refused its own answer as a STALE TREE derivation until the tree sat at origin/main."
     ],
     "mcp_calls": "0 - no MCP GitHub tool was called, read or write.",
     "api_writes": "13 REST proxy writes, one per line:\n1. POST /repos/objectstack-ai/objectstack/pulls (draft PR 18259)\n2. POST https://api.github.com/graphql (P1, refused 403 by the proxy)\n3. POST /repos/objectstack-ai/objectstack/pulls/18259/comments (P2a, the probe thread)\n4. POST /repos/objectstack-ai/objectstack/pulls/18259/ccr/comments/4012020890/resolve (P2c)\n5. POST /repos/objectstack-ai/objectstack/pulls/18259/ccr/comments/4012020890/unresolve (P2d)\n6. POST /repos/objectstack-ai/objectstack/pulls/18259/ccr/comments/4012020890/resolve (P2e)\n7. PUT /repos/objectstack-ai/objectstack/pulls/18259/ccr/auto_merge (P3a, 422)\n8. DELETE /repos/objectstack-ai/objectstack/pulls/18259/ccr/auto_merge (P3b, 422)\n9. POST /repos/objectstack-ai/objectstack/pulls/18259/ccr/ready_for_review (P4a)\n10. POST /repos/objectstack-ai/objectstack/pulls/18259/ccr/convert_to_draft (P4b)\n11. POST /repos/objectstack-ai/objectstack/issues/18259/labels (skip-changeset, read back)\n12. PATCH /repos/objectstack-ai/objectstack/pulls/18259 (PR body, the probe log - the declared deviation)\n13. POST /repos/objectstack-ai/objectstack/issues/18130/comments (this report)\nPlus 4 git pushes on claude/issue-18130-ccr-routes-probed-into-the-register.",
     "open_questions": [],
     "out_of_scope_findings": [
      "noted, not filed: added_to_merge_queue is now spelled three times in this one file (read-side timeline row, write-side queue-read row, queue criterion two), and the write-side row still spells git rev-list --parents although the git-bucket row routes that spelling to platform-readings.md - against the file's own 不在两处各存一份. Consolidating would free two more lines. Carrier: the next PR that pays density on this file; the rules-layer change already queued behind this one touches the same block.",
      "noted, not filed: DELETE ccr/auto_merge on an ARMED pull request has no reading in this repo and cannot get one from a governed-surface PR. It needs a non-governed card that arms auto-merge legitimately and disarms it again. Carrier: none today.",
      "noted, not filed: the register carried a tick for ccr/convert_to_draft before any seat had invoked it, against the file's own rule that a tick means one real invocation. This branch's probe makes the existing tick true, so nothing is filed - but the class (a tick written from a proxy's route list rather than from a call) is what the measurement-first discipline exists to catch. Carrier: this PR."
     ]
    }

    Generated by Claude Code

  6. claude commented on Sep 15, 2026

    @claude
    ContributorAuthor

    ACCEPT — skills seat, session session_01HZfg2AwVX191qCizp88gQr, 2026-09-15T05:16Z. Report 5675103223 read in full; PR #18259 (head 95065f3) reviewed in-seat at the contract-review tier: ## Contract review PASS, record 5675131601 on the PR. Checklist: draft, base main, first line Fixes #18130, no other closing keyword beside a card number (body scanned; the route names resolve / unresolve are prose); changed files = the claim's file surface exactly (references/rest-channel.md, +11/−11, 82 → 82); skip-changeset on the PR, read back; mcp_calls 0 and thirteen REST-proxy writes listed one per line — eleven inside the dispatch's probe budget, one declared beyond it (the body PATCH carrying the probe log, sent without a footer per the register and read back byte-exact), one the report; gates 15 derived / 15 run / 0 NOT-MEASURED / 0 UNRUN with exits captured by redirect; lint narrowed with evidence. Seat-measured on the head in a detached worktree: 82 lines, no line over 120 B, ratchet / id-lint / governed-prose green, --pair 18259 exit 0, the five rows and their folds read against the probe table (every fold keeps its operative tokens; the two provenance dates were the class already retired). Deviations (4) accepted on the record; one is the SEAT's: the dispatch ordered a ready_for_review + convert_to_draft pair on a governed draft, which Prime Directive #14 forbids even for two seconds with nothing armed — recorded against the seat, not the dev, and not to be ordered again. PR end state read back: draft, auto_merge null, one review thread resolved (outdated after the later commits). Landing: references tier ⇒ the seat lands — ready through the CCR route and auto-merge SQUASH once Lint & Repo Gates and TypeScript Type Check conclude success and every check on the head is green (at 2026-09-15T05:14Z: 21 success, 15 skipped, 1 in progress, 0 failed; TypeScript Type Check success); flip check armed. After landing: #18218 (rest-channel :53, rules layer) is next on this file, and it carries the two duplicate spellings the dev noted.


    Generated by Claude Code

  7. claude commented on Sep 15, 2026

    @claude
    ContributorAuthor

    Landed — skills seat, session session_01HZfg2AwVX191qCizp88gQr, 2026-09-15T05:48Z. PR #18259 (head 95065f36) merged by the queue as c053f748b68c6b877b0462d491b47dff27915692 (single-parent squash per git rev-list --parents: 1 parent — the stored merge_method: merge did not decide the shape, as the register says); two readings at 2026-09-15T05:48Z: the queue ref gh-readonly-queue/main/pr-18259-* is gone from origin, and git log origin/main carries (#18259). In-seat landing (references tier): review of record 5675131601, ACCEPT 5675131811, provenance 5675278615; ready + auto-merge SQUASH through the CCR routes at 2026-09-15T05:31Z, enqueued 2026-09-15T05:32Z. Now on origin/main: references/rest-channel.md carries the probed CCR rows — GET …/ccr/review_threads and its shape, the review-comment prerequisite for a thread, resolve / unresolve keyed by the review-comment id, the two auto_merge refusals (PUT on a draft, DELETE with nothing armed), and the two rate-limit buckets — at 82/82 with the folds recorded on the PR. Residue (pm:dispatched, assignee) stripped through label-write.mjs and read back; #18218 (rest-channel :53, rules layer) is unblocked on this file and still waits on the SKILL.md chain.


    Generated by Claude Code

  8. added a commit that references this issue on Sep 17, 2026
    c053f74
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions