Skip to content

pm-dispatch SKILL: cloud-card comms is event-driven by ruling — roster limitation on record, notes-21 verify-before-toggle amendment, PR subscription as a hard step #7755

Description

@os-zhuang

Filed by the spec-lane PM seat (session session_01JY2Q5Xto1u8YHADgrZDTnk) on the maintainer's instruction (spec-lane PM session chat, 2026-08-11 ~13:05Z, verbatim: 「立卡」), executing the same-chat rulings: 「当前事件驱动架构即长期方案」/「云卡通信课题就此收档 … 不再追」/ 「没有计划 把 PM 席迁到常驻本地机」.

Three validated deltas to .claude/skills/pm-dispatch/SKILL.md, all proven on the 2026-08-11 spec-lane shift. Scope is exactly these three plus one rider evaluation — not the seat post's broader suggestion list (that stays for 换班复盘).

1. mode:cloud — record the cross-session-messaging conclusion as a known platform limitation

Add a short paragraph to the mode:cloud backend section so no future PM session re-investigates this path:

  • CCR-created cloud sessions do NOT register in the cross-session messaging roster: ListAgents does not list them and SendMessage by session ID returns not-reachable. Measured 2026-08-11 with the gates that the docs name all passing (Claude Code 2.1.227 ≥ 2.1.224; none of the four feature-flag-disabling env vars set; in-process subagents listed and messageable in the same reads). Per the official doc (code.claude.com/docs/en/cross-session-messaging), cloud sessions appear only when the sending session has "cloud access: a claude.ai login on the first-party Anthropic API" — a condition CCR-container credentials do not currently satisfy.
  • The maintainer ruled (2026-08-11): the event-driven architecture IS the standing solution — cloud-card channels are subscribe_pr_activity webhooks + the dual-drop report contract (issue comment + return message) + criteria-only timers. ⛔ Do not re-test the roster path or propose local-machine migration; both were examined and closed 2026-08-11.

2. Operational note 21 amendment — after an empty-field enable, verify queue membership BEFORE any disable

Note 21's current prescription is "disable/enable 翻转一次" on the empty-field signature. The 2026-08-11 shift measured a failure mode inside that prescription: GitHub's "added to merge queue" webhook can arrive OUT OF ORDER, after the first empty-field enable has actually enqueued the PR — and a disable fired into that arming window CANCELS the real enqueue (PR #7655: enable → empty-field → disable → out-of-order "added to queue" notice → queue branch gone; cost one extra toggle lap). The corrected sequence, which landed PR #7657 with zero friction the same day:

  1. enable_pr_auto_merge returns the empty-field form (method: , enabled at ) ⇒ verify by queue branch first (git ls-remote --heads origin 'refs/heads/gh-readonly-queue/*', allow ~20–30s for the entry);
  2. branch present ⇒ done — ⛔ no toggle;
  3. branch absent after the wait AND the queue has visibly churned (newer entries got branches while yours did not — the build-horizon caveat stays) ⇒ ONE disable/enable toggle, then re-verify;
  4. ⛔ never issue a disable between an enable and its queue-branch verification.

Wording should amend note 21 in place (it is the same signature and the same tool), not add a competing note elsewhere.

3. 入队与落地 B — elevate the cloud-card PR subscription from 随行纪律 to a hard dispatch-flow step

The clause 「云卡创建即对其 PR 挂 subscribe_pr_activity」 exists today as one of three 随行纪律 bullets in the sizing section. The 2026-08-11 shift produced a clean A/B measurement of skipping it: #7672 (no subscription — merge discovered by polling, minutes late) vs #7655/#7657 (subscribed — CI failure and merge notices delivered in seconds, the whole relay ran event-driven with zero polling). Move/duplicate the requirement into the mode:cloud delivery-contract flow as a numbered step: "the moment the cloud card's draft PR exists, subscribe_pr_activity it — a cloud-card PR without a subscription is a polling liability", keeping the existing bullet as the pointer.

Rider evaluation (same PR if adopted)

The previous shift left a compressed 6-line replacement for the closed PR #7431 (cloud-card archival paragraph) on branch claude/pm-dispatch-spec-5ls2tr @ bbe056b, not reopened per the closed-PR rule. The dev on this card should read that commit and either fold the 6-line paragraph into this PR (if it still matches the current SKILL text) or record why it no longer applies. #7548 governs either way.

Process constraints (standing rulings — restated, not new)

Refs: #7341 (tiering rulings), #7548 (skills-update governance), #7431 (closed predecessor), seat post #6017 (shift evidence ledger).

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions