You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
#1894 AC #4: give maintainers a dev-lead-independent way to disposition a blocking PR comment #1910
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.
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)
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).
.github/workflows/lint.yml: registered the new bats file.
AGENTS.md: documented the dev-lead-independent path.
Notes
Not added to scripts/lib/consumer-manifest.json: this is a human-invoked CLI, not a reusable-workflow runtime surface (the manifest validator only accepts scripts/lib/*.sh or prompts/* values).
The gate (maintainer-comment-gate.sh) is unchanged — the maintainer path produces the identical RESOLVED-minimized signal rather than a new/weaker one.
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.
Activity
don-petry commentedon Sep 23, 2026
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
minimizeCommentclassifierRESOLVED— the exact signalmaintainer-comment-gate.shalready 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 fixedclassifier:RESOLVEDmutation) + agh-backedmainguarded byBASH_SOURCE, plus--helpscripts/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 listAGENTS.md— document the maintainer path and that it does not weaken theRESOLVED-minimized requirementTests to Write
tests/dev-lead/unit/test_maintainer_resolve_comment.bats— structural (shebang,set -euo pipefail, shellcheck),--helpdocuments the RESOLVED requirement, mutation hardcodesclassifier: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 passescheck_maintainer_commentsTest Command
scripts/run-bats.sh tests/dev-lead/unit/test_maintainer_resolve_comment.bats(full suite via thebatsjob inlint.yml)don-petry commentedon Sep 23, 2026
Dev-Lead: Progress (in progress — not yet durable)
Plan Execution (intended)
minimizeCommentclassifierRESOLVED— the exact signalmaintainer-comment-gate.shalready honours — so the undispositioned-comment gate can be satisfied without dev-lead running.RESOLVEDhardcoded (requirement not weakened), idempotent, fails closed when it cannot confirm the comment author or the viewer.--helpand a new AGENTS.md subsection; test added and wired into thebatsjob inlint.yml.Files touched (this workspace, not yet pushed)
scripts/maintainer-resolve-comment.sh: new maintainer CLI (puremrc_*helpers +gh-backedmain).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
scripts/lib/consumer-manifest.json: this is a human-invoked CLI, not a reusable-workflow runtime surface (the manifest validator only acceptsscripts/lib/*.shorprompts/*values).maintainer-comment-gate.sh) is unchanged — the maintainer path produces the identicalRESOLVED-minimized signal rather than a new/weaker one.approval-diagnostic.sh(AC test issue from agent #1–Add @claude delegation, auto-merge, and rebase handling #3 / PR feat(#1894): answer "why isn't this PR approved?" from the real pr-review gate chain (+ why-not-approved agent) #1902) is not on this base branch; this change depends only on the existing gate, so no coupling to that unmerged work.don-petry commentedon Sep 23, 2026
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.
b7b805b00fdf75b56cb500aa7eea38d5e2ed8816main: 4 file(s), +399/-0 linesReview 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.
feat: implement issue #1910 — #1894 AC #4: give maintainers a dev-lea…