Uh oh!
There was an error while loading. Please reload this page.
Fix: 投稿できていないレビューを承認として扱わない(v8.5.3) - #134
Conversation
投稿は AI 自身が gh api で行うため、失敗しても結果ファイルの判定だけは残る。 そのまま採ると、実装担当が読むべき指摘が Pull Request に無いまま収束する。 5 回目の実機試行では、ラウンド 1 の承認 2 件が GitHub 上に痕跡を持たないまま 採用の確定に使われていた。 judge-review が結果ファイルの review_url を必須とし、URL の識別子から repos/<repo>/pulls/<PR>/reviews/<id> の存在を確かめる。無ければ差し戻し、 取得できないときは申告を採用して確認できなかったことを出力へ残す。「無い」と 「取得できない」を区別しないと、GitHub 側の一時的な不調で進行が止まる。 あわせてレビュープロンプトが、投稿に失敗したときも post_error 付きの結果 ファイルを書かせる。書かずに終わると、進行側からは「レビュー担当が動かな かった」と区別が付かない。上限に達したときは投稿できなかった担当も中断の 対象へ含める。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | codex | REQUEST_CHANGES
投稿確認が一時失敗した結果を再利用する経路に修正が必要です。
Uh oh!
There was an error while loading. Please reload this page.
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | gemini | APPROVE
設計と実装の両面において、レビューの投稿漏れを確実に防ぐ堅牢な仕組みが追加されていることを確認しました。
特に、GitHub API の一時的な不調等による情報取得の失敗時にも進行を止めないよう、申告ベースへのフォールバックが設けられている点は優れた設計です。
テストも網羅的であり、ロジックに懸念点はありません。
投稿の有無は結果ファイルの内容では決まらず GitHub 側の状態で決まる。 鍵に含めずに判定を再生すると、投稿が見えるようになった後で同じコマンドを 叩き直しても差し戻し(exit 3)を返し続け、`invalid_reviews` も進まないため 中断の上限にも到達せず進行が止まる。 `_unposted_reviewers()` を判定済みの照合より先に呼び、投稿できていない担当の 一覧を鍵へ混ぜる。GitHub 側の状態が変われば鍵も変わり、判定をやり直す。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UjJqoXkDs3LhhK4aFhh84p
takemi-ohama
commented
Aug 22, 2026
🔧 /ndf:fix サマリ (round 1)対応件数: critical=0 / major=1 / minor=0 / nit=0 (合計 1 件) 詳細
指摘: 投稿の確認で差し戻した(exit 3)あと、同じ結果ファイルで叩き直すと 再判定: major のまま採用しました。再生の経路では 修正: テスト: 先に失敗するテストを追加( 検証
gemini は APPROVE(指摘 0 件)でした。 |
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | codex | APPROVE
要修正の指摘はありません。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | gemini | APPROVE
投稿の確実な反映と失敗時の停止処理について、変更の意図通りに実装されており問題ありません。懸念点はなく、追加の修正提案はありません。
Uh oh!
There was an error while loading. Please reload this page.
何のために
5 回目の実機試行(#132)で残した不具合 19 と 20 を直す。
投稿は AI 自身が
gh apiで行うため、失敗しても結果ファイルの判定だけは残る。そのまま採ると、実装担当が読むべき指摘が Pull Request に無いまま収束する。実測では、ラウンド 1 の
承認 2 件が GitHub 上に痕跡を持たないまま採用の確定に使われていた。
$ gh api repos/devbasex/ai-plugins/pulls/131/reviews \ --jq '.[] | "\(.user.login) \(.state) \(.submitted_at)"' takemi-ohama COMMENTED 2026-08-21T04:15:29Z takemi-ohama COMMENTED 2026-08-21T04:18:52Z takemi-ohama COMMENTED 2026-08-21T04:19:04Z3 件はいずれもラウンド 2 のもので、ラウンド 1 のレビューは 1 件も残っていない。
もう一方は、投稿に失敗したレビュー担当が結果ファイルを書かずに終わる点である。プロンプトの
「
gh apiが失敗したら即座に終了する」が結果ファイルの書き出しより優先されるため、進行側からは「レビュー担当が動かなかった」と区別が付かない。
何を
scripts/refactor.pyjudge()がreview_urlを必須とし、post_errorを持つ結果を差し戻す。_unposted_reviewers()が URL の識別子から GitHub 側の存在を確かめる。上限に達したときは投稿できなかった担当も中断の対象へ含めるprompts/review.mdpost_error付きの結果ファイルを書かせる。HTTP 422のときの投稿し直しの手順も添えたdocs/02-apply-and-review.mdSKILL.md投稿の確認
post_errorありreview_urlなしreview_urlありreview_urlありreview_urlあり「無い」と「取得できない」を区別する。 取得の失敗で止めると、GitHub 側の一時的な不調で
進行が進まなくなる。
cross-reviewが v8.5.0 で入れた突き合わせと同じ考え方である。Test plan
plugins/ndf-shared/skills/cross-refactoring/tests/test_judge_review.pyに 6 件追加uv run --with pytest python -m pytest plugins/ndf-shared/skills/cross-refactoring/tests plugins/ndf-shared/skills/cross-review/tests -qが 476 passed(追加前 470)claude plugin validateが marketplace / ndf-claude とも通るpython3 scripts/check-skill-frontmatter.pyがエラー 0 件 / 警告 0 件