Skip to content

test(session-start): stale_check_enabled の TOML パース経路をテストで固定する - #426

Merged
aloekun merged 2 commits into
masterfrom
claude/nightly-284
Aug 19, 2026
Merged

test(session-start): stale_check_enabled の TOML パース経路をテストで固定する#426
aloekun merged 2 commits into
masterfrom
claude/nightly-284

Conversation

@aloekun

@aloekun aloekun commented Aug 19, 2026

Copy link
Copy Markdown
Owner

概要

夜間 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 行削除

拾い上げ時の確認

  • 削除対象の 3 箇所がいずれも master に現存することを確認済み
  • stale_check_enabled フィールドと対象テストが master に現存し、変更が今も適用可能であることを確認済み
  • master より 8 commit 遅れているが、変更行が重ならないため rebase なしで merge できる見込み

検証

CI (rust ubuntu/windows) の結果による。ローカルでの再検証は PR 作成後に実施する。

Summary by CodeRabbit

  • テスト

    • 設定ファイルで stale_check_enabled = true を指定した場合、値が正しく読み込まれることを確認するテストを追加しました。
  • ドキュメント

    • 完了済みの設定パーステストに関するタスク、作業計画、完了基準をタスク一覧から削除しました。

nightly-todo and others added 2 commits August 17, 2026 18:10
実装完了は cli-ledger-cleanup が台帳の宣言と PR の変更を突き合わせて判定済み。マージと後始末を原子的にするため PR へ同梱する。
@coderabbitai

coderabbitai Bot commented Aug 19, 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 Plus

Run ID: 5ca1ce14-74b5-4acf-8e81-2f73564a5f88

📥 Commits

Reviewing files that changed from the base of the PR and between 8aeeffd and 1dcb9a4.

📒 Files selected for processing (4)
  • docs/claude-code-web-tasks.md
  • docs/todo-summary2.md
  • docs/todo15.md
  • src/hooks-session-start/src/hooks_config.rs
💤 Files with no reviewable changes (3)
  • docs/todo-summary2.md
  • docs/todo15.md
  • docs/claude-code-web-tasks.md

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

stale_check_enabled = true の TOML パーステストを追加しました。パース結果の検証を追加し、関連するタスク台帳と TODO 項目を削除しました。

Changes

stale_check_enabled テスト更新

Layer / File(s) Summary
TOML パーステストと TODO 更新
src/hooks-session-start/src/hooks_config.rs, docs/claude-code-web-tasks.md, docs/todo-summary2.md, docs/todo15.md
stale_check_enabled = true の TOML 入力と、パース結果が Some(true) になることの検証を追加しました。関連するタスク台帳と TODO 項目を削除しました。

Estimated code review effort: 1 (Trivial) | ~5 minutes

Merge Risk: ⚪ Minimal · up to 1dcb9

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)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed タイトルは、主変更であるstale_check_enabledのTOMLパース経路のテスト追加を明確かつ簡潔に説明しています。
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
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 docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/nightly-284

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: pending (rust (ubuntu-latest) pending, rust (windows-latest) pending, request skipping)
  • レビュー状況: 未実施 (陽性証拠なし) — human/bot 問わずレビュー 0 件(pulls/426/reviews は空、インライン指摘も空)。CodeRabbit は「fewer than 10 stars のため自動レビュー対象外」と明示し、手動トリガー待ちのまま未実施
  • Verdict: user_decision

Applicable Findings (Critical / High / Major)

該当なし(レビュー指摘が1件も存在しないため)

Filtered (not applicable)

該当なし

差分概要 (軽量サマリー)

  • src/hooks-session-start/src/hooks_config.rs: 既存テストの TOML fixture に stale_check_enabled = true を追加し、対応する assert_eq! を1行追加(+2 行)。PR タイトル通り、未テストだった stale_check_enabled (Option) のパース経路を固定するテスト追加のみで、本体ロジック変更なし。
  • docs/todo15.md / docs/todo-summary2.md / docs/claude-code-web-tasks.md: 消化済みタスク(順位284「stale_check_enabled の TOML パーステスト追加」)の台帳エントリ削除(純ドキュメント整理、-24行前後)。

次のアクション

  • CodeRabbit の手動レビュートリガー(コメント内チェックボックス)を人間側で起票するか、CI 完了後に人間レビューのみで進めるか判断してください。
  • CI (rust (ubuntu-latest) / rust (windows-latest)) の完了を待ってから merge 判断をしてください(現時点では pending)。

@aloekun
aloekun merged commit 3348661 into master Aug 19, 2026
4 checks passed
@aloekun
aloekun deleted the claude/nightly-284 branch August 19, 2026 17:30
aloekun added a commit that referenced this pull request Aug 22, 2026
不具合修正バックログ消化計画 (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」を加えた
aloekun added a commit that referenced this pull request Aug 22, 2026
不具合修正バックログ消化計画 (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」を加えた
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