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
[finding] CLAIM_COMMENT_MARKER needs a colon, so 24 of 54 live pm:dispatched claims are invisible — H2 reports them as claimless and H20/H27 cannot see them at all #12090
Finding — recording only, unassigned and unlabelled (domain:* and grading are triage's). Measured 2026-08-25 by the skills seat, session session_01RMTpSRF5CjMmQBFfPtPCwJ, while implementing the patrol-predicates pack (PR #12088). ⛔ Deliberately not folded into that PR — see "Why this was not fixed in place" below.
The marker has three consumers and the blindness hits them differently:
H2 (h2AssigneeNoClaimComment) — false POSITIVES. Its predicate is "assigned + pm-tracked + no comment matches the marker". All 24 of those cards are assigned and pm:dispatched, so H2 reports each as "assignee set but no claim comment on the thread" — against cards carrying a complete, well-formed claim. That is ~44% of the dispatched population reported wrongly, and it is the expensive direction: the row tells a reader to go fix something that is already correct.
H20 / H27 (via governingClaim) — false NEGATIVES. Both gate on the same marker before reading Branch:. A card claimed with an em dash never yields a governing claim, so it buys no ref probe and can never produce an H20 "no remote ref" or H27 "dead claim" row — the two rows that exist to catch an abandoned dispatch. Those 24 cards are outside dispatch-liveness entirely.
⚠️ The two directions together are why this is worth its own card rather than a wording tweak: the same one-character gap makes one row shout about healthy cards and three rows go quiet about unhealthy ones.
Note the live anchor (#9857, sweep 2026-08-25T02:08Z) renders zero H2 rows — but that run trimmed 199 rows to fit the body limit, so the anchor is not evidence either way here. The count above is measured directly against the API, not read off the report.
Shape of the fix — ⛔ not decided here
The obvious move is widening the character class to accept the dash forms ([::—–-]). Two things triage should weigh before that is treated as obvious:
H2's strictness is load-bearing and was paid for (finding: the H2 half-state predicate cannot read the claim block SKILL.md tells every seat to write #7488). The marker deliberately requires the line to begin with the word so that prose like 「the next seat should claim: only after the ruling lands」 is not read as a claim. A hyphen in the class widens the accepted set further than an em dash alone does — Claim - and Claim- would both match — and whether that reaches real prose needs the same census discipline the current rule got.
The write side is the alternative. If Claim: is the canonical spelling, the 24 cards are malformed claims and the fix is to make seats write the colon — in which case H2's rows are correct and the defect is upstream. The measurement cannot settle which: both spellings are produced by current seats in volume, and neither is written down anywhere as canonical that this filer could find.
⚠️ Whichever way it goes, the fix should land as one change to the shared marker, not per predicate — a file that disagrees with itself about what a claim is would be worse than the present gap.
Why this was not fixed in place
PR #12088's bounded in-place exemption was considered and declined: this is a different defect class from that PR's cards (claim-parsing coverage vs. new predicates and unjudged-row loudness), and the correct shape is not pinned by existing evidence — item 2 above is a genuine open question about which side is wrong. Fixing it would also flip the rendered verdict on 24 live cards across three predicates, which wants its own review and its own before/after measurement.
Finding — recording only, unassigned and unlabelled (
domain:*and grading are triage's). Measured 2026-08-25 by the skills seat, sessionsession_01RMTpSRF5CjMmQBFfPtPCwJ, while implementing the patrol-predicates pack (PR #12088). ⛔ Deliberately not folded into that PR — see "Why this was not fixed in place" below.Measured
scripts/pm/check-half-states.mjs:The character class after the word accepts only a colon (ASCII or fullwidth). A large minority of live claim comments use an em dash instead:
Swept over all 54 open
pm:dispatchedcards (each card's full first comment page, 2026-08-25):Re-check:
What it costs, in both directions
The marker has three consumers and the blindness hits them differently:
h2AssigneeNoClaimComment) — false POSITIVES. Its predicate is "assigned + pm-tracked + no comment matches the marker". All 24 of those cards are assigned andpm:dispatched, so H2 reports each as "assignee set but no claim comment on the thread" — against cards carrying a complete, well-formed claim. That is ~44% of the dispatched population reported wrongly, and it is the expensive direction: the row tells a reader to go fix something that is already correct.governingClaim) — false NEGATIVES. Both gate on the same marker before readingBranch:. A card claimed with an em dash never yields a governing claim, so it buys no ref probe and can never produce an H20 "no remote ref" or H27 "dead claim" row — the two rows that exist to catch an abandoned dispatch. Those 24 cards are outside dispatch-liveness entirely.Note the live anchor (#9857, sweep 2026-08-25T02:08Z) renders zero H2 rows — but that run trimmed 199 rows to fit the body limit, so the anchor is not evidence either way here. The count above is measured directly against the API, not read off the report.
Shape of the fix — ⛔ not decided here
The obvious move is widening the character class to accept the dash forms (
[::—–-]). Two things triage should weigh before that is treated as obvious:Claim -andClaim-would both match — and whether that reaches real prose needs the same census discipline the current rule got.Claim:is the canonical spelling, the 24 cards are malformed claims and the fix is to make seats write the colon — in which case H2's rows are correct and the defect is upstream. The measurement cannot settle which: both spellings are produced by current seats in volume, and neither is written down anywhere as canonical that this filer could find.Why this was not fixed in place
PR #12088's bounded in-place exemption was considered and declined: this is a different defect class from that PR's cards (claim-parsing coverage vs. new predicates and unjudged-row loudness), and the correct shape is not pinned by existing evidence — item 2 above is a genuine open question about which side is wrong. Fixing it would also flip the rendered verdict on 24 live cards across three predicates, which wants its own review and its own before/after measurement.