You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
pm-dispatch: a Tier H PR opened outside the relay gets no review request and no run row to check; state the per-author request rule and make the seat read requested_reviewers before the handoff #25782
Filing gate ③: a maintainer-direct task; the maintainer's words are quoted verbatim below. Filed by repo:cloud#2 (session session_0123kRqqdpAJWYMgsgdAJX4G, account os-zhuang) through the project coordinator's relay. ⛔ Not a claim. Suggested grade: S, p2. Triage may regrade.
Reader (who acts): the domain:skills seat. One PR on .claude/skills/pm-dispatch/** (Tier S in objectstack), with its contract review at CONTRACT_REVIEW_TIER.
Dedup: search_issues on objectstack, "governed review request PR opened outside fleet-write relay requested_reviewers author approver pm-dispatch": 62 hits. The closest are #25457 (relay-only PR writes; closed), #25046 (a Tier H PR never reaches os-zhuang; closed) and #25199 (objectui .claude/** tier; closed). None covers a Tier H PR that is already open, was opened outside the relay, and has no review request.
The maintainer's words (2026-10-25, Claude Code project "cloud", verbatim)
等我手工合并的,为什么没有按照 pm-dispatch 技能请求审核
我说的需要更新 github 上的项目吗
这个还识别账户的吗?hotlong 开发的会自动请审吗?
What was measured (cloud, 2026-10-25)
cloud#3255 and cloud#3256 are Tier H PRs (.github/workflows/** and AGENTS.md). Their card threads opened them directly as os-zhuang, not through the relay's pr_create.
The relay never saw them, so no request went to GOVERNED_APPROVERS, and no governed review: run row existed for the seat to check (SKILL.md: 「席位只核对 run 摘要 governed review 行,缺口才手补」).
Both sat as drafts with requested_reviewers: [] until the seat filled the gap by hand with pr_request_reviewers.
cloud#3268, opened through the relay's pr_create, got hotlong and os-zhuang requested automatically.
The relay already distinguishes accounts: governedReviewPlan (scripts/pm/fleet-write/execute.mjs:430) requests every approver who is missing, except the PR author, whom it assigns instead. But that only runs on pr_create / pr_ready sent through the relay. A Tier H PR stays a draft and is never readied by the seat, so a PR opened outside the relay never gets the follow-up.
The upstream cause on cloud was that the seat's dispatch orders lacked the Writes: line execution-duties.md:129 requires ("PR 只经中继 pr_create"). That is a seat miss, recorded on the cloud side. This card is about the backstop, which the skill text does not spell out.
What to change (text only)
SKILL.md, near :198–200. Before the speed-read handoff, the seat reads the PR's requested_reviewers and assignees itself; it does not rely only on the run row. A PR whose user.login is not objectstack-fleet[bot] has no run row by construction. The seat fills any gap with the relay op pr_request_reviewers, and names the off-relay author in the ACCEPT (contract-review.md:29 already says this for contract reviews; extend it to every Tier H handoff).
State the per-author rule as a table. It is what governedReviewPlan already does:
PR author
requested
assigned
who can approve
objectstack-fleet[bot] (relay)
os-zhuang, hotlong
—
either
os-zhuang
hotlong
os-zhuang
hotlong only (GitHub refuses a self-approval), or a direct human merge
hotlong
os-zhuang
hotlong
os-zhuang only, or a direct human merge
any other login (e.g. baozhoutao)
os-zhuang, hotlong
—
either
The speed-read's 「你要做的」 names the approver who can approve. For an approver-authored PR, that is the other approver, so the maintainer is never asked to approve their own PR.
Acceptance
The two sentences and the table are in SKILL.md (or the reference it points at). The table is derived from governedReviewPlan, with no rule the code does not perform.
Contract review PASS at CONTRACT_REVIEW_TIER. The skill's own checks are green.
Implementation offered for the domain:skills seat: PR #25784 (draft, opened through the relay's pr_create, head bc491118). ⛔ Not a claim. This card has no triage labels yet, and the account that wrote the PR (os-zhuang, cloud project, session session_01FiwXn7nJjWeZrtvzYraPVj) holds no domain:skills seat, so the PR says Refs #25782, not Fixes.
What it does: rewrites SKILL.md rule ③ under 〈路径分叉〉 in place, net 0 lines. It adds the backstop (before the speed-read, the seat reads requested_reviewers / assignees itself and fills gaps with relay pr_request_reviewers), the per-author rule as governedReviewPlan performs it, and the speed-read naming only a non-author approver.
Deviation from this card: the per-author rule is one prose line, not a table. SKILL.md is at its 319-line ceiling and every reference's table-row pin is 0; the table itself is in the PR body. Card item "dispatch orders carry Writes:" needs no text: execution-duties.md:129 already says it.
For the seat that claims: name the PR's branch claude/project-thread-jsx6o1 in the Claim:, switch the PR body to Fixes #25782, and run your ACCEPT. A contract review at CONTRACT_REVIEW_TIER is running; its record will land on the PR.
Delivered by PR #25784, merged through the merge queue as 6679644a (approved, readied and armed by the maintainer, os-zhuang, 2026-10-25 13:33Z; merged 13:58Z). The PR said Refs, not Fixes, because no seat had claimed this card when it was opened, so GitHub did not close it; closing it here as completed and removing pm:queue in the same stroke.
Landed text: SKILL.md 〈路径分叉〉 rule ③, net 0 lines. Seats read requested_reviewers / assignees themselves before a Tier H speed-read, fill gaps with relay pr_request_reviewers / assign, the per-author rule is stated as governedReviewPlan performs it, and the speed-read names only a non-author approver.
Contract review at CONTRACT_REVIEW_TIER: PASS on head c79e2346, the record is on the PR.
Deviation kept: the rule is prose, not a table (SKILL.md 319/319, reference table pins 0). The Writes: item needed no text (execution-duties.md:129).
Activity
objectstack-fleet commentedon Oct 25, 2026
Implementation offered for the
domain:skillsseat: PR #25784 (draft, opened through the relay'spr_create, headbc491118). ⛔ Not a claim. This card has no triage labels yet, and the account that wrote the PR (os-zhuang, cloud project, sessionsession_01FiwXn7nJjWeZrtvzYraPVj) holds nodomain:skillsseat, so the PR saysRefs #25782, notFixes.requested_reviewers/assigneesitself and fills gaps with relaypr_request_reviewers), the per-author rule asgovernedReviewPlanperforms it, and the speed-read naming only a non-author approver.Writes:" needs no text:execution-duties.md:129already says it.claude/project-thread-jsx6o1in theClaim:, switch the PR body toFixes #25782, and run your ACCEPT. A contract review atCONTRACT_REVIEW_TIERis running; its record will land on the PR.Generated by Claude Code
docs(pm-dispatch): an off-relay gap's assign leg names the relay's as…
objectstack-fleet commentedon Oct 25, 2026
Triage: first grade —
tooling·priority:p2·domain:skills·area:devpath·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-25T11:57Z⛔ Not a claim, ⛔ not a dispatch.
.claude/skills/**is governed: draft PR, quote the maintainer's words, and the maintainer merges.Generated by Claude Code
objectstack-fleet commentedon Oct 25, 2026
Delivered by PR #25784, merged through the merge queue as
6679644a(approved, readied and armed by the maintainer,os-zhuang, 2026-10-25 13:33Z; merged 13:58Z). The PR saidRefs, notFixes, because no seat had claimed this card when it was opened, so GitHub did not close it; closing it here as completed and removingpm:queuein the same stroke.requested_reviewers/assigneesthemselves before a Tier H speed-read, fill gaps with relaypr_request_reviewers/assign, the per-author rule is stated asgovernedReviewPlanperforms it, and the speed-read names only a non-author approver.CONTRACT_REVIEW_TIER: PASS on headc79e2346, the record is on the PR.Writes:item needed no text (execution-duties.md:129).Generated by Claude Code