Skip to content

feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead - #1344

Merged
don-petry merged 7 commits into
mainfrom
dev-lead/issue-1290-20260721-1159
Jul 21, 2026
Merged

feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead#1344
don-petry merged 7 commits into
mainfrom
dev-lead/issue-1290-20260721-1159

Conversation

@don-petry

@don-petry don-petry commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

Closes #1290

Implemented by dev-lead agent. Please review.

Summary by CodeRabbit

  • New Features

    • Automated approvals now pause when a newer maintainer issue comment may require attention.
    • Added a FORCE_REVIEW bypass for exceptional cases.
    • Approval checks now fail closed when review status cannot be determined.
  • Documentation

    • Added guidance on approval gates, maintainer comments, bypass behavior, and clearing conditions.
  • Bug Fixes

    • Improved review-comment deduplication and tracking with invisible markers.
  • Tests

    • Added coverage for gate behavior, failure handling, exclusions, and workflow integration.

…ically inert — they neither block merge nor reach dev-lead
Copilot AI review requested due to automatic review settings July 21, 2026 12:31
@don-petry
don-petry requested a review from a team as a code owner July 21, 2026 12:31
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@don-petry, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 45 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 101461ce-f65c-4249-89d2-15a86613edeb

📥 Commits

Reviewing files that changed from the base of the PR and between ce41c73 and b3680f7.

📒 Files selected for processing (1)
  • scripts/review-one-pr.sh
📝 Walkthrough

Walkthrough

Adds a fail-closed maintainer issue-comment gate before automated approval, with timestamp-based clearing, bypass and dismissal handling, documentation, manifest wiring, and Bats coverage. Also adds HTML markers to selected dev-lead comments for deduplication and forensics.

Changes

Maintainer comment gate

