test(session-start): stale_check_enabled の TOML パース経路をテストで固定する - #426
Conversation
実装完了は cli-ledger-cleanup が台帳の宣言と PR の変更を突き合わせて判定済み。マージと後始末を原子的にするため PR へ同梱する。
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
💤 Files with no reviewable changes (3)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough
Changesstale_check_enabled テスト更新
Estimated code review effort: 1 (Trivial) | ~5 minutes Merge Risk: ⚪ Minimal · up to This localized change adds coverage for the stale-check configuration parsing path and cleans up related tracking documentation; no actionable merge-blocking risk remains beyond normal checks and review. Possibly related PRs
🚥 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 |
🤖 PR Monitor 分析 (GitHub Actions バックストップ)
Applicable Findings (Critical / High / Major)該当なし(レビュー指摘が1件も存在しないため) Filtered (not applicable)該当なし 差分概要 (軽量サマリー)
次のアクション
|
不具合修正バックログ消化計画 (PR I-L = #434 / #435 / #436 / #437) の post-merge feedback 全 48 提案を採否判定した。内訳は採用候補 21 / 様子見 11 / 却下推奨 12、 および実コード確認で 1 件脱落。 ユーザー判断 (2026-08-22): - Tier 1 (決定論的防止) は 4 件すべて採用 - Tier 2 (テスト/自動化) は実装の穴埋めに直結する 5 件を採用 - Tier 3 (ドキュメント/ルール) は 8 件すべて却下 T3 却下の根拠は本 feedback 自身が示した実証にある。PR #438 の feedback が 「routing 更新チェックリストは既に docs/dev-conventions.md に存在したのに 3 件目の再発を防げなかった」と指摘しており、規約追記の有効性が否定的に 実証された。同じ形の 8 件を足す理由が無い。内容は各 PR の doc コメントと PR 本文に記録済みで、失われるものは無い。 起票 (統合の単位は「そのまま 1 PR になる粒度」): - 481 (T1): lib-subprocess の失敗経路を塞ぎ切る。#436 T1-1 は実バグで、正常終了 経路の join だけが join_within_grace を経由せず無制限のまま残っている (実コードで現存を確認済み)。T2-1/T2-3 のテスト補強を同じ単位に含める - 482 (T1): 外部コマンド呼び出しの落とし穴を lint で塞ぐ。gh の 100 件無言 切り捨てと git push --force の lease 欠落。どちらも今回実際に踏んだ - 483 (T2): エラーメッセージの無制限 debug 補間を lint で検出する - 484 (T2): push stage の bare push フォールバック不変条件を seal する - 485 (T2): PR L で追加した実装のテスト補強 起票前の実コード確認で 1 件が脱落した: - #437 T1-4「parse エラーに行番号 + 行の中身」は PR L の D-2 で実装済みだった (SourceLine / clip_for_message を確認)。同じ確認で前回も 1 件脱落しており、 feedback レポートは台帳と同じく実装が動くほどずれる 採用 9 件のうち 4 件が「テストが一部の経路しか通っていなかった」形で、本セッション 中に 2 度踏んだテストの空振りと同型。 PR #426 の failed marker も復旧した (pnpm merge-pr --feedback-only 426)。全 7 提案の 採用候補 1 件は T3 のため上記方針に従い却下。docs 変更は生じない。 検証: pnpm lint:docs green / pnpm lint:md green CodeRabbit 指摘 4 件に対応 (PR #439、いずれも妥当): - Minor: 採否件数が合っていなかった (21+11+12+1=45≠48)。実数を数え直すと表に載った 36 件 (採用 21 / 様子見 7 / 却下 8) + 除外 4 件 = 40 件。「48」は前回バッチ (PR E-H) の 数字を数え直さず流用したもので、レポートを機械的に数えれば 5 秒で分かる値だった。 再発防止として「件数は数え直すこと」を節の前書きに明記した - Major (順位 481): 正常終了経路の無制限 join を「上限を入れるか、入れない理由を doc に 記録する」と両論併記していたが、**文書化では hang を 1 ミリ秒も縮められない**。上限付きを 必須とし、子孫がパイプを握ったまま子が正常終了するケースの決定論的テストを完了基準に加えた - Major (順位 482): lease を要求する対象が todo25.md では削除系 (--delete)、summary2 では 非 fast-forward 更新系 (--force) とずれていた。**両者は同じ lint パターンでは捕まらず**、 --force だけを見る規則では削除経路が丸ごと素通りする (PR L で実際に踏んだのは削除系)。 refspec 形式 (:refs/... / +refs/...) も含めて 2 種類を表で明示し、両文書を統一した - Major (順位 485): inject_git_dir_for_gh_with は GIT_DIR と cwd という**プロセス全体状態**を 読み書きするため、テスト並列実行で他テストと競合する。Drop guard による復元 (ADR-025 の CwdRestore が前例、GIT_DIR は「未設定」も状態として区別) と共有 mutex での直列化 (ADR-041) を先行タスクとして追加し、完了基準に「並列 / 直列の両方で green」を加えた
不具合修正バックログ消化計画 (PR I-L = #434 / #435 / #436 / #437) の post-merge feedback 全 48 提案を採否判定した。内訳は採用候補 21 / 様子見 11 / 却下推奨 12、 および実コード確認で 1 件脱落。 ユーザー判断 (2026-08-22): - Tier 1 (決定論的防止) は 4 件すべて採用 - Tier 2 (テスト/自動化) は実装の穴埋めに直結する 5 件を採用 - Tier 3 (ドキュメント/ルール) は 8 件すべて却下 T3 却下の根拠は本 feedback 自身が示した実証にある。PR #438 の feedback が 「routing 更新チェックリストは既に docs/dev-conventions.md に存在したのに 3 件目の再発を防げなかった」と指摘しており、規約追記の有効性が否定的に 実証された。同じ形の 8 件を足す理由が無い。内容は各 PR の doc コメントと PR 本文に記録済みで、失われるものは無い。 起票 (統合の単位は「そのまま 1 PR になる粒度」): - 481 (T1): lib-subprocess の失敗経路を塞ぎ切る。#436 T1-1 は実バグで、正常終了 経路の join だけが join_within_grace を経由せず無制限のまま残っている (実コードで現存を確認済み)。T2-1/T2-3 のテスト補強を同じ単位に含める - 482 (T1): 外部コマンド呼び出しの落とし穴を lint で塞ぐ。gh の 100 件無言 切り捨てと git push --force の lease 欠落。どちらも今回実際に踏んだ - 483 (T2): エラーメッセージの無制限 debug 補間を lint で検出する - 484 (T2): push stage の bare push フォールバック不変条件を seal する - 485 (T2): PR L で追加した実装のテスト補強 起票前の実コード確認で 1 件が脱落した: - #437 T1-4「parse エラーに行番号 + 行の中身」は PR L の D-2 で実装済みだった (SourceLine / clip_for_message を確認)。同じ確認で前回も 1 件脱落しており、 feedback レポートは台帳と同じく実装が動くほどずれる 採用 9 件のうち 4 件が「テストが一部の経路しか通っていなかった」形で、本セッション 中に 2 度踏んだテストの空振りと同型。 PR #426 の failed marker も復旧した (pnpm merge-pr --feedback-only 426)。全 7 提案の 採用候補 1 件は T3 のため上記方針に従い却下。docs 変更は生じない。 検証: pnpm lint:docs green / pnpm lint:md green CodeRabbit 指摘 4 件に対応 (PR #439、いずれも妥当): - Minor: 採否件数が合っていなかった (21+11+12+1=45≠48)。実数を数え直すと表に載った 36 件 (採用 21 / 様子見 7 / 却下 8) + 除外 4 件 = 40 件。「48」は前回バッチ (PR E-H) の 数字を数え直さず流用したもので、レポートを機械的に数えれば 5 秒で分かる値だった。 再発防止として「件数は数え直すこと」を節の前書きに明記した - Major (順位 481): 正常終了経路の無制限 join を「上限を入れるか、入れない理由を doc に 記録する」と両論併記していたが、**文書化では hang を 1 ミリ秒も縮められない**。上限付きを 必須とし、子孫がパイプを握ったまま子が正常終了するケースの決定論的テストを完了基準に加えた - Major (順位 482): lease を要求する対象が todo25.md では削除系 (--delete)、summary2 では 非 fast-forward 更新系 (--force) とずれていた。**両者は同じ lint パターンでは捕まらず**、 --force だけを見る規則では削除経路が丸ごと素通りする (PR L で実際に踏んだのは削除系)。 refspec 形式 (:refs/... / +refs/...) も含めて 2 種類を表で明示し、両文書を統一した - Major (順位 485): inject_git_dir_for_gh_with は GIT_DIR と cwd という**プロセス全体状態**を 読み書きするため、テスト並列実行で他テストと競合する。Drop guard による復元 (ADR-025 の CwdRestore が前例、GIT_DIR は「未設定」も状態として区別) と共有 mutex での直列化 (ADR-041) を先行タスクとして追加し、完了基準に「並列 / 直列の両方で green」を加えた
概要
夜間 todo 消化ループ (順位 284) が 2026-08-17 に実装したが、PR が作られないまま
ブランチだけが残っていたものを拾い上げる。実装内容は当時のまま、追加変更はしていない。
背景 — なぜ PR が無かったか
claude/nightly-284は 2026-08-17 に push されたが、対応する PR が存在しなかった。同日の GitHub 障害で PR 作成まで到達しなかった可能性が高い (プロジェクト側の不具合とは
断定していない)。
放置すると静かな行き止まりになる: 夜間ループの着手済み判定は open PR ではなく
リモートブランチの存在で行う (
nightly-todo.yml)。ブランチが残る限り順位 284 は選定対象から除外され続け、台帳の行は
✅のまま誰も気づかない。変更内容 (順位 284)
StalenessConfig.stale_check_enabledのパース経路にテストが無く、silent degrade(機能が黙って無効化される) を検出できない状態だった。既存テスト
hooks_config_parses_session_start_staleness_sectionの fixture に 1 行足し、assert を 1 行足す。
src/hooks-session-start/src/hooks_config.rs(+2 行)docs/todo15.mdの節削除、docs/todo-summary2.md/docs/claude-code-web-tasks.mdの 284 行削除拾い上げ時の確認
stale_check_enabledフィールドと対象テストが master に現存し、変更が今も適用可能であることを確認済み検証
CI (rust ubuntu/windows) の結果による。ローカルでの再検証は PR 作成後に実施する。
Summary by CodeRabbit
テスト
stale_check_enabled = trueを指定した場合、値が正しく読み込まれることを確認するテストを追加しました。ドキュメント