fix(review-request): 冪等ガードの偽陽性を直す — 投稿者と本文の厳密一致で判定する - #496
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough既存レビュー要求コメントの検出条件を厳密化しました。Bot 投稿と部分一致を除外し、空白除去後に Changesレビュー要求検出
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to The stricter review-request detection is ready to merge. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
🤖 PR Monitor 分析 (GitHub Actions バックストップ)
レビュー指摘 0 件のため、CI状態と diff 概要のみ
次のアクション
|
問題
review-request.ymlの冪等ガードが、既存のレビュー要求を本文の部分一致で探していた。これはコマンド名に言及しているだけのコメントも拾う。PR #494 で実際に 2 件誤マッチした。
@coderabbitai reviewcommand.」@coderabbitai reviewが投稿できていないため」どちらもレビュー要求ではない。 誤認すると「既に要求済み」と判断して投稿を飛ばし、レビューが永久に走らない。
skip 通知は bot 作成 PR に必ず付き、しかも本 workflow の起動と数秒差で投稿される (2026-09-10 の run は起動 18:14:33 / 通知 18:14:34)。部分一致のままでは競合の結果次第で挙動が変わる。pr-monitor の分析コメントは後から付くため、再実行では必ず誤マッチする。
修正
投稿者と本文の厳密一致で判定する。
@coderabbitai reviewと完全一致すること空白の除去に
\sを使わない。 jq は\sを文字列エスケープとして受け付けず、sub("^\\s+";"")は parse エラーで全件 0 件に落ちる。0 件は「既存要求なし」と読まれるため、壊れていても投稿は続き失敗が静かになる。実装中に実際に踏んだので、POSIX 文字クラスを使う理由をコード内コメントに残した。検証 (実 PR に対する実測)
新旧の判定を実 PR に当てて比較した。
aloekunの本物 (手動再試行を含む)本物のトリガーは 1 件も落ちていない。偽陽性 2 件を個別に新判定へ通し、どちらも出力が空 (除外) であることも確認した。
run:ブロックをファイルから切り出してbash -eで実行し、#494 と #461 で本物のトリガーを検出して投稿せず exit 0 すること、since_idが正しく出ることを実測した (この job は bot 作成 PR でしか起動しないため、GHA-econvention に記載のローカル再現手段を使う)。pnpm lint:workflows(契約検査 3 を含む) green。補足: 過去の失敗の分類を訂正
調査の過程で、以前「PAT は 2026-09-06 に失効した」とした認識が誤りだったことが判明した。各 run の失敗 step を確認すると、09-06 と 09-07 は投稿 step が success で
Verify CodeRabbit actually reviewedが失敗しており、認証エラーは 09-10 の #494 が初出だった。対象外
🤖 Generated with Claude Code
Summary by CodeRabbit