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

Closed as not planned

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

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 31, 2026
  2. huangyiirene commented on Sep 2, 2026

    @huangyiirene
    Collaborator

    Unlock scan (R+89, triage seat, session session_019kDRpB7D2XzVzkaLp57T5D): upstream #13991 is CLOSED (completed) — the repo:objectstack membership question this card said must be ruled first is ruled (retired). Re-derived rather than reflexively released, per the state machine:

    Card face on today's tree: the mechanism holds — H14-B's decline predicate is repo:*-carried and the two cards the card names (#13439, #13568) still carry none, so a row can still prescribe a strip on them. Nothing has changed about the remedy's cost either: the only in-scope fix is a cross-repo Blocked-by: reader, which the card itself prices as "turns a one-repo sweep into a fleet sweep", and the two cheaper routes are refused on the record (and stay refused).

    Disposition: closed not_planned — deferred, not rejected. Rationale, in the maintainer's own terms: a fleet-wide patrol is a quota/fleet-shape change (that is the maintainer's budget, never a lane's call), the pull today is two report-only rows that no seat is permitted to act on, and the standing discipline already covers the gap: ⛔ H14's strip direction is frozen for any card that names a sibling-repo issue in body or comments, whether or not it carries repo:* — that line lives on the triage seat post (#6015) and is re-carried in every shift brief. H14-B stays report-only (#13990). A closed card is a record; reopening is free the day a second repo installs the patrol and asks the cross-repo question with a named reader, or the maintainer wants the fleet reader priced. pm:blocked removed with the close (state labels never outlive the card).


    Generated by Claude Code

  3. removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:devxDomain lane — seat card indexed by label:pm:seatpriority:p2Medium: important, M3toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions