Skip to content

[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

Description

@os-project-manager

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.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:

  1. 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.

  2. 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.

Related

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions