feat(session-start): weekly-review reminder に systemMessage 可視化通知 (ADR-059 / PR-N1) - #299
Conversation
weekly-review reminder が additionalContext のみで発火しユーザー画面に出ず約4週間 silent だった問題 (2026-07-19 調査) に対し、systemMessage=ユーザー向け1行 / additionalContext=モデル向け詳細 の2層分離を決定。ADR-039 3点セット (config opt-in system_message_enabled / kill-switch / bounded lifetime、判定期限 2026-08-16) を適用。weekly のみ先行 dogfood → 行動要求系 nudge へ段階展開。PR-N1 の設計根拠。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
emit_session_start_output の serde_json 組み立てを build_session_start_json(context, system_message) に抽出。system_message = Option<&str> を受け Some のときのみトップレベル systemMessage を付与する形にし、当面 None 呼び出しで挙動不変。systemMessage 有無の JSON 形状を固定する builder unit test 2 本を追加。ADR-059 の systemMessage 配線 (次 commit) の土台。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
WeeklyReviewReminderConfig に system_message_enabled (source default OFF) を追加。compute_weekly_review_reminder_nudge の戻り値を WeeklyReviewNudge { additional_context, system_message } に struct 化し、system_message_enabled が真かつ発火時のみ 1 行の systemMessage を生成 (Missing/ElapsedDays/failed marker を要約、\n 非含)。additionalContext 末尾に「セッション冒頭でユーザーに一言伝えよ」の defense-in-depth 明示指示を追加。main.rs は struct を消費して systemMessage を build_session_start_json へ配線。config parse / systemMessage 生成分岐 / 明示指示 / builder 併用の unit test を追加 (計 92 passed)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… を追記 (ADR-059 dogfood) 本リポジトリで systemMessage 可視化通知を有効化して dogfood する。source default OFF・派生 repo は本行を置かない旨と 2 段 kill-switch (system_message_enabled=false / enabled=false) をコメントに明記。判定期限 2026-08-16。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ADR 番号 059 確定・4 分割コミット粒度・検証結果 (cargo test 92 passed / clippy clean / build:all 成功 / デプロイ exe 駆動で systemMessage 実出力を end-to-end 確認)・残タスク (削除条件 2 = land 後の新セッション UI 目視確認、判定期限 2026-08-16) を追記。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (7)
📝 WalkthroughWalkthrough週次レビューリマインダーに ChangesWeekly review notification visibility
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant SessionStart
participant WeeklyReview
participant JsonBuilder
participant User
SessionStart->>WeeklyReview: compute weekly review nudge
WeeklyReview-->>SessionStart: additional_context and optional system_message
SessionStart->>JsonBuilder: build session-start JSON
JsonBuilder-->>User: emit additionalContext and optional systemMessage
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)(該当なし) Applicable Findings (Medium 以下)(該当なし) Filtered (not applicable)(該当なし — レビュー指摘自体がまだ存在しない) diff 概要 (軽量サマリー)本 PR は ADR-059 (試験運用) の実装。7 ファイル変更、いずれも今回導入する ADR-059 の記述内容と整合している:
ADR-039 の3点セット (config opt-in / kill-switch / bounded lifetime) が ADR-059 内で明示され、実装 ( 次のアクション
|
* docs(todo): PR-N1〜N3 post-merge feedback の採用候補を todo 登録 (#288 昇格 + 329-332 新設) PR #299/#300/#301 の post-merge feedback から採用候補 5 件を系統別に登録: - #288 昇格 (系統 A): pre-push review の diff スコープ漏れが 3 連続再発 (Severity High)。 post-merge 全 run 集約に加え push-runner [diff] stage の tip-only 範囲修正を統合し Tier2→Tier1 - 329 (系統 B): 新規 ADR 起案時の「判断根拠 × 既存 ADR 定義」矛盾チェックリスト - 330 (系統 B): 行動要求 nudge の 2 チャネル返却 + 多義的戻り値 struct 化 convention - 331 (系統 C): systemMessage 含む JSON 出力の exe-spawn E2E テスト - 332 (系統 D): pnpm build:all の Windows cp.exe PATH 自動化 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs(todo): PR #302 CodeRabbit 指摘を反映 (#288 fail-closed 祖先検証 / schema 移行 / Windows 検出 / ADR 意図変更) --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
概要
docs/weekly-review-notification-plan.mdの PR-N1。weekly-review reminder (ADR-031) がadditionalContextのみで発火しており、これは Claude のコンテキストに注入されるだけでユーザーの画面に表示されないため、約 4 週間気付かれなかった (2026-07-19 調査の根本原因)。hook 通知を 2 層の可視化チャネルに分離する (ADR-059):
hookSpecificOutput.additionalContextsystemMessage(トップレベル)変更内容 (コミット単位・レビューしやすい粒度で 5 分割)
docs(adr)— ADR-059 起案 + CLAUDE.md リンク追記refactor(session-start)— SessionStart JSON 組み立てをbuild_session_start_json(context, system_message)に切り出し (この時点はNone呼び出しで挙動不変) + builder テストfeat(session-start)—WeeklyReviewReminderConfig.system_message_enabled(source default OFF) 追加 /compute_weekly_review_reminder_nudgeをWeeklyReviewNudge { additional_context, system_message }に struct 化 /system_message_enabledが真かつ発火時のみ 1 行の systemMessage を生成 / additionalContext 末尾に「セッション冒頭でユーザーに一言伝えよ」の defense-in-depth 明示指示 / main.rs 配線 / テストchore(config)—.claude/hooks-config.tomlにsystem_message_enabled = true(dogfood 有効化)docs— 計画書に PR-N1 作業記録を反映ADR-039 3 点セット
system_message_enabledは source default OFF。本 repo config で明示 ON、派生 repo は本行を置かない。system_message_enabled = falseで systemMessage のみ停止 /enabled = falseで reminder 自体停止。テスト・検証
cargo test -p hooks-session-start: 92 passed (config parse / systemMessage 生成の Missing・ElapsedDays・failed marker・有効/無効 各分岐 / JSON builder 形状 / 明示指示)cargo clippy -p hooks-session-start --all-targets -- -D warnings: クリーンpnpm build:all: 成功systemMessage = "週次レビュー: 実行記録なし (threshold 7 日)。/weekly-review の実行を検討してください"と additionalContext 末尾の defense-in-depth 明示指示の両方が出力されることを確認。残タスク (計画書 削除条件 2)
land 後に 新セッションを起動して UI 上に systemMessage の 1 行が実表示されるか目視確認する。表示スタイル (警告色か等) はドキュメント未明記のため dogfood で確認する。表示されない場合は実装を revert せず、表示経路を再調査してから判断する (defense-in-depth の additionalContext 明示指示が backstop として残る)。
関連
docs/weekly-review-notification-plan.md(PR-N1 → N2 → N3 の直列投入。全 land + dogfood 後に本計画書を削除)🤖 Generated with Claude Code
Summary by CodeRabbit
新機能
ドキュメント