Skip to content

pm-dispatch: card threads write to GitHub only through the relay (pr_create and the other ops), never GitHub MCP; the dispatch order carries that line verbatim; review flags a PR not authored by the fleet bot (maintainer's word 2026-10-23) #25457

Closed

Description

@objectstack-fleet

Filing gate ③: a maintainer-direct task, the maintainer's words quoted verbatim. Filed by domain:skills seat 2 (seat post #19287, session session_01REMuzhz6MWRjg8uohedMnM, account os-elon-musk) on the project coordinator's relay of the maintainer's word. ⛔ Not a claim. Lane self-applied under exception 二; grade suggested S, p2; triage may regrade.

Reader (who acts): the domain:skills seat, one PR on .claude/skills/pm-dispatch/** (Tier S) plus ratchet ceiling rows if needed. Contract review at CONTRACT_REVIEW_TIER.

The maintainer's words (2026-10-23 14:43Z, Claude Code project "Objectstack", verbatim)

如何更新 skills :在环境级(项目根会加载的那层)设置里禁掉 MCP 写,并放行中继命令。这一步要你来改配置。

  1. 在每张卡的派发令里写明「PR 只经中继 pr_create 开,禁用 MCP」。

What was measured (2026-10-23)

Wanted

  1. references/execution-duties.md Writes: line: PR only through the relay's pr_create; comments, labels, body edits only through the relay tools (post-stamped.mjs, label-write.mjs, fleet-write/dispatch.mjs); ⛔ GitHub MCP writes by name (create_pull_request, update_pull_request, issue_write, add_issue_comment, …); one clause that in a multi-repo project the repo settings.json deny does not load, so this line is the guard.
  2. references/dispatch-runbook.md 〈卡线程〉: the card thread's opening message (the dispatch order, per pm-dispatch: a project-run seat form — seat post as a stub, posture and ledger in the Claude Code project, dispatch order in the card thread, branch named before the thread opens; 项目总监 → 总监席 (maintainer's word 2026-10-23) #25379) carries that Writes: line verbatim.
  3. references/contract-review.md or review-checklist.md: a PR whose author is not objectstack-fleet[bot] is flagged in the review record (③ note, with the author login), so the seat sees an off-relay write before landing.

Out of scope: the environment-level settings the maintainer will change himself (first sentence of his message); any scripts/** check (a devx card if wanted).

Acceptance

Dedupe

MCP search_issues, objectstack, "card thread opened PR through GitHub MCP write, PR author not fleet bot, dispatch order Writes line relay only pr_create" → 59 hits; top: #25412, #23423 (closed), #25417, #21892 (closed: label-write fell back to a personal-login write — the same identity hazard on a different path), #25415, #25416, #25379 (closed), #24145, #20791, #20063 (closed: PR assignee rule). None names the MCP write tools or the dispatch-order line. New.

Dedupe words: GitHub MCP write ban · Writes: line pr_create · PR author not objectstack-fleet[bot].


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 23, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 (card thread) · 2026-10-23T15:21Z · p2, tooling, domain:skills. Writes the maintainer's 2026-10-23 14:43Z word quoted on the card into pm-dispatch: the Writes: line names the relay as the only write path and bans GitHub MCP writes by name, the card thread's opening message carries it verbatim, and contract review flags a PR not authored by objectstack-fleet[bot]. Also, in the same PR: references/coordinator.md L12–L13 aligned with the unconditional takeover PR #25427 landed (review record 6368204690 ③-1).
    Session: session_01REirBR5H4pfZ96C61mK6Uj (card thread of domain:skills seat 2, seat session session_01REMuzhz6MWRjg8uohedMnM)
    Account: os-elon-musk (the seat's linked user; always the card's assignee)
    Branch: claude/project-thread-4obil9 (the card thread's designated push branch, platform-assigned at thread creation and read by the seat from the thread's session record per ruling 1A of #25379; the thread checks that this newest claim names its branch before it starts)
    Worktree: the card thread's own checkout
    Domain: domain:skills
    Seat: domain:skills#2 (seat post #19287)
    File surface: .claude/skills/pm-dispatch/references/execution-duties.md (the Writes: line), references/dispatch-runbook.md 〈卡线程〉, references/contract-review.md or references/review-checklist.md (one line), references/coordinator.md L12–L13; scripts/pm/check-skill-line-ratchet.mjs ceiling rows only if a file shrinks. Line-neutral or paid in the same file. (stop on breach; explain in the report)
    ⛔ Not in scope: any Tier H file (AGENTS.md, CLAUDE.md, docs/**, skills/**, .github/workflows/**, CODEOWNERS); .claude/settings.json and the environment-level settings (the maintainer changes those himself); any other scripts/** (a check is a devx card); SKILL.md.
    Writes: PR only through the relay's pr_create (node scripts/pm/fleet-write/dispatch.mjs); comments, labels and body edits only through post-stamped.mjs, label-write.mjs and the relay; ⛔ every GitHub MCP write tool (create_pull_request, update_pull_request, issue_write, add_issue_comment, …). In this project the repo's settings.json deny does not load, so this line is the guard.
    Container & model: S, mode:thread (the seat's push branch is held by Tier H PR #25432; the coordinator granted a card-thread slot), model: CONTRACT_REVIEW_TIER (dispatch-gates.mjs --tier on .claude/skills/pm-dispatch/**: "MANDATORY"), effort: medium (S). Governed surface .claude/** is Tier S: a CONTRACT_REVIEW_TIER PASS record on the PR's head plus all-green checks; the seat lands it under the maintainer's standing word of 2026-10-23 14:14Z in the seat thread.
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (a maintainer word not yet written into the skill)
    Thread-read: none
    Serial constraints cleared: start from main 0b8dbea00d. Open PR #25422 (card #25414) edits references/dispatch-runbook.md and references/contract-review.md and lands first; merge main after it lands and before asking for review, keeping out of its hunks. PR #25427 (card #25412) is in the merge queue; merge main once it lands too (its seat-lifecycle.md L30 is the takeover text coordinator.md must agree with).


    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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions