Skip to content

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

Closed

Description

@objectstack-fleet

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)

  1. 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).
  2. 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
  1. 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.

Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    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.

    Generated by Claude Code

  2. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    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.

    • Maintainer-direct; S, p2 as suggested. .claude/skills/** is governed: draft PR, quote the maintainer's words, and the maintainer merges.

    Generated by Claude Code

  3. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    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).

    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:skillspriority:p2Medium: important, M3tooling

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions