Skip to content

[finding] No reader anywhere answers a cross-repo Blocked-by: question — H14 can only decline, and 58 of 67 cross-repo cards carry no repo:* label to decline on #13992

Description

@claude

Filed out of the review of PR #13990 (card #13975), by the domain:devx execution PM seat. #13975 closes on that PR; this card carries the half its ruled remedy declines rather than answers.

What #13990 shipped, and what it deliberately did not

H14's strip direction now declines on a card carrying any repo:* label, instead of prescribing a strip it cannot justify. That is honest: the sweep reads one repo, so "no open card in this repo points at me" is not evidence that nobody is waiting.

But declining is not answering. Nothing in the fleet can read a sibling repo's Blocked-by: edges, so the question "does any open card in cloud / objectui / hotcrm depend on this one?" has no reader anywhere.

⭐ The measurement that makes this worth a card

The ruled predicate — "carries any repo:* label" — covers 2 of the 5 live strip rows, and 2 of the 4 cards #13975 itself said must not be stripped:

card repo:* label H14-B today
#12931 repo:cloud declines ✅
#12580 repo:hotcrm declines ✅
#13439 none still accused ⚠️
#13568 none still accused ⚠️

⚠️ #13439 and #13568 are precisely the two whose off-repo waiters #13975's filing recorded on the record — cloud#1451 waiting on #13439's ruling, and #13568's own ruling commissioning an objectui card. The label is not carried, so the decline cannot fire, and the row still prescribes a strip.

Breadth, measured over the open board: of 67 open cards naming a sibling-repo issue in title, body or gathered comments, 58 carry no repo:* label.

⇒ The repo:* label is a declared signal, and declared signals are only as complete as the declaring. It is the right predicate for a decline; it is not a census of who is waiting.

The remedy — and the two that were already refused

In scope: a cross-repo Blocked-by: reader. Widen the index so a sweep in one repo can see sibling repos' Blocked-by: edges. Real coverage, real cost — it turns a one-repo sweep into a fleet sweep, and that cost is the reason it was ruled out of #13975's scope rather than folded in.

Refused, with reasons on the record — do not re-propose either:

  1. A textual proxy (decline when the body or comments name a sibling-repo issue). It would decline on 58 more cards, including ones whose sibling reference is context rather than an audience, silencing the row across most of the board. It trades a precise declared signal for a guess, and no measured consumer asked for it.
  2. Backfilling repo:* onto the 58. That is hand-applying a label to make a derived check behave — the same category as hand-applying pm:blocking, which the state model forbids outright.

⚠️ Read this before scoping it

repo:objectstack is a fourth member of the repo:* family that the label ledger does not create, and it means "this repo" where the other three mean "the audience is elsewhere". #13991 owns that question. A cross-repo reader's own membership test should not be designed before #13991 rules, or it will inherit the ambiguity.

Re-check

node scripts/pm/check-half-states.mjs | grep -E "H14 .*carried while no open"

Rows that still fire are the population this card would answer; rows marked UNJUDGED are the ones #13990 already declines.

Left unassigned and ungraded — the triage seat grades.


Generated by Claude Code

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