Skip to content

fleet-write: relay pr_create asks the governed approvers to review a Tier H draft before any contract review exists, so an approver can approve and merge it unreviewed (#26566, #26570) #26617

Open

Description

@objectstack-fleet

Filed by the domain:skills#2 seat (session_01LqKsGyMNFwwnbF5FTAqyPn, seat post #19287) on the maintainer's word in the seat thread, 2026-10-27 10:28Z: 「关键是还没有契约复审,你就推送给我审核了,这个是skills 的问题」, then 「只开卡,不要派发」. ⛔ Not a claim, ⛔ not a dispatch — the maintainer asked for the card only. Dedupe: the 400 most recently updated issues and PRs (open + closed), title and body grepped for requested_reviewers, governedReview, GOVERNED_REVIEW, review request, 请审, before the contract review → no card asks for this.

Business reason: a Tier H PR is put in front of an approver the moment it opens as a draft, before the independent contract review and the seat's ## 席位核对 exist. The approver reads a request to review as "ready for my approval", approves, readies and enqueues it, and it lands with no contract-review record. That happened twice on 2026-10-27 10:05Z: PR #26566 (card #26502, skills/**) and PR #26570 (card #26071 step iii, .github/workflows/**) were approved by os-zhuang at 2026-10-27 09:49Z–2026-10-27 09:51Z and merged with no ## Contract review on either (landing records 6439075580 on #26502, 6439087515 on #26071). The maintainer called it a pm-dispatch (skills lane) defect.

Where (origin/main at f9867020)

Wanted

The approver request for a Tier H PR moves from the draft open to the hand-off: it is sent only after the contract review PASS on the current head and the seat's ACCEPT are on the PR. Shapes for the implementer to choose between (say which in the PR body):

  1. pr_create loses governedReview; the follow-up runs at pr_ready only, and the seat, at Tier H hand-off, sends pr_request_reviewers (the existing op) as the step that puts the PR in front of the approver. SKILL.md L198 and its neighbours say so, ⛔ inside the line ratchet (check:pm-skill-ratchet, SKILL.md at its ceiling — reword inside lines).
  2. Or the follow-up stays on pr_create but sends nothing for a Tier H draft, and a new seat-side step (or pr_request_reviewers) requests the approvers once the records exist.

Either way: the H43 half-state row in check-half-states.mjs (the 「approver nobody told」 gap) must read the new timing — a Tier H draft with no contract review yet is NOT a half state; a Tier H PR with PASS + ACCEPT and no approver request IS. The execute.mjs / validate.mjs self-tests pin the new rows. ⛔ No change to GOVERNED_APPROVERS, to the queue guard, or to the draft-forcing of pr_create.

Acceptance: a relay pr_create of a Tier H draft sends no requested_reviewers POST (self-test and one live run quoted); the seat's hand-off step requests the approvers and the H43 row agrees; pnpm check:pm-dispatch-gates, execute.mjs --self-test, validate.mjs --self-test, check-half-states self-test and check:pm-skill-ratchet green.

Tier: .claude/skills/pm-dispatch/SKILL.md is a MANDATORY_TIER_GLOB row (CONTRACT_REVIEW_TIER); scripts/pm/fleet-write/** lands Tier S. ⚠️ The ceiling tier is exhausted for this account today (the maintainer's word 2026-10-27 07:14Z); the maintainer asked for this card to be filed only, not dispatched. Size: S. Clause-②: no. Metadata-protocol: none.

Related open reading, not this card: the approver can still enqueue a Tier H PR with no review record at all — the queue guard admits an authorised enqueue (#26230). This card only stops the relay from inviting that early.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade — tooling · priority:p2 · domain:skills · area:devpath · pm:on-hold · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-27T11:02Z

    ⛔ Not a claim, ⛔ not a dispatch.

    • p2: the relay's pr_create asks the governed approvers to review a Tier H draft before any contract review exists (maintainer: 「关键是还没有契约复审,你就推送给我审核了,这个是skills 的问题」). The likely shape: the review request waits until a same-head contract review PASS is recorded.
    • pm:on-hold, not pm:queue: the maintainer said 「只开卡,不要派发」.

    Restart-when: the maintainer says to dispatch it.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Recurrence readings — three more Tier H PRs approved before the seat's record, 2026-10-28T09:03Z

    Seat domain:skills#2 (session_01QSeKYmhU5KEj1nukYhp1Tg), timelines read in this act; the mechanism is the one this card names (the relay's pr_create governed follow-up requests the approvers at the draft open). ⛔ Not a claim; the hold stands until the maintainer's word.

    PR card relay review request (review_requested by objectstack-fleet[bot]) approver's acts seat's contract review
    #27131 #27017 2026-10-28T07:29Z os-zhuang APPROVED 2026-10-28T07:31Z, readied the same minute, enqueued 2026-10-28T07:43Z PASS 6463562292 2026-10-28T07:45Z
    #27139 #26081 2026-10-28T08:03Z APPROVED + readied + auto-merge 2026-10-28T08:05Z, enqueued 2026-10-28T08:16Z PASS 6464008250 2026-10-28T08:11Z
    #27152 #27075 2026-10-28T08:22Z APPROVED 2026-10-28T08:26Z PASS 6464321368 2026-10-28T08:30Z

    Each approval came within two minutes of the request, i.e. off the notification, with the dev's draft 速读 as the only reading; the seat's 前提实测 / check-run reading / accepted deviations landed 10–40 minutes later. The maintainer today, in the seat's session: 「审批人动作快于席位复核窗口,是因为skills的问题,还没有复核就提醒审批人审核了吧?」「我是看到有待审核pr就会进去点啊」 — the same finding as this card's 2026-10-27 words. The seat recommends shape 1 of 「Wanted」 (the request moves to the seat's hand-off, sent by pr_request_reviewers after PASS + ACCEPT on the current head; pr_create stops requesting) and asks the maintainer whether Restart-when: is met. Hot-file note: SKILL.md L198 sits behind PR #27082 (L161/L162/L183) on the seat's serial queue; fleet-write/ops.mjs and execute.mjs are free.


    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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions