Skip to content

fix(pr-pipeline): let pr-verify judge a head held only by do-not-merge #10819

Closed

Description

@kyle-sexton

Problem

A session that holds a pull request with do-not-merge, as AGENTS.md requires for any hold, also stops pr-verify from judging that pull request. ci-status fails on the label (pr-contract: this PR carries the 'do-not-merge' label). pr-verify runs only on a head that passes pr-require-checks, or one that fails only on holds an approving review lifts (pr-verify.yml header; resolve-pr.mjs heldOnly). do-not-merge is neither, so the held head gets no verdict, which is exactly when the holding session needs one.

Observed on #10737: pr-verify failed head d5cb96ae82 at 2026-10-28T22:06Z, and the session applied do-not-merge right after. Fixes were pushed at 5e9164c0b8 and 58c8610474, but no verdict came until the label was removed at about 00:20Z. pr-verify then passed within minutes.

Fix

Have pr-verify's trigger gate treat do-not-merge as a held-only reason: judge the head, and keep ci-status failing on the label so the hold still stops the merge. A verifier verdict merges nothing, so judging a held head loosens no hold.

Done when

  • A pull request whose only ci-status failures are do-not-merge and holds an approving review lifts gets a pr-verify verdict at its head.
  • ci-status still fails while do-not-merge is on, and the merge queue still refuses the pull request.
  • A test pins both, and fails if do-not-merge is dropped from the held-only set.

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 29, 2026
  2. github-actions commented on Oct 29, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Small
    Complexity: Low
    Uncertainty: Known
    Flags: none
    Blocked by: none

    Understood: a pull request held only by do-not-merge gets no pr-verify verdict, because the trigger gate doesn't count that label as a hold an approving review lifts. The proposed fix adds do-not-merge to the held-only set. ci-status keeps failing on the label, so the merge stays blocked. A test would pin both behaviours. The issue is clear and I found no duplicates among open issues.

    Automated triage, applied by the lanes App.

  3. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 29, 2026
  4. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    admission-deferredAdmitted but waiting for WIP room; the hourly work-unblock sweep labels it agent-ready.
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    admission-deferredAdmitted but waiting for WIP room; the hourly work-unblock sweep labels it agent-ready.
    on Oct 29, 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

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions