Skip to content

pm-dispatch(contract-review): triage takes no contract reviews — every review is the dispatching seats, and a tier-unavailable or off-duty head waits for its lane or the review seats (#29242), not triage #29667

Closed

Description

@objectstack-fleet

triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

Filing gate ③: the maintainer's decision. In the triage seat's session on 2026-11-03, the maintainer said, verbatim: 「目前各车道都有fable,应该不需要你契约复审」. On 2026-11-02 they had first narrowed triage to a fallback (「29242 还是需要 同意。1+2+4」). This removes the fallback. ⛔ Not a claim.

维护者速读

  • 问题: contract-review.md〈复核归属与资格〉仍写着分诊在 (a) 交接行或等复核标记、(b) 等满一轮、(c) 车道收班 三种情况下接复审。check-owed-reviews.mjs 也据此给分诊列出 TAKE 行,于是分诊在 11-02 至 11-03 仍接了十余单复审。
  • 改什么: 删掉分诊兜底:复审一律由派发席在本席完成。档位不可用(429)或车道收班时,PR 留等复核标记,等车道席回岗或交 pm-dispatch(review seats): a review#N seat on other accounts takes contract reviews from the lanes' doorbells; triage becomes the fallback #29242 复审席,⛔ 不交分诊。check-owed-reviews 的「to take」改为指向车道或复审席,不再指向分诊。门铃 Request: contract-review 的收件人从分诊改为复审席(复审席未设时为车道兄弟席)。
  • 不改什么: 复审记录格式、档位、FAIL 处理、落地后补审的规则都不变,只改「谁来审」。

Change

  1. contract-review.md, 〈复核归属与资格〉 (≈L21–31, L53).
  2. scripts/pm/check-owed-reviews.mjs.
    • The TAKE verdict names the lane seat or a review seat as the taker. It never says triage.
    • The hand-off recogniser accepts a review-seat or sibling target in place of triage.
    • Report-only, as now; ⛔ no gate.
  3. The mailbox vocabulary (record-recognisers.mjs MAILBOX_KEYS, project-forms.md): Request: contract-review is addressed lane → review seat (or sibling lane seat), not lane → triage.
  4. lanes/triage.md. Remove the owed-reviews step from the triage round. The round record still counts owed heads older than one round per lane, and names the lane. That is a report, not a review.

⛔ No new gate, label or patrol row.

Acceptance

  • One PR across .claude/skills/pm-dispatch/**, scripts/pm/check-owed-reviews.mjs and scripts/pm/record-recognisers.mjs. Their self-tests pass with the new taker and recipient.
  • node scripts/pm/check-owed-reviews.mjs on the live board prints no row that names triage as the taker.

Reader who acts: domain:skills. It is coupled with #29242 (review seats), which this card makes the fallback.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Nov 3, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J

    Claim: PM loop round 20 · 2026-11-03T00:52Z
    Session: session_01J8VVAnMUWA9rufXzFaEh4J
    Account: huangyiirene
    Branch: claude/project-thread-s401e7
    Worktree: objectstack-issue-29667
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: .claude/skills/pm-dispatch/references/contract-review.md (〈复核归属与资格〉 and the landing-head re-review line; ceiling 60), .claude/skills/pm-dispatch/references/lanes/triage.md (the owed-reviews step; ceiling 15), .claude/skills/pm-dispatch/references/project-forms.md (the Request: contract-review recipient; ceiling 55), each paid in place with no re-wrap and no ceiling row moved; scripts/pm/check-owed-reviews.mjs (TAKE taker and hand-off target, with its self-test); scripts/pm/record-recognisers.mjs (MAILBOX_KEYS recipient, with its self-test) (stop on breach)
    Container & model: M, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate; the seat's review runs at CONTRACT_REVIEW_TIER: governed rules text), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — maintainer's decision (「目前各车道都有fable,应该不需要你契约复审」), filed by triage
    Thread-read: 6592417472
    Premise: holds. On origin/main, contract-review.md still gives triage the fallback (a)(b)(c), and check-owed-reviews.mjs still names triage as a taker.
    Serial constraints cleared: no open PR touches these five files.

    Seat's reading of claimability: the card was filed and labelled (p1, domain:skills, pm:queue) by the triage seat itself under filing gate ③ and notified to this seat as a ruling (mailbox 6592417472); the seat reads that signed filing as the triage record.

    Tier S (.claude/**) plus pm tooling. No new gate, label or patrol row, as the card says.


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 3, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J

    Claim widened (claim 6592453746) · 2026-11-03T00:56Z

    The executor stopped before writing and measured on main 744211f: the triage round's owed-reviews step lives in references/triage-duties.md, not lanes/triage.md (which already says contract review is the lane's).

    File surface, added (stop on breach): .claude/skills/pm-dispatch/references/triage-duties.md lines 3 and 10 to 14 (复审 as a triage duty, the check-owed-reviews step, triage's own stale-record and delta re-review lines, the per-PR round-record row), paid in place within its ceiling of 99, with no re-wrap.

    Seat's rulings on the executor's three in-surface points:

    1. project-forms.md and MAILBOX_KEYS notify:contract-review: the sender moves from triage to a review seat or a sibling lane seat. Triage takes no reviews, so it sends no review notices.
    2. contract-review.md's claim rules: the same-head double-claim rule names the lane seat or a review seat, and the lane still wins the tie. The contractReviewClaims code stays untouched.
    3. Hand-off grammar: the target set becomes review#N or domain:<lane>#N in place of triage. A triage target reads as unreadable, as director does today. TAKE names the lane seat or a review seat. pm-dispatch(review seats): a review#N seat on other accounts takes contract reviews from the lanes' doorbells; triage becomes the fallback #29242 is still open, so no review#N seat exists yet; until one does, the sibling lane seat is the fallback.

    Generated by Claude Code

  3. objectstack-fleet commented on Nov 3, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J

    Seat ruling amended (widened claim 6592498626, ruling 2) · 2026-11-03T01:52Z

    The at-tier review of PR #29686 found that ruling 2 asked for two things that cannot both hold. It asked for the text to say the lane wins a same-head tie, and for the contractReviewClaims code to stay untouched. That code gives the hold to the earliest live claim, and only a triage#N signature reads as the non-lane side.

    Amended ruling 2: the text follows the code. On a same-head double claim between the lane seat and a review seat or a sibling lane seat, the earliest live claim holds. The later claimant withdraws by reply. contractReviewClaims stays untouched. The three code comments that restate "the lane wins a tie" (in check-owed-reviews.mjs, including its summary string, and in record-recognisers.mjs) are corrected to the same sentence. Whether a review seat should ever yield to the lane is #29242's to settle when it defines review seats.

    Rulings 1 and 3 stand.


    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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions