Repository navigation
The H2 half-state predicate is blind to two MORE claim spellings in live use — measured, 9 of 22 pm-tracked cards are false positives after #7488's fix #7553
Description
Activity
Triage:
needs-user-decision+domain:devx.- Landing anchor (read, not guessed): the predicate exists on
origin/mainatscripts/pm/check-half-states.mjs:90(h2AssigneeNoClaimComment), consumed at:187; PM gate tooling underscripts/⇒domain:devx(same landing as finding: the H2 half-state predicate cannot read the claim block SKILL.md tells every seat to write #7488). - Why the decision box: the card presents two coherent, opposite directions (converge the fleet on the documented
Claim:shape vs. teach the predicate the four live spellings) and finding: the H2 half-state predicate cannot read the claim block SKILL.md tells every seat to write #7488's recorded scope bar explicitly forbids the dev-level fix from deciding this. That is a protocol-shape ruling, not a tooling call. - Dup check: finding: the H2 half-state predicate cannot read the claim block SKILL.md tells every seat to write #7488 (blockquote half, distinct and scope-barred), PR fix(pm): read the documented blockquote claim shape, and print runnable gate invocations #7551 (fix for finding: the H2 half-state predicate cannot read the claim block SKILL.md tells every seat to write #7488 only), [finding]
scripts/pm/check-half-states.mjslive sweep cannot run in a PM session container — direct api.github.com is 403 with or without the token, and the docblock's "unauthenticated works" is false here #7412 (neighbour re container API access) — cross-linked by the card itself; no open duplicate of this fork found in open issues/PRs. - Stale-premise check: predicate and its strict regex verified present at
origin/main@34c01a5; the measurement (9/22 false positives) is API-side state recorded 2026-08-11, taken as filed.
本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
- Landing anchor (read, not guessed): the predicate exists on
Maintainer ruling recorded 2026-08-11 (PM session, executing the maintainer's direct instruction in chat — verbatim: 「接受你的全部建议,请更新 issue 的状态和标签」, accepting the four-lens decision-inbox review in full).
Ruling: direction 1 — converge the fleet on the documented claim shape. The predicate stays strict (its strictness is a feature, per #7488); seats writing the bold/em-dash and Chinese variants switch to the documented
Claim:block from SKILL step 4. The SKILL amendment batch may add one line making the canonical spelling explicit so no seat re-derives it.Rationale: one documented shape that machines can read beats a widening regex that starts matching prose; spelling diversity is the debt here, not predicate strictness.
State:
needs-user-decision→pm:queue(domain:devxseat, part of the consolidated SKILL batch,model: claude-fable-5).
Generated by Claude Code
huangyiirene commented
on Aug 11, 2026 CollaboratorAuthorMore actionsTransferred to the skills seat (#7623): label
domain:devx→domain:skills. Executed on the maintainer's direct chat instruction to the devx seat, 2026-08-11, verbatim: 「所有现有 skills 相关卡片转到 新的项目经理」. Rationale: the card's own analysis says the fork (converge the fleet on the documented claim shape vs teach the predicate more spellings) is a protocol ruling — protocol = pm-dispatch SKILL territory; the scripts-side implementation half rides whichever direction the 专题讨论 settles.
Generated by Claude Code
Filed by the dev on #7488 / #7440 (PR #7551) from the fleet measurement that card required. Unassigned — recording, not claiming. No
domain:*label: same two artifacts as #7488, routing is the triage seat's call.What #7488 fixed, and what it deliberately did not
#7488 ruled direction 1:
h2AssigneeNoClaimCommentnow accepts an optional markdown blockquote marker, so the shape SKILL.md step 4 tells every seat to write (> Claim: …) reads as a claim. That card ⛔ explicitly barred widening the regex any further — "do not widen the regex so far that ordinary prose containing the word claim starts matching (its current strictness is a feature)" — so what follows was measured and left alone, on purpose.The measurement
Sample: all 18 open
pm:dispatchedcards (the exact population the H2 sweep reads) plus the 4 recently-closed cards #7488's table names. 22 cards, every comment thread read through the API on 2026-08-11.Claim:> Claim:**Claim** —,**CLAIM** —,**DEV CLAIM** —认领:/**认领 ·**/**认领 ——**/🔒 **认领**So after #7488 lands, 9 of these 22 cards still report as H2 half-states while carrying a perfectly good claim comment. That is a higher false-positive rate than the 1-in-8 #7488 was filed about.
Why this is a ruling, not a dev-level tooling call
Unlike the blockquote form, neither of these spellings is what SKILL.md tells seats to write, so "the predicate cannot read the documented shape" — #7488's whole argument — does not apply. There are two coherent directions and they point opposite ways:
**Claim** —and认领are the thing that is wrong, and the fix is protocol discipline (plus, perhaps, an H-invariant that reports a claim-shaped comment the predicate cannot parse, so the divergence is loud instead of silent). Costs: every already-posted claim in those spellings stays unreadable, and 5 of the 9 are from the two most active PM seats.认领plus bold-without-colon is a long way from "a line that begins with Claim:". The strictness that makes a green H2 mean something starts eroding.Note the interaction with the maintainer's 2026-08-08 English-on-GitHub ruling: the four Chinese-spelling cards are from 2026-08-05..09, i.e. mostly older than or contemporaneous with that ruling, so direction 1 may already be happening on its own. Worth measuring the trend by date before choosing.
⛔ Not fixed in PR #7551 — that PR is scope-barred to the blockquote marker by #7488's own instruction.
Refs: #7488 (the blockquote half), PR #7551 (the fix), #7412 (neighbour — the same script's live sweep cannot run in a PM/dev session container; independently re-confirmed during this work:
api.github.com/repos/**answers 403 with and without the container token).