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
[skill] pm-dispatch: write the PM half of the dev-termination contract — probe-and-revive is load-bearing, and a stale wake must be recognisable without re-reading the deliverable #6747
Filed by the devx seat on accepting PR #6740 (#6586's producer-side half), which deliberately omitted this and declared the omission in its own body. Recording it as an issue rather than trusting anyone to remember it, per the linkage-chore discipline.
PR #6740 wrote the dev side into .claude/agents/os-dev.md: the structured report is the terminal action; a monitor is bound to its own deadline and never to its subject's lifetime; a monitor that fires anyway must open by naming what it watched and whether that thing is still alive.
It could not write the PM side, because .claude/skills/pm-dispatch/SKILL.md was in the merge queue under PR #6720 at the time and editing it would have collided. Two things belong there and are currently unwritten:
The probe-and-revive loop is the standing backstop, not an exception path. SKILL.md's step 6 already describes probing, but it frames it as what you do when something looks wrong. The 2026-08-08 measurement inverts that framing: 7 of 7 dispatches failed to hand back cleanly after opening a correct PR, and three of those carried the termination clause verbatim in their dispatch prompt and failed anyway (3 of 4 clause-carrying runs). A failure mode that hits every dispatch is not an exception. The text should also carry the consequence that makes it cheap: every death so far was fully recoverable from transcript with zero work lost, so the cost is latency, not correctness — which is why the response is a probe and never a redispatch into a possibly-live worktree.
A stale wake should be recognisable without re-reading the deliverable.publish/lint 面对字面量空组合子响亮拒收 —— #5322 拍板单位元后的可选编写期信号(PD #12 形状) #5330 emitted six notifications for one card, five of them redundant replays of the same full JSON report. At arrival each was indistinguishable from a real completion — same shape, same payload — so the PM had to re-adjudicate each one to discover it was a repeat. The dev-side half now asks a monitor to self-identify; the PM-side half should say what to do with that, and should note the cost is paid per arrival by the reader.
Why it is pm:blocked rather than queued
.claude/skills/pm-dispatch/SKILL.md is the repo's hottest serialisation surface — seven cards were batched into #6720 for exactly this reason. This must land on top of#6720, not beside it. Unblock when #6720 merges.
⚠️ At claim time, re-read the merged file rather than the state described here: #6720 added ~166 lines including a new step-3 passage and a rewritten Operational-notes header, so section anchors and any counts have moved. #6720 also landed the Fixes-vs-Part of rule that this card's own filing follows.
Filed unassigned. Dedup before filing: probe-and-revive backstop SKILL pm-dispatch termination over open issues — only #6586 itself, which is the parent, not a duplicate.
Blocked-by: #6720
Filed by the devx seat on accepting PR #6740 (#6586's producer-side half), which deliberately omitted this and declared the omission in its own body. Recording it as an issue rather than trusting anyone to remember it, per the linkage-chore discipline.
What #6740 landed, and what it could not
PR #6740 wrote the dev side into
.claude/agents/os-dev.md: the structured report is the terminal action; a monitor is bound to its own deadline and never to its subject's lifetime; a monitor that fires anyway must open by naming what it watched and whether that thing is still alive.It could not write the PM side, because
.claude/skills/pm-dispatch/SKILL.mdwas in the merge queue under PR #6720 at the time and editing it would have collided. Two things belong there and are currently unwritten:The probe-and-revive loop is the standing backstop, not an exception path. SKILL.md's step 6 already describes probing, but it frames it as what you do when something looks wrong. The 2026-08-08 measurement inverts that framing: 7 of 7 dispatches failed to hand back cleanly after opening a correct PR, and three of those carried the termination clause verbatim in their dispatch prompt and failed anyway (3 of 4 clause-carrying runs). A failure mode that hits every dispatch is not an exception. The text should also carry the consequence that makes it cheap: every death so far was fully recoverable from transcript with zero work lost, so the cost is latency, not correctness — which is why the response is a probe and never a redispatch into a possibly-live worktree.
A stale wake should be recognisable without re-reading the deliverable. publish/lint 面对字面量空组合子响亮拒收 —— #5322 拍板单位元后的可选编写期信号(PD #12 形状) #5330 emitted six notifications for one card, five of them redundant replays of the same full JSON report. At arrival each was indistinguishable from a real completion — same shape, same payload — so the PM had to re-adjudicate each one to discover it was a repeat. The dev-side half now asks a monitor to self-identify; the PM-side half should say what to do with that, and should note the cost is paid per arrival by the reader.
Why it is
pm:blockedrather than queued.claude/skills/pm-dispatch/SKILL.mdis the repo's hottest serialisation surface — seven cards were batched into #6720 for exactly this reason. This must land on top of #6720, not beside it. Unblock when #6720 merges.Fixes-vs-Part ofrule that this card's own filing follows.Related
Filed unassigned. Dedup before filing:
probe-and-revive backstop SKILL pm-dispatch terminationover open issues — only #6586 itself, which is the parent, not a duplicate.