You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
finding(pm-skills): SKILL.md never defines a 轮 (round) — the hourly self-timer, the shift-end brief and the per-round report read as a stop, so the triage seat clears about a dozen cards per fire instead of running to empty #15412
Filed by the skills seat (session session_019RfFHiRCSs3JXLK4cwcfox, os-steve) from the maintainer's live PM chat, 2026-09-04 14:5xZ. Self-triaged into this lane: the fix is prose in .claude/skills/pm-dispatch/SKILL.md and its digest, both owned here.
What the maintainer observed (verbatim, untranslated)
The triage seat's own reading, pasted in the same chat: it had cleared 11 cards, written its round report and stopped, with the queue not empty and the usage window not exhausted; two repositories hold 424 cards with no domain:* label (objectstack 43 %, objectui 51 %). It resumed on the maintainer's word.
The rule exists — and it says the opposite of what the seat did
SKILL.md on maina12b15e3, the sweep section: 首触定级每轮必做,跑到清空 — ⛔ 无每轮总量预算,清得动就多清;窗口耗尽未跑完的,下一 fire 从断点续跑;单轮数小时同为可接受形态,⛔ 不是封顶总量的理由. The finding section repeats it: 每 fire 跑到清空, and adds fire 到达时上一轮未清空 ⇒ 接续处理,轮次可跨 fire. Nothing in the corpus authorises stopping at eleven.
Why a careful reader stops anyway — the defect is in the surrounding text, not in that rule
A 轮 is never defined. The word carries four meanings across the file — a fire (one wake-up), the select→claim→dispatch→collect→review→report cycle, a batch (每批 ≤5 张同族卡), and a shift (收班). The sweep rule says 每轮跑到清空; the entry section says 未收班活动任一未满一个轮次 ⇒ 自退; the report section says 每轮向维护者打轮次报告. A reader who takes 轮 = fire concludes that a fire ends with a report.
The self-timer reads as the length of a round. 自排定时默认收班时挂、延时 ≤55 分钟 is a prompt-cache convenience (the rationale is written beside it), but 收班时挂 says the timer is armed at shift end, so every hour becomes a shift end. The timer is the NEXT wake-up, not a budget for this one; the text never says so.
The round report reads as a terminal act. The report section prescribes what the report contains and never says that writing it does not end the work. The handover brief (收班简报) is described as the final stroke of a shift (简报是最终一笔); a seat that conflates the report with the brief stops after the report.
Shift-end and wave-end vocabulary belongs to the executing seat (收工点 = 会话内在飞归零, 收工存档, 立即派下一波) and is written in the shared section. The triage seat has no in-flight PRs to reach zero, so it applies the nearest thing: its own report.
The batch cap reads as a per-round cap. 每批 ≤5 张同族卡 is a quality rule (read five same-family cards in one context), placed one sentence after 跑到清空; a reader keeps the five and drops the run-to-empty.
Net effect measured by the maintainer: an hourly seat that clears about a dozen cards per fire for days, against a backlog that run-to-empty would have drained in two.
The fix (rules only, plain language — the programme's ruling of 2026-09-04)
Add to the digest and to the SKILL.md rewrite, under 入口与角色, two rules with no story attached:
一轮从 fire 醒来开始,到队列清空或用量窗口耗尽为止;轮次报告是轮末给维护者的汇报,⛔ 不是停止信号。
自设定时器只定下一次唤醒,不定本轮长度;新 fire 到达时上一轮未清空的,接续处理,⛔ 不重开、不重排。
And in the SKILL.md rewrite: define 轮 / fire / 批 / 班 once, in one sentence each, and use each word for one thing only; move 收工点 and 收工存档 under the executing seat's section, where they apply.
Disposition
Executed inside #15379: the digest (PR #15402, member 1) takes the two rules now as a patch round, at the same 150-line ceiling (two existing lines merge to pay for them; the dev names which); member 1b (the SKILL.md rewrite) carries the definitions and the vocabulary discipline and closes this card with Fixes. pm:dispatched on the same family flight.
Claim: PM loop round 5 (executed inside the #15379 family — the digest patch round now, the SKILL.md rewrite member next; no separate flight)
Session: session_019RfFHiRCSs3JXLK4cwcfox
Branch: claude/issue-15379-pm-core-rules-digest (member 1, PR #15402 — second patch round), then member 1b's branch when it is dispatched
Worktree: objectstack-issue-15379
Domain: domain:skills
File surface: .claude/skills/pm-dispatch/references/core-rules.md (two rules under 入口与角色, ceiling unchanged at 150 — two existing lines merge to pay); later .claude/skills/pm-dispatch/SKILL.md (the definitions of 轮 / fire / 批 / 班 and the move of the wave-end vocabulary under the executing seat) in member 1b, which closes this card with Fixes.
Container & model: L, mode:subagent, model: opus (the digest flight's tier; the SKILL.md member re-claims)
Clause-②: no
Serial constraints cleared: PR #15402 is the only open PR on the digest; SKILL.md has no open PR (PR #15340 and #15355 touched AGENTS.md and os-dev.md and are MERGED). Governed ⇒ draft, both approvers, human merge.
Decision re-read (14:55Z): the maintainer's two chat messages quoted in the body are the trigger; the ruling that governs the fix is the 2026-09-04 rules-only ruling recorded on #13597 — no new ruling is owed. Graded p1 by the seat: the defect costs the triage seat most of its hourly throughput, measured by the maintainer as days of backlog.
Activity
claude commentedon Sep 4, 2026
Claim: PM loop round 5 (executed inside the #15379 family — the digest patch round now, the SKILL.md rewrite member next; no separate flight)
Session:
session_019RfFHiRCSs3JXLK4cwcfoxBranch:
claude/issue-15379-pm-core-rules-digest(member 1, PR #15402 — second patch round), then member 1b's branch when it is dispatchedWorktree:
objectstack-issue-15379Domain:
domain:skillsFile surface:
.claude/skills/pm-dispatch/references/core-rules.md(two rules under 入口与角色, ceiling unchanged at 150 — two existing lines merge to pay); later.claude/skills/pm-dispatch/SKILL.md(the definitions of 轮 / fire / 批 / 班 and the move of the wave-end vocabulary under the executing seat) in member 1b, which closes this card withFixes.Container & model: L,
mode:subagent,model: opus(the digest flight's tier; the SKILL.md member re-claims)Clause-②: no
Serial constraints cleared: PR #15402 is the only open PR on the digest; SKILL.md has no open PR (PR #15340 and #15355 touched AGENTS.md and os-dev.md and are MERGED). Governed ⇒ draft, both approvers, human merge.
Decision re-read (14:55Z): the maintainer's two chat messages quoted in the body are the trigger; the ruling that governs the fix is the 2026-09-04 rules-only ruling recorded on #13597 — no new ruling is owed. Graded p1 by the seat: the defect costs the triage seat most of its hourly throughput, measured by the maintainer as days of backlog.
Generated by Claude Code