Repository navigation
docs(pm-dispatch): name the hourly card refresh as a second pm:blocked returner; Blocked-by: undecorated is the spelling to write - #24345
Conversation
…d returner The hourly full-run card's refresh (scheduled-full-run-card.yml through scripts/ci/scheduled-full-run.mjs) now swaps pm:blocked for pm:queue under a narrower rule than the unlock scan. The state-model row names it beside the unlock scan; state-machine.md carries its rule (every both-channel target a closed local card, no Unlock-action: line, no assignee; a closed cross-repo target never releases) and says the undecorated marker is the spelling to write while the shared reader also accepts a bullet and bold/backtick decoration. Both files stay at their line ceilings: the two added lines are paid by folding the on-hold double-check pair into one line and the finished- work re-dispatch ban into its own card's line. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V1upgJbYCZ5xed9pEQF4Tz
Contract reviewServed-tier: Face: governed rules text ( ① Derived judgments
② Semver levelNo published package is touched; ③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
维护者速读(终稿)改了什么:PM 技能两处协议文本补齐。① 为什么改:PR #24305 已让小时红卡刷新在上述条件下把 风险与代价(含回滚):只改席位读的协议文本,不碰代码、门禁; 席位意见:ACCEPT,席内达档复核 PASS(见上一条评论)。无需您裁的事。 你要做的:无需操作。Tier S,本席经中继 ready + auto-merge 入队。 席位核对ACCEPT — PR #24345, head
Generated by Claude Code |
Fixes #24322
Clause-②: no
What changed
.claude/skills/pm-dispatch/SKILL.md〈状态模型〉, thepm:blockedrow: 「#N 关闭时由解锁扫描放回」 → 「#N 关闭时由解锁扫描或scheduled-full-run-card.yml刷新放回」. Nothing else in the row..claude/skills/pm-dispatch/references/state-machine.md〈pm:blocked〉:DIRECTIVE_PREFIXinscripts/pm/check-half-states.mjs) also accepts a list bullet and bold or backtick decoration.staleBlockVerdict's exits inscripts/ci/scheduled-full-run.mjs(held on an open, unread, closed-cross-repo or declared-Unlock-action:target; assigned; else expired):scheduled-full-run-card.yml经scripts/ci/scheduled-full-run.mjs刷新小时红卡时亦放回,规则更窄:」Unlock-action:行、无 assignee 才放;跨仓已关不放。」No behaviour change, no gate, no label, no sweep. No issue or PR number in the rule text (
pnpm check:pm-skill-id-lintexit 0).Line budget — both files stay at their ceilings
.claude/skills/pm-dispatch/SKILL.mdpm:blockedrow 296 → 336 bytes (pin 342); the file's widest row is still the 342-bytedomain:enginerow.claude/skills/pm-dispatch/references/state-machine.mdTwo lines added in
state-machine.md, both paid in the same file; every clause's survival site:pm:on-hold〉 two lines → one (−1)pm:on-hold/pm:blocked转换评论的条件。」 + 「② 该评论之后卡上有更新的 merged PR ⇒ 拒绝放行;⛔ 永不对更早的 blocker 放行。」pm:on-hold/pm:blocked→ hold/blocked, SKILL.md's own spelling (「hold/blocked 的行契约」)pm:blocked〉 finished-work line absorbs the re-dispatch ban (−1)Blocked-by:指向那张门禁卡。」 + 「⛔ 永不给完工卡重派 dev。」Blocked-by:指向门禁卡。」 (115 B)pm:blocked〉 正典标记 tailNo ceiling raise, no
CROSS_FILE_MOVESentry, no edit to the ratchet script, no re-wrap. The seat's reading (d) was measured and only half holds: the 正典标记 tail folds losslessly (above), but the 「等发布」 half of the next line and thePart ofline carry 224 bytes of distinct content (a card that closes at that moment vs. the pin-bump chore card and thePart ofban), so that fold saves no line; the second payment was taken from the on-hold pair instead.Verification (head
9b164c9a)Derived at base
68a090fbover the two files and re-derived with no paths at9b164c9a(node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack): 20 commands, identical lists. All 20 run locally on9b164c9a, each exit code captured before any pipe;--ranreconciliation: 「20 derived famil(ies) accounted for — 20 run, 0 NOT-MEASURED」.pnpm check:pm-skill-ratchetexit 0 — 「SKILL.md: widest table row is 342 bytes (pin 342; headroom 0)」, 「SKILL.md is 319 lines (ceiling 319; headroom 0)」, 「state-machine.md is 41 lines (ceiling 41; headroom 0)」.pnpm check:pm-skill-id-lintexit 0 — 「87 file(s) clean (pattern /#[0-9]{3,}/g)」.pnpm --filter @objectstack/lint run check:doc-formula-expressions: first run exit 3, the gate's declared prerequisite refusal (@objectstack/lintnot built — nothing measured); afterpnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lintunder the verify lock (「VERDICT command-exit 0」), rerun exit 0 on the same tree.pnpm check:skill-frame-freshnessexit 0 (「the decision frame in this tree is current with origin/main」); its reading stays local.pnpm check:skill-frame-syncexit 0).test:repoand the whole-farm lint are CI's.Premise re-checks at
68a090fb(all hold):解锁扫描放回1 in SKILL.md (controlpm:blocked2);正典标记1 hit at state-machine.md L24 (controlUnlock-action1);export function staleBlockVerdict1 in scheduled-full-run.mjs (controlfileOrRefreshCard8).Acceptance notes
origin/mainadvanced to51ad8e4f(cli/runtime) during the run; no overlap with these two files, branch left one commit behind rather than merged forward..claude/**publishes nothing:skip-changesetdeclared on thepr_createstroke.维护者速读(草稿)
pm:blocked行多写一个放回者(小时 CI 红卡的刷新工作流scheduled-full-run-card.yml);状态机细则里写明Blocked-by:标记「写时无装饰、读者兼收装饰」,并补上第二放回者的更窄规则(双通道目标全为本仓已关卡、无Unlock-action:行、无 assignee;跨仓已关不放)。两文件行数不变(319/319、41/41),新增两行由同文件内两处无损合并付账,每个条款的落点见上表。main上这样做,协议文字却仍只写解锁扫描一个放回者,并把「无装饰」写成唯一读法;agent 按旧文字会误判卡的来路和标记的合法拼写。domain:skills席位达档复核后入队落地。Generated by Claude Code