Skip to content

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

@huangyiirene

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: h2AssigneeNoClaimComment now 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:dispatched cards (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-comment spelling on the thread cards read by the predicate after #7488?
bare Claim: 11 ✅ yes (always did)
blockquote > Claim: 2 (#6752, #7378) ✅ yes (this is what #7488 fixed)
bold, em-dash, no colon — **Claim** —, **CLAIM** —, **DEV CLAIM** — 5 (#7485, #7450, #7359, #7363, #7467) ❌ no
Chinese — 认领: / **认领 ·** / **认领 ——** / 🔒 **认领** 4 (#6599, #6350, #4953, #4001) ❌ no
no claim comment at all, in any spelling 0 —

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.

⚠️ A correction to #7488's own body, for the record. It says of the other seven H2 hits: "the other seven are true findings — they carry no claim comment in any form." Its table is literally correct (it measured exactly two spellings, and neither is present), but the generalization is wrong: all seven carry claim comments, in the two spellings above. #7488's acceptance criterion is unaffected — none of the seven uses a blockquote, so all seven are still reported after its fix, which is what PR #7551 verifies.

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:

  1. Converge the fleet on the documented shape. The predicate stays strict; the seats writing **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.
  2. Teach the predicate all four spellings. Costs exactly what finding: the H2 half-state predicate cannot read the claim block SKILL.md tells every seat to write #7488 warned about — each spelling added is regex width, and 认领 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).

Activity

  1. os-zhuang commented on Aug 11, 2026

    @os-zhuang
    Contributor

    Triage: needs-user-decision + domain:devx.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. os-zhuang commented on Aug 11, 2026

    @os-zhuang
    Contributor

    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:devx seat, part of the consolidated SKILL batch, model: claude-fable-5).


    Generated by Claude Code

  3. huangyiirene commented on Aug 11, 2026

    @huangyiirene
    CollaboratorAuthor

    Transferred 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions