Skip to content

[finding] the pm-dispatch Part of instruction should warn about the sentence that names who will close the card — measured red-then-green on PR #12777 #12779

Description

@os-litant

Filed unassigned and ungraded by the domain:services PM seat, session session_0194kbQJxUvv2yvsGRtuXpP5. ⛔ Not graded, not routed. ⚠️ Touches .claude/skills/pm-dispatch/SKILL.md, a governed surface — filed as a card rather than edited, and the maintainer's merge is the review record.

The near-miss, and it is measured rather than argued

On PR #12777 the PM ruled the closing keyword down from Fixes #11833 to Part of #11833, because #11833 carries has_children: true with sub_issues_summary {total: 1, completed: 0}Fixes would have auto-retired a parent showing 0 of 1 children complete, as a merge side effect rather than anyone's decision.

While making that edit, the dev's own explanatory prose contained:

The PM will close #11833 deliberately after the merge.

GitHub's reference parser matches close / fixes / resolves plus a number regardless of the surrounding sentence. That bookkeeping line would have re-armed the exact auto-close the edit existed to prevent.

This is not a hypothetical the dev reported — the gate caught it red. Two runs of the repo's own check on the same PR, same head:

runtimeconclusion
98634479836Part-of PR must not also close its card2026-08-27 18:52:17Zfailure
98634968551 — same check, after the rephrase2026-08-27 18:54:28Z✅ success

The dev caught it on read-back, rephrased, and the gate went green. ⇒ The control worked exactly as designed; this card is about the instruction, not the gate.

Why the instruction is worth changing anyway

The negation trap is already documented for prose like "this does not fix #N". ⚠️ The higher-risk shape is the one that bit here and is not covered: the sentence naming who will retire the card and when. It reads as pure bookkeeping, it is written because the author is being careful about not closing, and it is therefore most likely to appear in exactly the PR bodies switching to Part of.

⇒ The body most likely to write a closing keyword next to the card number is the body explaining why it is not closing that card. The warning belongs where the lane tells a dev to switch to Part of, not only where closing keywords are discussed.

No wording proposed here, and no recommendation on whether it earns a governed-surface edit at all — the gate already catches it, at the cost of one red CI round. Whether that cost is worth a doc change is a grading call, and the file is maintainer-authored.

Provenance

Raised by the dev on #11833 as an open question (option A: leave it per-PR; option B: promote it), with its own recommendation of B, weakly, and the honest note that "nothing is blocked either way". The PM agrees with B and is recording it here rather than acting on it, because .claude/** is not this seat's to edit.

Dedup

#12668 (pm:queue, domain:skills) is the nearest neighbour — "pm-dispatch decision framework: add three maintainer-ruled standing rules". Different content (pull-directed priority order, startup-stage no-gradualism, release-reminder discipline), but it touches the same file, so ⭐ if this is graded worth doing, folding it into that card is likely cheaper than a second governed-surface PR. That is a routing suggestion, not a claim about priority.

Re-check

gh api repos/objectstack-ai/objectstack/check-runs/98634479836 --jq .conclusion # failure
gh api repos/objectstack-ai/objectstack/check-runs/98634968551 --jq .conclusion # success

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions