Repository navigation
pm-dispatch: a triage fold proposal binds only before any named card has an open PR; a foreseen follow-up is a card - #21676
Conversation
…has an open PR; a foreseen follow-up is a card Two protocol lines in the execution seat's candidates-and-batch section. A triage fold proposal is advisory and is in force only while none of the cards it names has an open PR; otherwise each card lands on its own and the seat records the decline in one line. A follow-up a grade foresees is a card, filed when its trigger lands; a triage line never authorises an edit without a card. Claude-Session: https://claude.ai/code/session_01CB6W87z22K2yjUCDyVrJRk Co-authored-by: Claude <noreply@anthropic.com>
…ld-proposal-and-uncarded-follow-up
…ed rules, net 0 against the execution-duties ceiling The release line restates references/state-machine.md (the releaser row) and the stall-reset gradient line restates the dispatch runbook's stall reset section; both owning copies keep their full text and stay on the reader's path. The file returns to its ceiling of 183 lines; no ceiling moves. Claude-Session: https://claude.ai/code/session_01CB6W87z22K2yjUCDyVrJRk Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewServed-tier: Read-only shape otherwise: the diff against the merge base 417443e, card #21467 with every comment (the triage direction, the first dev report, the seat's amendment 5976088949), the owning copies of the two deleted lines on ① Derived judgments
② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS |
Fixes #21467
Clause-②: no
Two protocol lines in the execution seat's playbook, as the card's triage grade directs (comment 5962064937). Opened as a draft that is red on
check:pm-skill-ratchet: the file sits at its line ceiling, so the seat has to pick how the two lines are paid before this can land. See "Open: the line ceiling" below.What changed
.claude/skills/pm-dispatch/references/execution-duties.md, section 〈候选与批次〉. Two lines inserted; no other line moved or changed.- 分诊折叠提议仅是建议,点名各卡皆无 open PR 才有效;否则各卡各自落地,拒折理由记一行。- 分诊预见的后续工作是一张卡,触发条件落地时立卡;⛔ 分诊一句话永不授权无卡编辑。How each clause of the direction maps to the text:
Why both lines are in 〈候选与批次〉:
Reading 1: placement and size
git diff --stat origin/main...HEADshows 1 file changed, 2 insertions(+).Reading 2: the two pm-skill gates, at head 0583520
pnpm check:pm-skill-id-lint, exit 0:pnpm check:pm-skill-ratchet, exit 1. Its self-test passes (234 checks); the failing line from the run is:That is the run's only failure. Neither new line trips the max-line-length rule.
Open: the line ceiling
The dispatch assumed
check:pm-skill-ratchetonly measuresSKILL.md. That turned out to be wrong. TheCEILINGSmap inscripts/pm/check-skill-line-ratchet.mjslistsreferences/execution-duties.mdat 183 lines with zero headroom, and the gate's own message says a raise needs a maintainer ruling quoted in the PR. So any net added line turnsLint & Repo Gatesred.This PR does neither of the things that would fix it. It does not raise the ceiling:
scripts/**is outside the declared file surface, and the dev contract forbids raising it. It does not delete other lines either: the dispatch fenced every other line. The seat has two options:CEILINGSrow. Every existing line stays where it is.- 释放是显式动作:让卡离手者同笔清 assignee + `Release:` 行(会话/因/去向);下一任重新认领。The same rule appears inreferences/state-machine.mdline 41 (same fields, same same-write rule), in the assignee row of SKILL.md 〈状态模型〉 (离手恒走释放), and in the claim paragraph of AGENTS.md ("Release is an explicit act").- 复位走梯度,每次比上一次更具体;第三次停摆判 unreliable,按接手协议重派。The same rule appears inreferences/dispatch-runbook.md〈停摆复位梯度〉 (梯度逐级; ③ 第三次停摆判 unreliable,按接手协议重派到该分支). A seat already has to open that section to get the 姿态句 text that line 164 tells it to send.The report comment on the card compares A and B along the four axes.
Gates, at head 0583520 (after merging origin/main at 417443e)
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, run with no paths, derived 17 commands. That is the same list as the dispatch. I also ranpnpm check:pm-settings-deny-roster, because its roster lives under.claude. Every command went throughscripts/pm/os-verify-lock.sh, and each exit code was captured before any pipe.doc-formula-expressionsfirst refused with exit 3 (PREREQUISITE NOT MET). I built its prerequisites withturbo run build --filter=@objectstack/formula --filter=@objectstack/lint(exit 0) and re-ran it.node scripts/check-closing-keyword-parity.mjsnode scripts/check-closing-keyword-parity.mjs --self-testnode scripts/check-comment-mask-corpus.mjsnode scripts/pm/check-harness-current.mjs --self-testpnpm --filter @objectstack/lint run check:doc-formula-expressionspnpm check:agent-test-spellingpnpm check:cross-package-test-inputspnpm check:doc-authoringpnpm check:driver-memory-censuspnpm check:gitlink-declaredpnpm check:nul-bytespnpm check:pm-governed-mergespnpm check:pm-skill-id-lintpnpm check:pm-skill-ratchetpnpm check:refd-timer-probepnpm check:skill-frame-syncpnpm check:watch-hint-literalpnpm check:pm-settings-deny-rosternode scripts/pm/dispatch-gates.mjs --ran:✓ dispatch-gates --ran: 17 derived famil(ies) accounted for — 17 run, 0 NOT-MEASURED (a DERIVED zero — all 17 recorded an exit code and none of them is 3).Left to CI and not measured here: the type-check lanes, and the wide-population and roster families that dispatch-gates lists outside its derived set. This diff touches no TypeScript and no package.
No changeset:
.claude/**publishes nothing, soskip-changesetapplies.Acceptance notes
execution-duties.mdis under the line ratchet at 183 lines with zero headroom. Details are in "Open: the line ceiling"..claude/skills/spec-property-retirement/SKILL.mdhas table-row pin headroom 2 ("lower the pin to 324"). Noted, not filed. Carrier: none.维护者速读(草稿)
execution-duties.md的〈候选与批次〉加两行规则。第一行:分诊提出的"把几张卡并进一个 PR"只是建议,只要其中任一张已经开了 PR,就各卡各自落地,执行席记一行拒绝理由。第二行:分诊预见的后续工作必须是一张卡,等触发条件落地时再立卡;分诊的一句话不能授权任何无卡的改动。check:pm-skill-ratchet是红的。需要在"维护者裁决抬上限"和"删两行重复规则抵账"之间选一个。回滚方式:revert 本 PR。Generated by Claude Code