Skip to content

fix(pr-monitor): CR 投稿ごとの重複分析コメントを決定論ガードで抑止 (順位 319) - #310

Merged
aloekun merged 1 commit into
masterfrom
pr-monitor-dedup-guard
Jul 20, 2026
Merged

fix(pr-monitor): CR 投稿ごとの重複分析コメントを決定論ガードで抑止 (順位 319)#310
aloekun merged 1 commit into
masterfrom
pr-monitor-dedup-guard

Conversation

@aloekun

@aloekun aloekun commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Summary

  • pr-monitor.yml の重複コメント投稿を、LLM prompt 内の助言ガードから workflow if: の決定論ガードへ移設 (順位 319)
  • issue_comment は CodeRabbit の walkthrough/summary マーカーを含み、かつ rate-limit placeholder でないもののみ起動する positive allowlist に変更 (ack / rate-limit 通知 / command invocation を一括除外)
  • CLOSED / MERGED PR では起動しないよう両経路に state == 'open' ガードを追加
  • prompt 手順 2 の重複ガードを「新規コメントの有無」→「分析価値のある新情報の有無」へ書き換え、決定論層の二層目 (fallback) に降格
  • docs/todo17.md 順位 319 の作業計画・現在地を更新 (dogfood 確認は post-merge に保持)

Context

Validation

  • pre-push review (takt): verdict=APPROVE (全 facet 承認、1 iteration、2026-07-20)
  • pnpm lint:docs: OK (preamble + cross-ref + priority-inversion)
  • YAML parse + if: 式の括弧バランス + 条件存在を node で検証
  • file-length Stop gate: --check-modified-files EXIT 0 (違反なし)
  • workflow_dispatch スモーク + 実 PR dogfood (post-merge): walkthrough 1 回 = 高々 1 投稿 / ack・merged では無投稿 を実測確認 (順位 319 完了基準)

References

Summary by CodeRabbit

  • バグ修正

    • PR Monitor が関係のないBotコメントやレート制限通知に反応し、不要な分析・重複投稿を行う問題を改善しました。
    • クローズまたはマージ済みのPRでは監視処理を開始しないようになりました。
    • 新しい有用な情報がない場合は、重複した返信をスキップします。
  • ドキュメント

    • 監視対象となるコメントと、返信を省略する条件を明確化しました。

