Skip to content

#1894 AC #4: give maintainers a dev-lead-independent way to disposition a blocking PR comment #1910

Closed

Description

@don-petry

Summary

Split from #1894 (PR #1902 delivers AC #1–#3 only). Raised on PR #1902 review threads on scripts/lib/approval-diagnostic.sh.

The approval diagnostic correctly reports that an undispositioned non-agent PR comment is the blocking gate, and names what satisfies it: the comment must be minimized with classifier RESOLVED (or an @mention FORCE_REVIEW bypass). maintainer-comment-gate.sh already honours a RESOLVED-minimized comment as addressed. That is AC #1 and it works.

What is missing (AC #4): the only thing that ever performs the minimize is dev-lead. So a comment on a PR where dev-lead is suppressed, rate-limited, cancelled, or never dispatched stays undispositioned forever, and no approval can stand. There is no path a human maintainer can invoke to satisfy the gate against their own comment.

This is the acceptance criterion that actually unblocks the queue of stuck PRs — reporting the blocker is necessary but not sufficient.

Proposed direction

A small script or a documented gh api graphql minimizeComment invocation a maintainer can run against their own comment (minimize with classifier RESOLVED after a verified disposition), so the gate can be satisfied without dev-lead running. Any implementation must preserve the existing gate semantics in maintainer-comment-gate.sh.

Acceptance criteria

  • A maintainer can satisfy the undispositioned-comment gate on their own comment without dev-lead executing.
  • The path is documented (AGENTS.md or script --help) and does not weaken the RESOLVED-minimized requirement the gate already enforces.
  • A test covers the maintainer-invocable path.

Activity

  1. don-petry commented on Sep 23, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead Implementation Plan

    Issue: #1910 — #1894 AC #4: give maintainers a dev-lead-independent way to disposition a blocking PR comment

    Scope

    Add a small, maintainer-invocable script that minimizes a maintainer's OWN PR issue comment with GraphQL minimizeComment classifier RESOLVED — the exact signal maintainer-comment-gate.sh already treats as addressed — so the undispositioned-comment gate can be satisfied without dev-lead ever running.

    Implementation Checklist

    • scripts/maintainer-resolve-comment.sh — new executable with pure, testable helpers (comment-ref parsing, self-authorization, the fixed classifier:RESOLVED mutation) + a gh-backed main guarded by BASH_SOURCE, plus --help
    • scripts/lib/consumer-manifest.json — register the new script on the pr-review + dev-lead surfaces
    • .github/workflows/lint.yml — add the new bats file to the test list
    • AGENTS.md — document the maintainer path and that it does not weaken the RESOLVED-minimized requirement

    Tests to Write

    • tests/dev-lead/unit/test_maintainer_resolve_comment.bats — structural (shebang, set -euo pipefail, shellcheck), --help documents the RESOLVED requirement, mutation hardcodes classifier:RESOLVED, self-authorization (own comment passes, other author fails closed), comment-ref parsing (node id vs URL), idempotency on already-RESOLVED, and a round-trip that the resolved comment then passes check_maintainer_comments

    Test Command

    scripts/run-bats.sh tests/dev-lead/unit/test_maintainer_resolve_comment.bats (full suite via the bats job in lint.yml)

  2. don-petry commented on Sep 23, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead: Progress (in progress — not yet durable)

    Provisional. Nothing is pushed yet; the automation posts the authoritative
    completion record (with PR number + head SHA) after the push. Treat the notes
    below as intent, not delivered results.

    Plan Execution (intended)

    • Added a maintainer-invocable script that minimizes the maintainer's own PR issue comment with GraphQL minimizeComment classifier RESOLVED — the exact signal maintainer-comment-gate.sh already honours — so the undispositioned-comment gate can be satisfied without dev-lead running.
    • Guardrails: self-scope (acts only on a comment the invoking user authored), classifier RESOLVED hardcoded (requirement not weakened), idempotent, fails closed when it cannot confirm the comment author or the viewer.
    • Documented via --help and a new AGENTS.md subsection; test added and wired into the bats job in lint.yml.

    Files touched (this workspace, not yet pushed)

    • scripts/maintainer-resolve-comment.sh: new maintainer CLI (pure mrc_* helpers + gh-backed main).
    • tests/dev-lead/unit/test_maintainer_resolve_comment.bats: structural, --help, mutation-classifier, self-authz, ref parsing, idempotency, and round-trip-through-the-real-gate tests.
    • .github/workflows/lint.yml: registered the new bats file.
    • AGENTS.md: documented the dev-lead-independent path.

    Notes

  3. don-petry commented on Sep 23, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead: Implementation Complete — PR #1911

    The implementation for issue #1910 is durable: commits are pushed and a pull request is open. This record is backed by verifiable artifacts you can confirm in one click.

    Review happens on the PR. Acceptance criteria and test results are evidenced by the PR's diff and CI checks — not asserted here. If a later stage fails, this claim is retracted in place.

  4. added a commit that references this issue on Sep 24, 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

    bugBug reportsdev-leadFor dev-lead agent pickup

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions