From 29b7bcd2cfbffb8d400cf689d3918ab1fdd1b893 Mon Sep 17 00:00:00 2001 From: nightly-todo Date: Mon, 17 Aug 2026 18:10:58 +0000 Subject: [PATCH 1/2] =?UTF-8?q?chore(ledger):=20=E9=A0=86=E4=BD=8D=20284?= =?UTF-8?q?=20=E3=82=92=E5=AE=8C=E4=BA=86=E3=81=AB=E4=BC=B4=E3=81=84?= =?UTF-8?q?=E5=8F=B0=E5=B8=B3=E3=81=8B=E3=82=89=E5=89=8A=E9=99=A4=E3=81=99?= =?UTF-8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 実装完了は cli-ledger-cleanup が台帳の宣言と PR の変更を突き合わせて判定済み。マージと後始末を原子的にするため PR へ同梱する。 --- docs/claude-code-web-tasks.md | 1 - docs/todo-summary2.md | 1 - docs/todo15.md | 19 ------------------- 3 files changed, 21 deletions(-) diff --git a/docs/claude-code-web-tasks.md b/docs/claude-code-web-tasks.md index 81e83eb9..6c09927f 100644 --- a/docs/claude-code-web-tasks.md +++ b/docs/claude-code-web-tasks.md @@ -144,7 +144,6 @@ close は「この成果物は採らない」という判断であって、「 | 順位 | Tier | 無人可 | 内容 | 対象ファイル (実パス) | 工数 | 注意 | PRタイトル | |---|---|---|---|---|---|---|---| -| 284 | T2 | ✅ | `stale_check_enabled` (Option\) の TOML パーステスト追加(未テストのパース経路を補完) | `src/hooks-session-start/src/hooks_config.rs`(`mod tests`、既存 `hooks_config_parses_session_start_staleness_section` 拡張) | XS | 純 deserialize。`temp_dir()` fixture で Linux CI pass 済みパターン、最もクリーン。**2026-08-17 に human → auto へ変更**: `—` だった理由は旧・条件 3(未マージの `claude/select-next-task-a9aiam` に同タスクの実装が乗っている)だが、同ブランチは 2026-08-15 に削除済みで、条件 3 自体も 2026-08-16 に廃止された | test(session-start): stale_check_enabled の TOML パース経路をテストで固定する | | 240 | T2 | ✅ | `takt.rs` の spawn/try_wait `Err(_)` → `Err(e)` + `eprintln!`(原因握り潰し解消、`.failed` marker debug 改善) | `src/cli-merge-pipeline/src/feedback/takt.rs`(60・68 行) | XS | pnpm/takt の実実行は成功条件外。compile + clippy 通過で足りる | fix(merge-pipeline): takt spawn/try_wait のエラー握り潰しを解消する | | 180 | T2 | — | `escape_markdown_pipe(&str)` を pub 追加 + `format_table` の user field に適用 + 5 variant test(markdown table 破壊の防止 / prompt injection の緩和 = defense-in-depth の一層) | `src/lib-report-formatter/src/lib.rs` | XS-S | 外部依存ゼロの純 lib。既存 private `truncate()` と escape ロジック重複、DRY 整理(共通化 or 役割分担)を検討 | | | 228 | T2 | ✅ | `evaluate_rate_limit_shortcut` の cr_clean 判定(`new_comments` / `actionable_comments` / `unresolved_threads` 3 field × None/Some 境界)の回帰テスト | `src/cli-pr-monitor/src/stages/poll/rate_limit/tests.rs` | S | pure 関数、silent-clean 誤認保護。同 crate の `#[ignore]` 統合テストは無関係。**2026-08-17 パス修正**: 旧記載の `rate_limit_signal.rs` は module 分割で消滅しており実在しない(判定関数の実体は同階層の `rate_limit.rs`、テストは `rate_limit/tests.rs`)。既存の `evaluate_rate_limit_shortcut_*` 5 件と重複しない境界だけを足す | test(check-ci): rate-limit shortcut の cr_clean 判定をテストで固定する | diff --git a/docs/todo-summary2.md b/docs/todo-summary2.md index 91cfc7f8..c0d291d5 100644 --- a/docs/todo-summary2.md +++ b/docs/todo-summary2.md @@ -45,7 +45,6 @@ | 281 | 🚀 Tier 1 | **config-reading hook の current_dir() 解決を検出する lint rule (PR #267 post-merge-feedback T1-1 採用)** | todo15.md | S | なし (新規 hook が cwd 基準 config 解決を実装し pre-push REJECT → fix 修正の実例。cwd drift による silent fail-open は新規 hook のたびに再発しうる。Severity High。順位 287 と同一 PR bundle 推奨) | | 282 | 🚀 Tier 1 | **jj-op-verify の変更系 verb 網羅拡大 — undo/restore/split/bookmark move 等 (PR #267 post-merge-feedback T1-2 採用)** | todo15.md | M | なし (特に `jj undo` の検出漏れは lost-update 再発リスク高。拡張時は expected_op_keyword を jj 0.42 実機の op log 出力と要照合) | | 283 | 🚀 Tier 1 | **jj-op-verify の verb 検出を command-boundary に anchor (PR #267 post-merge-feedback T1-3 採用)** | todo15.md | S | なし (commit message 引用符内の "jj new" 等での false positive 防止。実装時に accepted risk で一度見送った経緯あり = 着手時に実観測 0 件のままか再確認。順位 285 と表裏) | -| 284 | 🔧 Tier 2 | **stale_check_enabled の TOML パーステスト追加 (PR #267 post-merge-feedback T2-1 採用)** | todo15.md | XS | なし (新フィールドのパース経路が未テスト = silent degrade リスク。既存テストへの数行追加で完備) | | 285 | 🔧 Tier 2 | **jj keyword を含む commit message の tokenization edge-case テスト (PR #267 post-merge-feedback T2-2 採用)** | todo15.md | S | なし (順位 283 と表裏。283 の着手有無に関わらず現行挙動を regression test で固定する価値が独立して残る。283 と同一 PR 消化が効率的) | | 286 | 🔧 Tier 2 | **config path 解決の cwd 跨ぎ integration test (PR #267 post-merge-feedback T2-3 採用)** | todo15.md | M | なし (FIXED 済 cwd-config bug の regression guard。既存テストは pure parser のみで file-lookup 経路未カバー。Severity High、Adoption Risk = OS 依存) | | 287 | 💎 Tier 3 | **「config 読み hook は exe-relative 解決必須」convention の明文化 (PR #267 post-merge-feedback T3-1 採用)** | todo15.md | XS | なし (順位 281 の文書層補完。**281 と同一 PR bundle 推奨**、別作業に切り出す価値は低い) | diff --git a/docs/todo15.md b/docs/todo15.md index 64cb517b..1809cf13 100644 --- a/docs/todo15.md +++ b/docs/todo15.md @@ -362,25 +362,6 @@ --- -### stale_check_enabled の TOML パーステスト追加 (PR #267 post-merge-feedback T2-1 採用) - -> **動機**: PR #267 で追加した `StalenessConfig.stale_check_enabled` のパース経路にテストがなく、silent degrade (機能が黙って無効化) のリスク。既存テストへの数行追加で完備できる。 -> -> **参照**: `.claude/feedback-reports/267.md` Tier 2 #1、`src/hooks-session-start/src/hooks_config.rs` の既存パーステスト -> -> **実行優先度**: 🔧 Tier 2 — Effort XS。 - -#### 作業計画 - -- [ ] 既存 fixture に `stale_check_enabled = true` + assert を追加 -- [ ] 本エントリ削除 + todo-summary2.md 行削除 - -#### 完了基準 - -- 新フィールドのパースが regression test で固定されていること。 - ---- - ### jj keyword を含む commit message の tokenization edge-case テスト (PR #267 post-merge-feedback T2-2 採用) > **動機**: 順位 283 (anchor 修正) と表裏。283 の着手有無に関わらず、現行挙動 (既知の限界) を regression test で明示的に固定する価値が独立して残る。 From 1dcb9a4cdcde26de54f0416ae4ba20e8c9fdb199 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2026 18:10:59 +0000 Subject: [PATCH 2/2] =?UTF-8?q?test(session-start):=20stale=5Fcheck=5Fenab?= =?UTF-8?q?led=20=E3=81=AE=20TOML=20=E3=83=91=E3=83=BC=E3=82=B9=E7=B5=8C?= =?UTF-8?q?=E8=B7=AF=E3=82=92=E3=83=86=E3=82=B9=E3=83=88=E3=81=A7=E5=9B=BA?= =?UTF-8?q?=E2=80=A6=20(nightly-todo=20=E9=A0=86=E4=BD=8D=20284)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks-session-start/src/hooks_config.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/hooks-session-start/src/hooks_config.rs b/src/hooks-session-start/src/hooks_config.rs index debd20ce..e106f502 100644 --- a/src/hooks-session-start/src/hooks_config.rs +++ b/src/hooks-session-start/src/hooks_config.rs @@ -132,6 +132,7 @@ mod tests { enabled = true fetch_timeout_secs = 5 default_branch = "main" +stale_check_enabled = true "#; let mut f = std::fs::File::create(claude_dir.join("hooks-config.toml")).unwrap(); f.write_all(toml_str.as_bytes()).unwrap(); @@ -145,6 +146,7 @@ default_branch = "main" assert_eq!(staleness.enabled, Some(true)); assert_eq!(staleness.fetch_timeout_secs, Some(5)); assert_eq!(staleness.default_branch.as_deref(), Some("main")); + assert_eq!(staleness.stale_check_enabled, Some(true)); let _ = std::fs::remove_dir_all(&root); }