Repository navigation
Commit 2070a1d
fix(pm): H19 judges a
Fixes #17564
H19 (`scripts/pm/check-half-states.mjs`) built its `Blocked-by:` target
set as one union of the card **body** and its **comment thread**, and
then both *discovered* and *judged* against that union. The two carriers
are not equal in authority — **a body is rewritten in place, a comment
is an archive** — so a target a seat superseded by refreshing the body
line kept living in the historic comment forever and kept being counted,
and the row published 「the block has outlived its blocker」 against a
card whose authoritative blockers were all open.
That row fired on #11333 on every sweep from 2026-08-31 to 2026-09-12
and was hand-dispositioned **four** times by three different seats. The
archive it reads is the record of an *earlier* H19 row being repaired,
so the repair manufactures the next false positive and no work on the
card can ever clear the row.
## What changed
**Discovery is untouched.** `blockerTargetsFor` still unions both
channels, and every consumer of that union — the resolver and its
per-target cache, H26, H28 — still sees every target a card names in
either channel. A blocker stated only in a comment is still a blocker,
and one of H19's two founding fixtures is exactly that card.
**Judgement takes the body's set** whenever the body carries any
`Blocked-by:` line, and the comment-borne set only when it carries none.
The row text now names the carrier it judged.
### Blocked-by: block against the body's target set (#17807)1 parent 26e0d81 commit 2070a1d
1 file changed
Lines changed: 242 additions & 15 deletions
0 commit comments