Layer / File(s) Summary
Gate detection and status handling
scripts/lib/maintainer-comment-gate.sh
Filters maintainer issue comments, excludes automation markers and bots, compares comment timestamps with the PR head commit, and returns approval, skip, or fail-closed statuses.
Approval workflow integration
scripts/review-one-pr.sh, scripts/lib/consumer-manifest.json
Runs the gate before approval, supports FORCE_REVIEW, dismisses matching approvals for newer findings, handles evaluation failures, and registers the gate script.
Gate documentation and validation
tests/dev-lead/unit/test_maintainer_comment_gate.bats, docs/pr-review-agent/*
Documents comment semantics and approval gates, and tests structural, runtime, fail-closed, bypass, and integration behavior.

Review comment markers

Layer / File(s) Summary
Comment deduplication markers
scripts/dev-lead-fix-reviews.sh
Adds HTML markers to CodeRabbit resolve comments and rate-limit acknowledgment bodies.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant review-one-pr.sh
  participant maintainer-comment-gate.sh
  participant GitHub
  review-one-pr.sh->>maintainer-comment-gate.sh: Evaluate PR comment snapshot
  maintainer-comment-gate.sh->>GitHub: Read PR head committer date
  GitHub-->>maintainer-comment-gate.sh: Return head timestamp
  maintainer-comment-gate.sh-->>review-one-pr.sh: Return gate status
  review-one-pr.sh->>GitHub: Dismiss approval or continue approval flow
Loading

Possibly related PRs

Suggested labels: needs-human-review

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning scripts/dev-lead-fix-reviews.sh adds marker-only resolve and rate-limit ack changes that are not required by #1290. Split the dev-lead marker and acknowledgment changes into a separate PR unless they are needed for the #1290 gate.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the maintainer-comment gate work and issue #1290.
Linked Issues check ✅ Passed The PR adds docs, tests, and a fail-closed maintainer-comment gate that blocks approval until addressed, matching #1290.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev-lead/issue-1290-20260721-1159

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@don-petry

Copy link
Copy Markdown
Collaborator Author

Dev-Lead — waiting on PR blockers (intent: review-changes)

PR: #1344
No changes were committed, but the PR still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews). The retry cron will re-attempt automatically. Next attempt after: 2026-07-21T13:04:48Z

@don-petry

Copy link
Copy Markdown
Collaborator Author

Note

@don-petry I reviewed this PR and no code changes were needed, but it still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews), so I cannot mark it done yet. I'll re-check automatically.
Next attempt after: 2026-07-21T13:04:48Z

@don-petry
don-petry enabled auto-merge (squash) July 21, 2026 12:34

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a maintainer issue-comment gate to prevent PRs from auto-merging when there are unaddressed maintainer comments posted as issue comments. It includes the gate logic script, integration into the PR review process, updated comment markers to prevent self-blocking, comprehensive BATS tests, and documentation. The review feedback suggests enhancing the robustness of jq parsing in the gate script by using optional chaining (?) to safely handle potential null values, such as for deleted users or missing GraphQL resources, preventing script crashes under set -e.

Comment thread scripts/lib/maintainer-comment-gate.sh Outdated
Comment thread scripts/lib/maintainer-comment-gate.sh Outdated
@don-petry
don-petry disabled auto-merge July 21, 2026 12:37

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Implements a new “maintainer issue-comment gate” to address #1290 by preventing pr-review from auto-approving when a (non-threaded) PR issue comment from a human/maintainer post-dates the last push, plus documents the behavioral difference between review threads vs issue comments.

Changes:

  • Add scripts/lib/maintainer-comment-gate.sh and wire it into scripts/review-one-pr.sh so pr-review withholds approval (fail-closed) when a maintainer issue comment appears newer than the last push.
  • Add Bats unit coverage for the gate’s runtime behavior and its wiring into review-one-pr.sh.
  • Add documentation explaining the two “comment tiers” and how the new gate works, and register the new script in the pr-review consumer manifest.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/dev-lead/unit/test_maintainer_comment_gate.bats Adds unit tests for the maintainer issue-comment gate logic and review-one-pr wiring.
scripts/review-one-pr.sh Invokes the maintainer issue-comment gate before posting approvals, with FORCE_REVIEW bypass and fail-closed behavior.
scripts/lib/maintainer-comment-gate.sh Introduces the gate logic to detect unaddressed maintainer issue comments from PR snapshot JSON.
scripts/lib/consumer-manifest.json Registers the new gate script as part of the pr-review workflow surface.
scripts/dev-lead-fix-reviews.sh Adds <!-- dev-lead --> / <!-- dev-lead rate-limit-ack --> markers so dev-lead automation comments aren’t misclassified as maintainer findings.
docs/pr-review-agent/maintainer-comment-gate.md Documents the mechanical difference between issue comments vs review threads and the new gate semantics.
docs/pr-review-agent/implementation.md Documents pr-review’s approval gates, including the new maintainer issue-comment gate.
docs/pr-review-agent/documentation-index.md Adds the maintainer-comment-gate doc to the pr-review-agent documentation index.

Comment thread scripts/lib/maintainer-comment-gate.sh Outdated
Comment thread scripts/review-one-pr.sh
coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 21, 2026
@don-petry

Copy link
Copy Markdown
Collaborator Author

Dev-Lead — fix-reviews (applied)

Changes committed and pushed.

Updated .github/workflows/pr-review-mention.yml to use the stable channel pin
and reflect the canonical PAT documentation, aligning with latest standards.
This addresses the template-drift check failure for repo-template.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
@don-petry

Copy link
Copy Markdown
Collaborator Author

Dev-Lead — fix-bot-comment (applied)

Changes committed and pushed.

@don-petry
don-petry enabled auto-merge (squash) July 21, 2026 12:47
@don-petry
don-petry disabled auto-merge July 21, 2026 12:49
@don-petry

Copy link
Copy Markdown
Collaborator Author

Dev-Lead — fix-bot-comment (no-changes)

Agent reasoning
   - Per AGENTS.md, this is expected behavior for standards updates and will be handled by `seed-repo-template.sh` in a separate process
   - **No code changes needed in this repo** — the standards update is correct
3. **CodeRabbit failure** — ⚠️ **Rate-limited** 
   - The check status shows "Review rate limited" — a transient API limitation, not a code quality issue
   - Cannot be fixed by code changes; will resolve on retry
**Conclusion:**
There are no actionable code issues to fix in this PR. The SonarCloud analysis shows a passing quality gate with zero findings. The two CI failures (template-drift and CodeRabbit) are not fixable through code changes in this repository:
- template-drift is an expected cross-repo sync issue that will be resolved after merge
- CodeRabbit is transient rate-limiting
The PR is ready from a code quality perspective.

@don-petry
don-petry enabled auto-merge (squash) July 21, 2026 12:52
@don-petry

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@don-petry
don-petry disabled auto-merge July 21, 2026 14:01
@don-petry

Copy link
Copy Markdown
Collaborator Author

Dev-Lead — fix-bot-comment (applied)

Changes committed and pushed.

@don-petry
don-petry disabled auto-merge July 21, 2026 14:14
@don-petry
don-petry enabled auto-merge (squash) July 21, 2026 14:23
coderabbitai[bot]
coderabbitai Bot previously requested changes Jul 21, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
scripts/dev-lead-fix-reviews.sh (1)

1248-1270: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Remove duplicate function definition.

The post_reviews_rate_limited function is defined twice in this file (starting at line 720 and again at line 1133), and both instances have been updated identically here. Since redefining a top-level function in Bash simply overwrites the previous definition, this is redundant duplicate code. Please remove the entire second duplicate definition (lines 1133-1281) to improve maintainability.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/dev-lead-fix-reviews.sh` around lines 1248 - 1270, Remove the second
duplicate definition of post_reviews_rate_limited, including its entire body and
closing boundary, while preserving the earlier definition and all surrounding
on-mention handling.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/review-one-pr.sh`:
- Around line 318-328: Update the approval lookup in the
unaddressed-maintainer-comment branch to match the parameterized bot login from
BOT_USER, safely handling null reviews while extracting the review Node ID.
Replace the invalid gh pr review --dismiss invocation with a GitHub GraphQL
dismissPullRequestReview mutation using the extracted review ID, while
preserving the existing best-effort warning behavior.

---

Outside diff comments:
In `@scripts/dev-lead-fix-reviews.sh`:
- Around line 1248-1270: Remove the second duplicate definition of
post_reviews_rate_limited, including its entire body and closing boundary, while
preserving the earlier definition and all surrounding on-mention handling.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 6b2126d5-25c4-4bab-9781-8f0af41fe249

📥 Commits

Reviewing files that changed from the base of the PR and between ae1268b and ce41c73.

📒 Files selected for processing (8)
  • docs/pr-review-agent/documentation-index.md
  • docs/pr-review-agent/implementation.md
  • docs/pr-review-agent/maintainer-comment-gate.md
  • scripts/dev-lead-fix-reviews.sh
  • scripts/lib/consumer-manifest.json
  • scripts/lib/maintainer-comment-gate.sh
  • scripts/review-one-pr.sh
  • tests/dev-lead/unit/test_maintainer_comment_gate.bats

Comment thread scripts/review-one-pr.sh
…nt gate

Addresses CodeRabbit critical finding on the #1290 fix: the dismissal of a
prior pr-review-agent approval was doubly broken —
  1. the jq filter hardcoded `.author.login == "pr-review-agent"` but the bot
     login is `${BOT_USER:-donpetry-bot}`, so it never matched; and
  2. `gh pr review --dismiss` is not a real flag and the review id was never
     passed, so no dismissal ever occurred.

Parameterize the bot login (null-safe on `.reviews`) and dismiss via the
`dismissPullRequestReview` GraphQL mutation with the extracted review node id.
Best-effort (non-fatal) as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@donpetry-bot
donpetry-bot dismissed coderabbitai[bot]’s stale review July 21, 2026 16:26

Auto-dismissed (#617): coderabbitai[bot] CHANGES_REQUESTED on a superseded commit. The bot re-reviews the new head automatically — a valid concern will return as a fresh review.

@don-petry
don-petry enabled auto-merge (squash) July 21, 2026 16:27
@sonarqubecloud

Copy link
Copy Markdown

@donpetry-bot donpetry-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review — APPROVED ✓

Risk: MEDIUM
Reviewed commit: b3680f73c27510b2211ae779029a9e6312f29d4f
Review mode: triage-approved (single reviewer)

Summary

Implements the maintainer issue-comment gate from #1290: pr-review now withholds its automated approval while the latest maintainer issue comment postdates the last push, failing closed on undeterminable state. Triage's low-risk assessment is confirmed; rated MEDIUM here due to non-trivial logic in the approval path, but the change is purely restrictive (adds a gate), well-tested (25 bats tests incl. the #1290 regression), documented, and all prior bot findings are resolved.

Linked issue analysis

Closes #1290 (open). Acceptance criteria are substantively met: (a) an unaddressed maintainer comment now blocks auto-merge by withholding pr-review's code-owner approval and best-effort dismissing any stale approval; (b) behaviour is documented in docs/pr-review-agent/maintainer-comment-gate.md and implementation.md; (c) regression coverage exists (bats: unaddressed comment → rc=1 → skip, no approval); (d) fails closed — undeterminable push time blocks (rc=1) and a malformed snapshot fails the PR (rc=2 → exit 1). The optional 'dev-lead reads issue comments' direction (option 1 in the issue) is not implemented, which the issue permits ('either… or… ideally both').

Findings

No blocking findings. Notes: (1) the gate treats any push at/after the comment as 'addressed' — a documented tradeoff matching the issue's option 3; a push that does not substantively address the finding clears the gate. (2) Marker-based exclusion ( etc.) is necessary because dev-lead posts as the human owner account; a maintainer comment quoting such a marker would be excluded — minor, acceptable. (3) committer.date vs comment createdAt comparison errs toward blocking (push time ≥ committer.date), which is fail-safe. (4) Prior review-cycle findings (Gemini jq null-safety, Copilot source-time jq / approval-dismissal, CodeRabbit critical dismissal-command bug) are all resolved in the current head; CodeRabbit subsequently approved. Secret scan MCP tool unavailable in this run; gitleaks CI check passed.

CI status

All checks green at b3680f7: shellcheck, ShellCheck, bats, unit-tests, CodeQL (actions+python), Secret scan (gitleaks), agent-shield, Agent Security Scan, SonarCloud quality gate, actionlint, lint/guard/validation suite — all SUCCESS. CANCELLED entries in the rollup are concurrency-superseded duplicate runs, each with a later SUCCESS. Audit jobs SKIPPED (no matching ecosystems).


Reviewed automatically by the PR-review agent (single-reviewer mode: fable 5). Reply if you need a human review.

@don-petry
don-petry merged commit 86d0ae0 into main Jul 21, 2026
55 of 70 checks passed
@don-petry
don-petry deleted the dev-lead/issue-1290-20260721-1159 branch July 21, 2026 16:44

@donpetry-bot donpetry-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review — APPROVED ✓

Risk: MEDIUM
Reviewed commit: b3680f73c27510b2211ae779029a9e6312f29d4f
Review mode: triage-approved (single reviewer)

Summary

Adds a maintainer issue-comment gate (scripts/lib/maintainer-comment-gate.sh) that withholds pr-review's automated approval while the latest human maintainer issue comment postdates the last push, wired into review-one-pr.sh ahead of approval with fail-closed semantics and a FORCE_REVIEW bypass. Existing automation comments posted as don-petry gain HTML markers so the gate does not self-block. Includes 24 bats tests, docs, and consumer-manifest registration.

Linked issue analysis

Closes #1290 (maintainer PR comments were mechanically inert). The PR closes the "does not block merge" half at the approval boundary: because pr-review is the code-owner approver, withholding its approval keeps the PR from auto-merging until a commit is pushed at/after the latest maintainer issue comment. The #1290 acceptance criterion — undeterminable state must block, never read as "no findings" — is implemented (empty head date → rc=1; malformed snapshot → rc=2 → fail the PR) and covered by tests. The "reach dev-lead" half is handled indirectly (the gate forces a re-review cycle; docs keep the review-thread path as the actionable route), which is a reasonable scope choice given the issue explicitly did not prescribe a direction.

Findings

No blocking findings.

  • Prior bot findings all addressed: the CodeRabbit critical on the approval-dismissal jq filter is fixed — the filter now matches the actual gh pr view snapshot shape (reviews[].id is a GraphQL node ID usable by dismissPullRequestReview; commit.oid is present). All 5 review threads resolved; CodeRabbit's final review state is APPROVED.
  • Gate is a pure function over the already-fetched snapshot (no extra API round-trip), with correct fail-closed returns and subshell isolation in the caller.
  • Marker-based exclusion (<!-- pr-review-agent|persona:|dev-lead|dependency-advisory) is the right call since dev-lead/dependency-advisory post as the human owner account; the dev-lead-fix-reviews.sh acks and the @coderabbitai resolve nudge were updated to carry markers accordingly.
  • Minor accepted tradeoffs (non-blocking): a rebase without content changes advances committer.date and clears the gate; a human comment quoting one of our markers would be excluded. Both are edge cases and the docs acknowledge the model.
  • Secret scan: run_secret_scanning MCP tool unavailable in this environment; gitleaks CI check passed and manual diff inspection found no secret-like content.

CI status

All checks green on b3680f7: shellcheck, bats, unit-tests, actionlint, CodeQL (actions+python), Agent Security Scan, agent-shield, SonarCloud quality gate (0 new issues), gitleaks secret scan, validate-fixtures, caller-stub/permissions guards — all SUCCESS. CANCELLED entries in the rollup are superseded duplicate runs (each check name has a later SUCCESS or SKIPPED instance). mergeStateStatus BLOCKED reflects only the pending code-owner review this verdict satisfies.


Reviewed automatically by the PR-review agent (single-reviewer mode: fable 5). Reply if you need a human review.

don-petry added a commit that referenced this pull request Aug 2, 2026
…ically inert — they neither block merge nor reach dev-lead (#1344)

* feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead

* fix(reviews): address review comments [skip ci-relay]

* fix: sync pr-review-mention.yml with standards

Updated .github/workflows/pr-review-mention.yml to use the stable channel pin
and reflect the canonical PAT documentation, aligning with latest standards.
This addresses the template-drift check failure for repo-template.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(bot): address bot feedback [skip ci-relay]

* fix: correct stale-approval dismissal in unaddressed-maintainer-comment gate

Addresses CodeRabbit critical finding on the #1290 fix: the dismissal of a
prior pr-review-agent approval was doubly broken —
  1. the jq filter hardcoded `.author.login == "pr-review-agent"` but the bot
     login is `${BOT_USER:-donpetry-bot}`, so it never matched; and
  2. `gh pr review --dismiss` is not a real flag and the review id was never
     passed, so no dismissal ever occurred.

Parameterize the bot login (null-safe on `.reviews`) and dismiss via the
`dismissPullRequestReview` GraphQL mutation with the extracted review node id.
Best-effort (non-fatal) as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: don-petry <{}+don-petry@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Aug 3, 2026
…ically inert — they neither block merge nor reach dev-lead (#1344)

* feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead

* fix(reviews): address review comments [skip ci-relay]

* fix: sync pr-review-mention.yml with standards

Updated .github/workflows/pr-review-mention.yml to use the stable channel pin
and reflect the canonical PAT documentation, aligning with latest standards.
This addresses the template-drift check failure for repo-template.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(bot): address bot feedback [skip ci-relay]

* fix: correct stale-approval dismissal in unaddressed-maintainer-comment gate

Addresses CodeRabbit critical finding on the #1290 fix: the dismissal of a
prior pr-review-agent approval was doubly broken —
  1. the jq filter hardcoded `.author.login == "pr-review-agent"` but the bot
     login is `${BOT_USER:-donpetry-bot}`, so it never matched; and
  2. `gh pr review --dismiss` is not a real flag and the review id was never
     passed, so no dismissal ever occurred.

Parameterize the bot login (null-safe on `.reviews`) and dismiss via the
`dismissPullRequestReview` GraphQL mutation with the extracted review node id.
Best-effort (non-fatal) as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: don-petry <{}+don-petry@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Aug 3, 2026
…ically inert — they neither block merge nor reach dev-lead (#1344)

* feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead

* fix(reviews): address review comments [skip ci-relay]

* fix: sync pr-review-mention.yml with standards

Updated .github/workflows/pr-review-mention.yml to use the stable channel pin
and reflect the canonical PAT documentation, aligning with latest standards.
This addresses the template-drift check failure for repo-template.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(bot): address bot feedback [skip ci-relay]

* fix: correct stale-approval dismissal in unaddressed-maintainer-comment gate

Addresses CodeRabbit critical finding on the #1290 fix: the dismissal of a
prior pr-review-agent approval was doubly broken —
  1. the jq filter hardcoded `.author.login == "pr-review-agent"` but the bot
     login is `${BOT_USER:-donpetry-bot}`, so it never matched; and
  2. `gh pr review --dismiss` is not a real flag and the review id was never
     passed, so no dismissal ever occurred.

Parameterize the bot login (null-safe on `.reviews`) and dismiss via the
`dismissPullRequestReview` GraphQL mutation with the extracted review node id.
Best-effort (non-fatal) as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: don-petry <{}+don-petry@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Aug 7, 2026
…ically inert — they neither block merge nor reach dev-lead (#1344)

* feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead

* fix(reviews): address review comments [skip ci-relay]

* fix: sync pr-review-mention.yml with standards

Updated .github/workflows/pr-review-mention.yml to use the stable channel pin
and reflect the canonical PAT documentation, aligning with latest standards.
This addresses the template-drift check failure for repo-template.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(bot): address bot feedback [skip ci-relay]

* fix: correct stale-approval dismissal in unaddressed-maintainer-comment gate

Addresses CodeRabbit critical finding on the #1290 fix: the dismissal of a
prior pr-review-agent approval was doubly broken —
  1. the jq filter hardcoded `.author.login == "pr-review-agent"` but the bot
     login is `${BOT_USER:-donpetry-bot}`, so it never matched; and
  2. `gh pr review --dismiss` is not a real flag and the review id was never
     passed, so no dismissal ever occurred.

Parameterize the bot login (null-safe on `.reviews`) and dismiss via the
`dismissPullRequestReview` GraphQL mutation with the extracted review node id.
Best-effort (non-fatal) as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: don-petry <{}+don-petry@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Aug 7, 2026
…ically inert — they neither block merge nor reach dev-lead (#1344)

* feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead

* fix(reviews): address review comments [skip ci-relay]

* fix: sync pr-review-mention.yml with standards

Updated .github/workflows/pr-review-mention.yml to use the stable channel pin
and reflect the canonical PAT documentation, aligning with latest standards.
This addresses the template-drift check failure for repo-template.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(bot): address bot feedback [skip ci-relay]

* fix: correct stale-approval dismissal in unaddressed-maintainer-comment gate

Addresses CodeRabbit critical finding on the #1290 fix: the dismissal of a
prior pr-review-agent approval was doubly broken —
  1. the jq filter hardcoded `.author.login == "pr-review-agent"` but the bot
     login is `${BOT_USER:-donpetry-bot}`, so it never matched; and
  2. `gh pr review --dismiss` is not a real flag and the review id was never
     passed, so no dismissal ever occurred.

Parameterize the bot login (null-safe on `.reviews`) and dismiss via the
`dismissPullRequestReview` GraphQL mutation with the extracted review node id.
Best-effort (non-fatal) as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: don-petry <{}+don-petry@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Aug 7, 2026
…ically inert — they neither block merge nor reach dev-lead (#1344)

* feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead

* fix(reviews): address review comments [skip ci-relay]

* fix: sync pr-review-mention.yml with standards

Updated .github/workflows/pr-review-mention.yml to use the stable channel pin
and reflect the canonical PAT documentation, aligning with latest standards.
This addresses the template-drift check failure for repo-template.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(bot): address bot feedback [skip ci-relay]

* fix: correct stale-approval dismissal in unaddressed-maintainer-comment gate

Addresses CodeRabbit critical finding on the #1290 fix: the dismissal of a
prior pr-review-agent approval was doubly broken —
  1. the jq filter hardcoded `.author.login == "pr-review-agent"` but the bot
     login is `${BOT_USER:-donpetry-bot}`, so it never matched; and
  2. `gh pr review --dismiss` is not a real flag and the review id was never
     passed, so no dismissal ever occurred.

Parameterize the bot login (null-safe on `.reviews`) and dismiss via the
`dismissPullRequestReview` GraphQL mutation with the extracted review node id.
Best-effort (non-fatal) as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: don-petry <{}+don-petry@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Aug 7, 2026
…ically inert — they neither block merge nor reach dev-lead (#1344)

* feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead

* fix(reviews): address review comments [skip ci-relay]

* fix: sync pr-review-mention.yml with standards

Updated .github/workflows/pr-review-mention.yml to use the stable channel pin
and reflect the canonical PAT documentation, aligning with latest standards.
This addresses the template-drift check failure for repo-template.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(bot): address bot feedback [skip ci-relay]

* fix: correct stale-approval dismissal in unaddressed-maintainer-comment gate

Addresses CodeRabbit critical finding on the #1290 fix: the dismissal of a
prior pr-review-agent approval was doubly broken —
  1. the jq filter hardcoded `.author.login == "pr-review-agent"` but the bot
     login is `${BOT_USER:-donpetry-bot}`, so it never matched; and
  2. `gh pr review --dismiss` is not a real flag and the review id was never
     passed, so no dismissal ever occurred.

Parameterize the bot login (null-safe on `.reviews`) and dismiss via the
`dismissPullRequestReview` GraphQL mutation with the extracted review node id.
Best-effort (non-fatal) as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: don-petry <{}+don-petry@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Aug 7, 2026
…ically inert — they neither block merge nor reach dev-lead (#1344)

* feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead

* fix(reviews): address review comments [skip ci-relay]

* fix: sync pr-review-mention.yml with standards

Updated .github/workflows/pr-review-mention.yml to use the stable channel pin
and reflect the canonical PAT documentation, aligning with latest standards.
This addresses the template-drift check failure for repo-template.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(bot): address bot feedback [skip ci-relay]

* fix: correct stale-approval dismissal in unaddressed-maintainer-comment gate

Addresses CodeRabbit critical finding on the #1290 fix: the dismissal of a
prior pr-review-agent approval was doubly broken —
  1. the jq filter hardcoded `.author.login == "pr-review-agent"` but the bot
     login is `${BOT_USER:-donpetry-bot}`, so it never matched; and
  2. `gh pr review --dismiss` is not a real flag and the review id was never
     passed, so no dismissal ever occurred.

Parameterize the bot login (null-safe on `.reviews`) and dismiss via the
`dismissPullRequestReview` GraphQL mutation with the extracted review node id.
Best-effort (non-fatal) as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: don-petry <{}+don-petry@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Aug 7, 2026
…ically inert — they neither block merge nor reach dev-lead (#1344)

* feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead

* fix(reviews): address review comments [skip ci-relay]

* fix: sync pr-review-mention.yml with standards

Updated .github/workflows/pr-review-mention.yml to use the stable channel pin
and reflect the canonical PAT documentation, aligning with latest standards.
This addresses the template-drift check failure for repo-template.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(bot): address bot feedback [skip ci-relay]

* fix: correct stale-approval dismissal in unaddressed-maintainer-comment gate

Addresses CodeRabbit critical finding on the #1290 fix: the dismissal of a
prior pr-review-agent approval was doubly broken —
  1. the jq filter hardcoded `.author.login == "pr-review-agent"` but the bot
     login is `${BOT_USER:-donpetry-bot}`, so it never matched; and
  2. `gh pr review --dismiss` is not a real flag and the review id was never
     passed, so no dismissal ever occurred.

Parameterize the bot login (null-safe on `.reviews`) and dismiss via the
`dismissPullRequestReview` GraphQL mutation with the extracted review node id.
Best-effort (non-fatal) as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: don-petry <{}+don-petry@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Aug 8, 2026
…ically inert — they neither block merge nor reach dev-lead (#1344)

* feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead

* fix(reviews): address review comments [skip ci-relay]

* fix: sync pr-review-mention.yml with standards

Updated .github/workflows/pr-review-mention.yml to use the stable channel pin
and reflect the canonical PAT documentation, aligning with latest standards.
This addresses the template-drift check failure for repo-template.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(bot): address bot feedback [skip ci-relay]

* fix: correct stale-approval dismissal in unaddressed-maintainer-comment gate

Addresses CodeRabbit critical finding on the #1290 fix: the dismissal of a
prior pr-review-agent approval was doubly broken —
  1. the jq filter hardcoded `.author.login == "pr-review-agent"` but the bot
     login is `${BOT_USER:-donpetry-bot}`, so it never matched; and
  2. `gh pr review --dismiss` is not a real flag and the review id was never
     passed, so no dismissal ever occurred.

Parameterize the bot login (null-safe on `.reviews`) and dismiss via the
`dismissPullRequestReview` GraphQL mutation with the extracted review node id.
Best-effort (non-fatal) as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: don-petry <{}+don-petry@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Aug 8, 2026
…ically inert — they neither block merge nor reach dev-lead (#1344)

* feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead

* fix(reviews): address review comments [skip ci-relay]

* fix: sync pr-review-mention.yml with standards

Updated .github/workflows/pr-review-mention.yml to use the stable channel pin
and reflect the canonical PAT documentation, aligning with latest standards.
This addresses the template-drift check failure for repo-template.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(bot): address bot feedback [skip ci-relay]

* fix: correct stale-approval dismissal in unaddressed-maintainer-comment gate

Addresses CodeRabbit critical finding on the #1290 fix: the dismissal of a
prior pr-review-agent approval was doubly broken —
  1. the jq filter hardcoded `.author.login == "pr-review-agent"` but the bot
     login is `${BOT_USER:-donpetry-bot}`, so it never matched; and
  2. `gh pr review --dismiss` is not a real flag and the review id was never
     passed, so no dismissal ever occurred.

Parameterize the bot login (null-safe on `.reviews`) and dismiss via the
`dismissPullRequestReview` GraphQL mutation with the extracted review node id.
Best-effort (non-fatal) as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: don-petry <{}+don-petry@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Aug 8, 2026
…ically inert — they neither block merge nor reach dev-lead (#1344)

* feat: implement issue #1290 — PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead

* fix(reviews): address review comments [skip ci-relay]

* fix: sync pr-review-mention.yml with standards

Updated .github/workflows/pr-review-mention.yml to use the stable channel pin
and reflect the canonical PAT documentation, aligning with latest standards.
This addresses the template-drift check failure for repo-template.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(bot): address bot feedback [skip ci-relay]

* fix: correct stale-approval dismissal in unaddressed-maintainer-comment gate

Addresses CodeRabbit critical finding on the #1290 fix: the dismissal of a
prior pr-review-agent approval was doubly broken —
  1. the jq filter hardcoded `.author.login == "pr-review-agent"` but the bot
     login is `${BOT_USER:-donpetry-bot}`, so it never matched; and
  2. `gh pr review --dismiss` is not a real flag and the review id was never
     passed, so no dismissal ever occurred.

Parameterize the bot login (null-safe on `.reviews`) and dismiss via the
`dismissPullRequestReview` GraphQL mutation with the extracted review node id.
Best-effort (non-fatal) as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: don-petry <{}+don-petry@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

PR comments from maintainers are mechanically inert — they neither block merge nor reach dev-lead

3 participants