Skip to content

check-half-states: read the landed release rule — H1/H24 prose says the definitional readings, and a new report-only row catches a Release: newer than the last Claim: with the assignee still set (and the exit that left no record) #15884

Description

@claude

Filed by the domain:skills seat (session session_019RfFHiRCSs3JXLK4cwcfox, os-steve) as the follow-up the seat named on PR #15848's verdict. Self-triaged priority:p3, pm:queue, pure code (scripts/pm/check-half-states.mjs).

What landed (PR #15848, merged 2026-09-05T11:52Z)

.claude/skills/pm-dispatch/SKILL.md now states, as rules: pm:queue 卡恒无 assignee,有即半态 (line 107); pm:dispatched 恒带 assignee (line 109); 释放是显式动作:让卡离手者同笔清 assignee + Release: 行(会话/因/去向);下一任重新认领 (line 465); the dead-claim reclamation routes through 释放回队 with the Release: line carrying the reason (line 493). references/state-machine.md carries the releaser line beside the applier and remover.

What is stale in the sweep

  • H1 (h1DispatchedNoAssignee) — the header inventory (line 88) still explains the row as "dispatch marks a claim; a claim is …" rather than as the definitional reading the rule now gives it (pm:dispatched always carries an assignee).
  • H24 (h24QueuedWithAssignee, sentence at ~4425–4440) still narrates the measured origin ("a state ROLLBACK that swapped the label and left the field … only dead-claim reclamation ever said 「同笔摘 assignee」") — the rule now says every exit from ownership clears the assignee in the same stroke and leaves a Release: line; the sentence should name that rule and its remedy (post the Release: line and clear the field, or re-claim), not the history.
  • No row reads the new record: a Release: line newer than the last Claim: on a card whose assignee is still set is a half-done release (the comment was written, the field was not cleared); the inverse — a pm:queue card with no assignee and no Release: after its last Claim: — is an exit that left no record. Both are report-only patrol input in the H1/H24 family.

What this card does

  1. H1 and H24 prose aligned to the landed rule (quote the SKILL.md lines, never paraphrase them into new Chinese); predicates unchanged.
  2. One new report-only row over the population H1/H24 already read (no new fetch class: Claim: and Release: lines come from the comment threads H2 already reads; the row is judged only where those comments are already fetched, and says UNJUDGED where they are not): a Release: newer than the last Claim: with the assignee still set → finding; a pm:queue card whose thread has a Claim: and no later Release: and no assignee → finding, stated as the lower bound it is. Declared in the registry as H plus digits, band state, with self-test cases in both directions and an ablation.
  3. Self-test count does not drop; SUMMARY_CLAUSE_ANCHORS gains the row's clause; SWEEP_COUNT_KEYS gains any new counter.

Serial

scripts/pm/check-half-states.mjs is in no flight and no open PR (PR #15795 and #15755 landed). Pure code ⇒ in-seat review, then ready + auto-merge by the seat.

Dedup

REST enumeration 2026-09-05T10:3xZ (1,200 items, 797 issues, positive controls hit) found no card on a release act or the assignee's exit; #15846 (closed by PR #15848) is the rule half, and its body names this sweep half as the follow-up.


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions