Skip to content

fix(pm): H14's stale pm:blocking row stops claiming completeness across repos - #10239

Merged
qq9340100 merged 1 commit into
mainfrom
claude/issue-10139-h14-repo-boundary
Aug 20, 2026
Merged

fix(pm): H14's stale pm:blocking row stops claiming completeness across repos#10239
qq9340100 merged 1 commit into
mainfrom
claude/issue-10139-h14-repo-boundary

Conversation

@qq9340100

Copy link
Copy Markdown
Collaborator

Fixes#10139

What

h14BlockingCacheIncoherent's STALE direction row text claimed
completeness it did not have: "judged against the full two-channel index"
and a remedy that instructed an unconditional pm:blocking label drop.
buildBlockingIndex only ever scans this repo's open-issue listing —
a dependent in a sibling repo (objectui#4356's Blocked-by: #7917,
naming this repo's #7917) is invisible to the index by construction, not
by any read failure. Following the old row's prescribed remedy on #7917
would have severed that live cross-repo edge.

Scope, per the grading comment on #10139: direction 1 only — wording
fix + self-test pin. Direction 2 (sweeping sibling repos) and direction 3
(a suppression channel) are explicitly out of scope for this PR.

Change

  • scripts/pm/check-half-states.mjs, h14BlockingCacheIncoherent's STALE
    branch: the row now says "no dependent found in this repo; cross-repo
    dependents are not swept, so this is not a claim of exhaustiveness over
    the population" and the remedy reads "verify cross-repo dependents
    before the triage sweep's derivation pass drops the label" — conditional
    rather than an outright instruction.
  • Same function's JSDoc gets a short ## STALE is also repo-local, and the row says so (#10139) section explaining why indexComplete cannot and
    does not cover this boundary.
  • Self-test: 4 new pins — the boundary wording present (no dependent found in this repo, cross-repo dependents are not swept, verify cross-repo dependents before) and the old exhaustive phrasing
    (full two-channel index) confirmed gone. 558 -> 562 cases.
  • H15 was checked for the same exhaustiveness claim per the grading
    comment's "check, don't assume" — its row measures this-repo
    pm:blocking card age, not Blocked-by: index completeness, so it does
    not carry the claim and is unchanged.

Tests

skip-changeset: internal .claude/scripts/pm tooling row-text + self-test
change only, nothing published.

Generated by Claude Code


Generated by Claude Code

…ss repos
The STALE direction's row text read "judged against the full two-channel
index" and prescribed an unconditional label drop, but buildBlockingIndex
only ever scans this repo's open-issue listing — a real dependent living in
a sibling repo (e.g. objectui#4356's Blocked-by: #7917) is invisible to it
by construction, not by any read failure. The row now names the repo
boundary explicitly ("no dependent found in this repo; cross-repo
dependents are not swept") and makes the remedy conditional on verifying
cross-repo dependents before the triage sweep's derivation pass drops the
label, rather than instructing an outright drop.
H15 was checked for the same exhaustiveness claim and does not carry one —
its row measures this-repo pm:blocking card age, not blocked-by index
completeness — so it is unchanged.
Self-test: 4 new pins (repo-boundary wording present, old exhaustive
phrasing gone), 558 -> 562 cases, all passing.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/sskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants

@qq9340100@claude