feat: 順位 339 の無人実装 (nightly-todo) - #387
Conversation
|
@coderabbitai review |
|
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthrough4種類のレート制限コメント形式と3種類のCodeRabbit状態を組み合わせるマトリックステストを追加しました。各形式で Changesレート制限判定テスト
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 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 |
|
@coderabbitai review |
✅ Action performedReview finished.
|
50eab5d to
519efd2
Compare
本セッションで実施した WP-18 (2) 運用問題 5 件の対処 (#385/#386/#388/#389) について、 実走観測の記録・計画書の整理・feedback 採否の登録をまとめて行う。 ## 実走観測の記録 - ADR-072 へ定常運用 2 巡目 (PR #387) の観測を追加する。決定 15-17 投入後の 9 項目が設計どおり動いたことと、review-request の成功判定が「反応の有無」で 止まっている (拒否も success になる) ことを事実として記録する - ADR-019 へレート制限の競合が記録の翌日に実地で再現したことを追加する - 順位 386 の観測を 7 回 → 9 回へ更新する。うち 1 件は空コミットではなく 「近い revset を優先する規則」そのものが原因で、本命の対処案だけでは 解決しない可能性がある点を併記する ## 計画書の整理 (ADR-073 新設) - 完了条件の切り方 (残作業を 3 区分に分け、その WP が生んだ問題は完了条件に 含め、WP 外の派生は含めない) を ADR-073 として切り出す - WP-18 節を 71 行 → 35 行へ整理し、完了記録を削除して残作業のみにする - ローカル実行時の jj workspace 注記を ADR-072 へ移す ## post-merge feedback 採否 (順位 414-432) - 採用候補 24 件のうち 6 件は当該 PR 内で実装済みのため対象外とした (実物と照合して確認) - 採用 19 件を系統 A-G + セッション由来へ分類して登録する - SIGPIPE resilience は却下する。レポートが「実測証拠」とした recovery が 実際には発生しておらず (run 1 回・completed・marker の痕跡なし)、提案内容も ADR-030 §L1 で実装済みだった。feedback レポート自身が根拠を誤った初の実例 として記録し、順位 403 の対象へ含めるよう申し送る ## 付随 - todo21.md が 57KB (50KB 閾値超過) のため todo22.md を新設する - todo-summary.md の「現行の追加先」が todo14.md のまま stale だったので直す - cli-docs-lint が検出した preamble の数詞ずれ (23 → 24) を 9 ファイルで更新する ADR-073 / 順位 414-432
本セッションで実施した WP-18 (2) 運用問題 5 件の対処 (#385/#386/#388/#389) について、 実走観測の記録・計画書の整理・feedback 採否の登録をまとめて行う。 ## 実走観測の記録 - ADR-072 へ定常運用 2 巡目 (PR #387) の観測を追加する。決定 15-17 投入後の 9 項目が設計どおり動いたことと、review-request の成功判定が「反応の有無」で 止まっている (拒否も success になる) ことを事実として記録する - ADR-019 へレート制限の競合が記録の翌日に実地で再現したことを追加する - 順位 386 の観測を 7 回 → 9 回へ更新する。うち 1 件は空コミットではなく 「近い revset を優先する規則」そのものが原因で、本命の対処案だけでは 解決しない可能性がある点を併記する ## 計画書の整理 (ADR-073 新設) - 完了条件の切り方 (残作業を 3 区分に分け、その WP が生んだ問題は完了条件に 含め、WP 外の派生は含めない) を ADR-073 として切り出す - WP-18 節を 71 行 → 35 行へ整理し、完了記録を削除して残作業のみにする - ローカル実行時の jj workspace 注記を ADR-072 へ移す ## post-merge feedback 採否 (順位 414-432) - 採用候補 24 件のうち 6 件は当該 PR 内で実装済みのため対象外とした (実物と照合して確認) - 採用 19 件を系統 A-G + セッション由来へ分類して登録する - SIGPIPE resilience は却下する。レポートが「実測証拠」とした recovery が 実際には発生しておらず (run 1 回・completed・marker の痕跡なし)、提案内容も ADR-030 §L1 で実装済みだった。feedback レポート自身が根拠を誤った初の実例 として記録し、順位 403 の対象へ含めるよう申し送る ## 付随 - todo21.md が 57KB (50KB 閾値超過) のため todo22.md を新設する - todo-summary.md の「現行の追加先」が todo14.md のまま stale だったので直す - cli-docs-lint が検出した preamble の数詞ずれ (23 → 24) を 9 ファイルで更新する ADR-073 / 順位 414-432
本セッションで実施した WP-18 (2) 運用問題 5 件の対処 (#385/#386/#388/#389) について、 実走観測の記録・計画書の整理・feedback 採否の登録をまとめて行う。 ## 実走観測の記録 - ADR-072 へ定常運用 2 巡目 (PR #387) の観測を追加する。決定 15-17 投入後の 9 項目が設計どおり動いたことと、review-request の成功判定が「反応の有無」で 止まっている (拒否も success になる) ことを事実として記録する - ADR-019 へレート制限の競合が記録の翌日に実地で再現したことを追加する - 順位 386 の観測を 7 回 → 9 回へ更新する。うち 1 件は空コミットではなく 「近い revset を優先する規則」そのものが原因で、本命の対処案だけでは 解決しない可能性がある点を併記する ## 計画書の整理 (ADR-073 新設) - 完了条件の切り方 (残作業を 3 区分に分け、その WP が生んだ問題は完了条件に 含め、WP 外の派生は含めない) を ADR-073 として切り出す - WP-18 節を 71 行 → 35 行へ整理し、完了記録を削除して残作業のみにする - ローカル実行時の jj workspace 注記を ADR-072 へ移す ## post-merge feedback 採否 (順位 414-432) - 採用候補 24 件のうち 6 件は当該 PR 内で実装済みのため対象外とした (実物と照合して確認) - 採用 19 件を系統 A-G + セッション由来へ分類して登録する - SIGPIPE resilience は却下する。レポートが「実測証拠」とした recovery が 実際には発生しておらず (run 1 回・completed・marker の痕跡なし)、提案内容も ADR-030 §L1 で実装済みだった。feedback レポート自身が根拠を誤った初の実例 として記録し、順位 403 の対象へ含めるよう申し送る ## 付随 - todo21.md が 57KB (50KB 閾値超過) のため todo22.md を新設する - todo-summary.md の「現行の追加先」が todo14.md のまま stale だったので直す - cli-docs-lint が検出した preamble の数詞ずれ (23 → 24) を 9 ファイルで更新する ADR-073 / 順位 414-432
519efd2 to
331933c
Compare
順位 431 の実装中に判明した検出層の穴を塞ぐ。PR #428 では workflow 側にだけ ack 文言を足したため、Rust 層 (check-ci-coderabbit) との非対称が残っていた。 ## 何が漏れていたか markers.rs の RATE_LIMIT_MARKERS は walkthrough comment が placeholder として 投稿されたときの marker (Rate limit exceeded / rate limited by coderabbit.ai) だけで、 `@coderabbitai review` への **command ack** の拒否文言 (Review rate limited.) を 持たない。両者は body の語彙が全く別で、ack は placeholder 側の marker を含まない。 ## なぜ実害があるか placeholder は同じコメントが後から実レビュー本文へ編集されるため marker が消える。 一方 ack は要求 1 回につき 1 コメントが残る。実データ (PR #340〜#428 を機械集計) では #412 が ack 3 件 / placeholder marker 0 件、#387 が 1 件 / 0 件で、この窓では ack だけが 唯一の証拠になる。影響は (a) park / 再 trigger 経路に入らず polling を続ける、 (b) 事後の棚卸しでレート制限を過少計数する、の 2 点。silent success にはならない (ADR-064 の陽性証拠 gate が別途効く)。 ## 変更 - markers.rs に `Review rate limited.` を追加。受理時は `Review finished.` なので 衝突しない - **共存時の候補選択** (CodeRabbit #429 Major 対応): ack と placeholder は数秒差で 両方投稿されうる。ack は updated_at を持つため、素朴に最新を採ると読める待機時間を 捨てて 30 分 fallback に落ちる (PR #387 の実データがこの形)。最新候補が待機時間を 持たない場合に限り、同一 event 窓 (120 秒) 内で待機時間を持つ候補を優先する。 窓なしで優先すると解け済みの古い placeholder を新しい拒否より優先し、park が 効かず max_retries を浪費するため、窓で切るのが要点 - regression test 5 本 (ack のみ / 受理 ack を誤検出しない / 共存 / ack 後着でも placeholder 優先 / 窓外は流用しない)。body は #387 / #427 の実データ。変異テストで 検知を実測 (4 変異とも該当テストが FAILED) - ADR-034 の format 表に第 4 世代を追加し、2 つの comment class を混同しない旨、 共存時の選択方針、発見の経緯を記録 - review-request.yml の「ack は本 workflow 固有」という記述を訂正 - lint-workflows.mjs の marker 同期検査に追加 (3 層契約へ格上げ) bugfix-batch-plan の PR F は本 PR のため保留中。
順位 431 の実装中に判明した検出層の穴を塞ぐ。PR #428 では workflow 側にだけ ack 文言を足したため、Rust 層 (check-ci-coderabbit) との非対称が残っていた。 ## 何が漏れていたか markers.rs の RATE_LIMIT_MARKERS は walkthrough comment が placeholder として 投稿されたときの marker (Rate limit exceeded / rate limited by coderabbit.ai) だけで、 `@coderabbitai review` への **command ack** の拒否文言 (Review rate limited.) を 持たない。両者は body の語彙が全く別で、ack は placeholder 側の marker を含まない。 ## なぜ実害があるか placeholder は同じコメントが後から実レビュー本文へ編集されるため marker が消える。 一方 ack は要求 1 回につき 1 コメントが残る。実データ (PR #340〜#428 を機械集計) では #412 が ack 3 件 / placeholder marker 0 件、#387 が 1 件 / 0 件で、この窓では ack だけが 唯一の証拠になる。影響は (a) park / 再 trigger 経路に入らず polling を続ける、 (b) 事後の棚卸しでレート制限を過少計数する、の 2 点。silent success にはならない (ADR-064 の陽性証拠 gate が別途効く)。 ## 変更 - markers.rs に `Review rate limited.` を追加。受理時は `Review finished.` なので 衝突しない - **共存時の候補選択** (CodeRabbit #429 Major 対応): ack と placeholder は数秒差で 両方投稿されうる。ack は updated_at を持つため、素朴に最新を採ると読める待機時間を 捨てて 30 分 fallback に落ちる (PR #387 の実データがこの形)。最新候補が待機時間を 持たない場合に限り、同一 event 窓 (120 秒) 内で待機時間を持つ候補を優先する。 窓なしで優先すると解け済みの古い placeholder を新しい拒否より優先し、park が 効かず max_retries を浪費するため、窓で切るのが要点 - regression test 5 本 (ack のみ / 受理 ack を誤検出しない / 共存 / ack 後着でも placeholder 優先 / 窓外は流用しない)。body は #387 / #427 の実データ。変異テストで 検知を実測 (4 変異とも該当テストが FAILED) - ADR-034 の format 表に第 4 世代を追加し、2 つの comment class を混同しない旨、 共存時の選択方針、発見の経緯を記録 - review-request.yml の「ack は本 workflow 固有」という記述を訂正 - lint-workflows.mjs の marker 同期検査に追加 (3 層契約へ格上げ) bugfix-batch-plan の PR F は本 PR のため保留中。
台帳 (docs/claude-code-web-tasks.md) の無人可タスク 順位 339 を
夜間ループ (nightly-todo workflow) が無人で実装した PR です。
CR rate-limit 3 世代 format × 4 parse path(old/new/next/fallback)× 主要 CR state の複合マトリックステストcargo test --workspace+cargo clippy --workspace --all-targets -- -D warningsを回して green を確認済み(agent の自己申告ではなく workflow が回し直した結果)。これはコストフィルタで
品質の保証ではありません — 単一 OS で
--ignoredも hooks smoke も含みませんcli-autonomy-gate --operation autonomous-pr(kill-switch + 背圧) を通過マージ判断は人間が行います (ADR-052 の commitment 点)。CI が緑で内容が台帳の
意図に沿っていればマージしてください。ずれている場合はクローズを —
採用率は WP-18 の受け入れ基準の測定対象です。
run: https://github.com/aloekun/claude-code-hook-test/actions/runs/31418341378
Summary by CodeRabbit