pr-monitor.yml バックストップが CodeRabbit の投稿 (ack / rate-limit 通知含む) ごとに
「🤖 PR Monitor 分析」コメントを再投稿していた問題を修正 (PR #287 で 5 件、#304 で 3 件、
#307 で 5 件実観測)。原因は重複ガードが LLM prompt 内 (助言層) にしかなく、トリガー事象
(新規コメントの存在) 自身が prompt の skip 条件を無効化するトートロジーだったこと。

- jobs.analyze.if: に決定論ガードを追加 (ADR-042: 助言層 -> 決定論層):
  - issue_comment は CR walkthrough/summary マーカーを含み、かつ rate-limit placeholder
    でないもののみ起動する positive allowlist。ack / rate-limit 通知 / command invocation
    を一括除外 (denylist より確実)。マーカーは live PR #304/#307 の生 body で実検証。
  - CLOSED/MERGED PR では起動しない (issue.state / pull_request.state == 'open')。
- prompt 手順 2 を「新規コメントの有無」から「分析価値のある新情報の有無」へ書換え、
  ack/rate-limit/自身の分析コメントは新情報に数えない旨を明示。決定論層の二層目に降格。
- 先頭設計メモに経緯を記録。

検証: YAML parse + paren balance を node で確認、pnpm lint:docs OK。
残 (post-merge): workflow_dispatch スモーク + 実 PR dogfood 確認 (todo17.md 順位 319)。

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

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 9a298ec0-2b00-4874-a21c-cd81c2331c54

📥 Commits

Reviewing files that changed from the base of the PR and between 541adde and 1ac1cad.

📒 Files selected for processing (2)
  • .github/workflows/pr-monitor.yml
  • docs/todo17.md

📝 Walkthrough

Walkthrough

PR Monitorのissue_comment起動条件を厳格化し、open状態とsummarizeマーカーを必須化した。Claudeプロンプトでは、定型応答や過去の分析コメントを新情報から除外する重複判定基準を明確化した。

Changes

PR Monitor重複投稿ガード

Layer / File(s) Summary
決定論的な起動ガード
.github/workflows/pr-monitor.yml, docs/todo17.md
issue_comment経路をopen状態、coderabbitai[bot]、summarizeマーカー、非rate-limit条件に限定し、CLOSED/MERGED除外と二層ガードの作業計画を更新した。
プロンプトの重複判定
.github/workflows/pr-monitor.yml
定型acknowledgment・コマンド応答、rate-limit通知、レビュー未着・skip通知、過去のworkflow分析コメントを新情報として扱わない基準を追加した。

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

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 変更内容の主旨であるpr-monitorの重複分析コメント抑止を決定論ガードへ移す点を適切に要約しています。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch pr-monitor-dedup-guard

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Checkov (3.3.8)
.github/workflows/pr-monitor.yml

Traceback (most recent call last):
File "/usr/local/bin/checkov", line 2, in
from checkov.main import Checkov
ModuleNotFoundError: No module named 'checkov'


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.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 PR Monitor 分析 (GitHub Actions バックストップ)

  • トリガー: issue_comment (created) / 実行 run
  • CI: CodeRabbit チェックのみ確認可能、pending(“Review in progress”)。他の CI check は現時点で見当たらず。mergeStateStatusUNSTABLE(pending check起因)、mergeableMERGEABLE
  • レビュー状況: CodeRabbit — walkthrough/summary 未投稿 (会話コメントにあるのは "Currently processing..." のプレースホルダのみ、summarize マーカー未確定)。人間レビューなし (pulls/310/reviews は空配列、reviewDecision 空)。インライン指摘 (pulls/310/comments) も 0 件。
  • Verdict: user_decision (現時点でレビュー指摘 0 件だが、CodeRabbit レビュー自体が未完了のため "approved" と断定するのは時期尚早)

Applicable Findings (Critical / High / Major)

(該当なし — レビュー未着のため)

Applicable Findings (Medium 以下)

(該当なし)

Filtered (not applicable)

(該当なし)

軽量サマリー (レビュー指摘 0 件のため)

  • 変更ファイル: .github/workflows/pr-monitor.ymldocs/todo17.md の 2 件
  • 変更の性質: pr-monitor.ymljobs.analyze.if: に決定論的な起動選別 (CR walkthrough マーカーの allowlist + rate-limit placeholder 除外 + PR/issue が open であることのチェック) を追加し、prompt 手順 2 の重複ガードを fallback 層へ降格させるロジック変更。コメントのみの変更ではなく実行条件のロジックを変えているため、ADR-035 の docs-only 対象外 (.github/workflows/** の構造変更に相当)。
  • docs/todo17.md は該当タスクの進捗チェックボックス更新 (作業計画の該当項目を [x] 化、smoke test / dogfood 確認は未完のまま [ ] で残す) — 整合しており不審な点なし。

次のアクション

  • CodeRabbit のレビュー完了 (walkthrough 投稿) を待つ。投稿されれば summarize マーカー条件を満たし本 workflow が再起動して指摘を分析する。
  • mergeStateStatus: UNSTABLE (CodeRabbit check pending) の間はマージを見送ること。
  • pr-monitor.yml の起動条件変更は本 PR 自身のマージ後でないと実 PR イベントでの smoke test ができない (todo17.md に記載の通り post-merge 確認予定) — マージ後に別セッションで (a) ack で起動しない (b) walkthrough で起動する (c) merged PR で起動しない、を実測確認すること。

@aloekun
aloekun merged commit d7c2dda into master Jul 20, 2026
1 check passed
@aloekun
aloekun deleted the pr-monitor-dedup-guard branch July 20, 2026 15:29
aloekun added a commit that referenced this pull request Jul 23, 2026
* docs(todo): PR #310 post-merge feedback の採用候補 7 件を登録 (順位 345-351)

deploy 互換性診断 / pre-merge deferred-test checklist / 空 fix commit skip /
CodeRabbit marker 統合契約 doc / pr-monitor.yml インラインコメント /
config directive CHANGELOG / local LLM unverifiable-locally 運用。

詳細は todo14.md、順位 table は todo-summary2.md (cli-docs-lint OK)。
ユーザー承認済 (却下推奨 3 / 様子見 3 は非登録)。当初 336-342 で登録したが
並行セッションの #314 が 336-344 を先に使用したため 345-351 に再採番、
ADR-033 準拠で本文の順位参照は descriptive に修正。

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

* fix(review): apply CodeRabbit fixes for #315

CodeRabbit #315 review の 2 findings に対応:
- entry 346 (pre-merge checklist): 配置先を docs/dev-conventions.md に一本化
  (pre-merge-checklist.md 新設・CLAUDE.md 追記を排除)、defer 検証を必須項目として明示
- entry 347 (空 fix commit skip): 完了基準を「findings 空」に加え「全 findings が
  non-actionable」も含めるよう拡張、両ケースをテストスコープに追加

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

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant