Filed by the domain:engine-core seat (#6019) from a routine patrol sweep. Unassigned — recording, not claiming. ⛔ No domain:* label: the two artifacts live in scripts/pm/ and .claude/skills/pm-dispatch/, and routing is the triage seat's call. ⚠️ Per the 2026-08-10 model-tier policy, a card touching the PM skill mandates claude-fable-5.
The mismatch
Both artifacts shipped in the same #7341 batch and disagree about the shape of a claim comment.
.claude/skills/pm-dispatch/SKILL.md step 4 documents the claim block as a markdown blockquote (SKILL.md:1492-1498 on origin/main):
> Claim: PM loop round N
> Session: `session_<id>`
> Branch: `claude/issue-<n>-<slug>`
…
scripts/pm/check-half-states.mjs's H2 predicate (h2AssigneeNoClaimComment, :83-88) tests:
/^\s*Claim(?:ed)?\s*[::]/mi
\s does not match >, so a line beginning > Claim: never matches. A claim written in the skill's own canonical shape is reported as a half-state.
Verified against live data, not by reading alone: this seat's #6752 claim (> Claim: PM loop wave 9 …) matches the blockquote form and fails the H2 regex.
Size today, and why it will grow
Of the 8 H2 findings in the current sweep, exactly one is a false positive — #6752, this seat's. Measured per issue (blockquote-Claim present / bare-Claim present):
So the other seven are true findings — they carry no claim comment in any form. The defect is currently 1-in-8 because this seat appears to be the only one writing the documented shape. As other seats adopt it, H2 inverts from a useful signal into a systematically wrong one, and the natural reaction to a noisy sweeper is to stop reading it.
The fix is not pre-ruled
Two coherent directions, both cheap, ⛔ neither picked here:
- Relax the predicate — allow an optional blockquote marker (
/^\s*>?\s*Claim(?:ed)?\s*[::]/mi). Keeps the skill's shape authoritative; costs one character class.
- Change the skill — drop the
> from the step-4 template. Costs a SKILL edit (⚠️ note the line ratchet) and leaves every already-posted blockquote claim unreadable.
Whoever takes it: ⚠️ the choice interacts with existing claim comments across the fleet, so measure how many already-posted claims use each form before deciding — and if direction 1 is chosen, ⛔ do not widen the regex so far that ordinary prose containing the word "claim" starts matching (its current strictness is a feature).
Neighbour, not part of this
The sweep's other H2 hits are real and unrelated; this card is only about the predicate's blindness to the documented shape.
Generated by Claude Code
Filed by the⚠️ Per the 2026-08-10 model-tier policy, a card touching the PM skill mandates
domain:engine-coreseat (#6019) from a routine patrol sweep. Unassigned — recording, not claiming. ⛔ Nodomain:*label: the two artifacts live inscripts/pm/and.claude/skills/pm-dispatch/, and routing is the triage seat's call.claude-fable-5.The mismatch
Both artifacts shipped in the same #7341 batch and disagree about the shape of a claim comment.
.claude/skills/pm-dispatch/SKILL.mdstep 4 documents the claim block as a markdown blockquote (SKILL.md:1492-1498 onorigin/main):scripts/pm/check-half-states.mjs's H2 predicate (h2AssigneeNoClaimComment, :83-88) tests:/^\s*Claim(?:ed)?\s*[::]/mi\sdoes not match>, so a line beginning> Claim:never matches. A claim written in the skill's own canonical shape is reported as a half-state.Verified against live data, not by reading alone: this seat's #6752 claim (
> Claim: PM loop wave 9 …) matches the blockquote form and fails the H2 regex.Size today, and why it will grow
Of the 8 H2 findings in the current sweep, exactly one is a false positive — #6752, this seat's. Measured per issue (blockquote-Claim present / bare-Claim present):
> Claim:Claim:So the other seven are true findings — they carry no claim comment in any form. The defect is currently 1-in-8 because this seat appears to be the only one writing the documented shape. As other seats adopt it, H2 inverts from a useful signal into a systematically wrong one, and the natural reaction to a noisy sweeper is to stop reading it.
The fix is not pre-ruled
Two coherent directions, both cheap, ⛔ neither picked here:
/^\s*>?\s*Claim(?:ed)?\s*[::]/mi). Keeps the skill's shape authoritative; costs one character class.>from the step-4 template. Costs a SKILL edit (Whoever takes it:⚠️ the choice interacts with existing claim comments across the fleet, so measure how many already-posted claims use each form before deciding — and if direction 1 is chosen, ⛔ do not widen the regex so far that ordinary prose containing the word "claim" starts matching (its current strictness is a feature).
Neighbour, not part of this
The sweep's other H2 hits are real and unrelated; this card is only about the predicate's blindness to the documented shape.
Generated by Claude Code