Repository navigation
pm-dispatch(execution): an idle lane seat does four pre-triage chores on its own cards, never grades, and rings the triage mailbox instead of waiting - #28935
Conversation
… on its own cards, never grades, and rings the triage mailbox instead of waiting One shared block at the end of execution-duties.md 〈候选与批次〉, read by every execution seat every fire: delivery hygiene, stale-card re-reads, a `Suggested-grade:` pre-read that writes no priority label, and finding repro; a "waiting on triage" report cites the mailbox comment it rang. triage-duties.md gains one line: the grading pass reads `Suggested-grade:` lines as input. The lane self-triage exception is unchanged. Paid by deletion, no ceiling moved: six restated lines leave execution-duties.md and one leaves triage-duties.md (sources in the PR body). Claude-Session: https://claude.ai/code/session_01J8VVAoanyVrJxtZ2gGqdZw Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8VVAoanyVrJxtZ2gGqdZw Co-authored-by: Claude <noreply@anthropic.com>
|
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J Contract-review-claim: session_01J8VVAnMUWA9rufXzFaEh4J · head ec89628 · 2026-11-02T04:41Z The seat review runs at CONTRACT_REVIEW_TIER in an isolated subagent (the seat session is not at that tier). |
|
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J Contract reviewServed-tier: Reviewer: an isolated subagent at ① Derived judgmentsNet diff against the merged-in
② Semver levelNothing published; ③ Boundary flagsPR author
Seven deleted lines, each checked for a surviving home with the same reader: 无分诊审计评论即非候选 (SKILL.md domain-lane rules, 待命 blocker vocabulary) — survives; 解锁那一刻判断最不可信 (前提过时检查, 延后单重定价, same section) — survives; 条款②判据不另抄 (criterion in the same file and ④ Design judgment
Check-runs at record time: all success or skipped except Implemented-by: VERDICT: FAIL Generated by Claude Code |
…-verify-and-requeue, not a triage round trip Chore 1's last clause sent the lane to triage for an unblock the lane already owns (the lane patrol's hold/closed re-verify, the standby unblock scan, the Blocked-by reverse-index duty). It now says the lane re-verifies and re-queues the card itself; Notify: unblocked stays where the mailbox table puts it. "释放/收班" becomes SKILL.md's own word 离手 so the line keeps within 120 bytes (118). Claude-Session: https://claude.ai/code/session_01J8VVAoanyVrJxtZ2gGqdZw Co-authored-by: Claude <noreply@anthropic.com>
|
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J Contract reviewServed-tier: Delta record over the FAIL record on ① Derived judgmentsDelta: 「① 交付卫生:交付卡补收尾记录;释放/收班摘
② Semver levelUnchanged: nothing published, two instruction files; Check-runs on ③ Boundary flagsPR
④ Design judgment
Implemented-by: VERDICT: PASS Generated by Claude Code |
|
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J 维护者速读
席位核对 — ACCEPT · domain:skills#1 · head
|
Requested by Irene · project thread
Fixes #28899
Clause-②: no
Metadata-protocol: none
维护者速读
references/execution-duties.md〈候选与批次〉末尾新增 6 行;②references/triage-duties.md新增 1 行;③ 下方 7 行删除的出处表。pnpm check:pm-skill-ratchet && pnpm check:pm-skill-id-lint全绿,wc -l两文件仍为 188 / 102。.claude/**,席位达档复核 PASS 后入队)。What changes
Text only, two files under
.claude/skills/pm-dispatch/references/, inside the claim's file surface.The shared block — six lines at the end of
execution-duties.md〈候选与批次〉.SKILL.md's phase index names this file as read by every execution seat on every fire, so every lane seat reads the block without a per-lane copy:pm:*label without setting the next state in the same write; a card whoseBlocked-by:targets have all closed is put to triage for unblocking.origin/main(premise still true, already fixed) with the evidence posted; a fixed card goes to triage or the maintainer to close, never closed by the lane.Suggested-grade: pN · REASONline; nopriority:*label is written.findingcards get the missingreach:or reproduction, or a stated reason they miss the three classes.project-forms.md); a report that says "waiting on triage" cites the mailbox comment id it rang, and one that cannot has not asked.The triage pointer — one line in
triage-duties.mdbeside the self-triage review line: the grading pass reads lanes'Suggested-grade:lines as input, not a grade, and confirms or changes them, giving a reason when it does not adopt one. The 「车道席自分诊」 exception lines are byte-identical.Paying the ratchet — no ceiling moved. Both files stay at their ceilings (
execution-duties.md188/188,triage-duties.md102/102), every added line is at most 120 bytes, and no line was re-wrapped to buy room. Seven lines left, each restating a rule that still lives elsewhere:landing-operations.md」SKILL.md〈域车道〉 (read every fire): 「domain:*、队列与级别只由分诊落笔;两例外:sub-issue 承父卡域、main-red 锚卡,免审计评论」 and 「无分诊审计评论 ⛔ 不得认领」; main-red handling inlanding-operations.md约定③references/lanes/spec.md席内分派判据,⛔ 不另抄」.claude/agents/os-dev.md〈标准条款住在这里〉「派发词与本文件冲突时以本文件为准:无条件条款住这里,错了也在这里改」, and execution-duties 「标准非协商条款 ⛔ 不抄进派发词」in_progress是诚实读数」os-dev.mdDoD 「报告在本地验证走完时交付,CI 收敛等待归 PM 不归你」 and 「门禁状态如实记录,in_progress是诚实值」;review-checklist.md「收敛期转红走补丁轮续派原 dev,⛔ 不作 REWORK 的理由」seat-lifecycle.md〈轮次报告与节奏〉 (every seat, every fire) 「报告加升级项、呈裁清单…」 andSKILL.md红线 「⛔ 无代裁通道」; the column hint (card, recommendation, authority) is the one detail not restated elsewhereNo issue number in the skill text (
check:pm-skill-id-lintgreen). No package publishes from this diff, soskip-changeset.Tests
No code changes; the gates are the tests. Derived with
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack(merge base onorigin/main, 2 paths, +7/−7) and run one by one with the exit code captured before any pipe, on headec896289:19 derived commands, all exit 0; --ran reconciliation 19/19, 0 NOT-MEASURED
dispatch-gates --ran: 19 derived families accounted for, 19 run, 0 NOT-MEASURED (a derived zero: all 19 recorded an exit code and none is 3). Also run, outside the derived list:pnpm check:pm-settings-deny-roster(its roster sits under.claude),pnpm check:pm-governed-prose,node scripts/check-published-list-mirrors.mjs, each exit 0.Acceptance notes
execution-duties.mdhas no empty-queue step: the per-card empty-queue table and the standby list live inseat-lifecycle.md〈停止条件与待命〉, outside the claim's file surface. The block sits at the end of 〈候选与批次〉, which that table's blocker vocabulary already points at (「候选定义反面(execution-duties.md)」). A one-line pointer inseat-lifecycle.md's standby list would be the direct link; not made here (surface). Carrier: the seat.execution-duties.mdon every fire, so six pointers would add lines with no reader the block lacks;lanes/ui.md,lanes/server.mdandlanes/hotcrm.mdsit at headroom 0, so each would cost another deletion. It also leaves the lane files to the sibling card that adds a pointer line there. The card's acceptance allows the shared section in place of per-lane copies.Notify: unblockedto triage, but in the closed mailbox vocabulary (scripts/pm/record-recognisers.mjs)Notify: unblockedruns from the seat that queued the card to the lane, for p0/p1 only. A lane asking triage to unblock usesRequest: triage(project-forms.md: 「问卡去留、路由或定级」). The chore says 「请解锁」 and the bell line routes it through the existing keys; no key was added.lanes/skills.md常设承诺 「首触定级每轮」 reads as the skills lane grading at first touch, next to two lines that hand finding grading to triage. Against the ruling that grading stays with triage it may be stale. Outside this card's wording, not touched. Carrier: the seat.Verification
Head
ec896289(main merged once before opening). Line budget after the edit:execution-duties.md188/188,triage-duties.md102/102; longest added line 120 bytes. Theos-dev-reportcomment on the card carries the same readings.Generated by Claude Code