Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions docs/claude-code-web-tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,14 +147,11 @@ close は「この成果物は採らない」という判断であって、「
| 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 役割分担)を検討 | |
| 178 | T2 | — | `state.rs` の behavioral invariant test を ADR-041 pattern(sentinel 事前投入 + mutation 不在 assert)で 3-5 件追加 | `src/cli-pr-monitor/src/state.rs` | S | **todo 提案の invariant #1/#2 は実挙動と不一致**。`update_state_from_check_result` の実挙動を読んで実在する invariant を再選定する | |
| 302 | T3 | — | `takeover_stale_lock_skips_remove_when_snapshot_is_stale` を deterministic concurrency test のテンプレートとして記録する(既存テストへの doc コメント追加) | `src/lib-jj-helpers/src/pipeline_lock.rs` | XS | 既存テストにパターンの説明を足すだけ。挙動は変えない。**2026-08-17 auto → human へ変更**: [ADR-074](adr/adr-074-auto-lane-screening-criteria.md) 決定3が除外する文書タスク(PRタイトルも `docs(...)` prefix)に該当し、rustdoc コメントと `docs/` 配下文書タスクを区別する規定が ADR-074 に無いため | docs(jj-helpers): deterministic concurrency test のテンプレートを記録する |
| 324 | T1 | ✅ | `push_to_remote` に push 拒否検知が無く、post-PR の re-push 失敗を成功として扱う経路を塞ぐ | `src/cli-pr-monitor/src/stages/push.rs` | XS | 単一関数の戻り値判定。gh/network の実実行は成功条件外 | fix(pr-monitor): push 拒否を検知して成功扱いを止める |
| 383 | T2 | — | `is_separator_row` にパイプ検証 guard を追加し、bare `---` がセパレータ行として通らないことの回帰テストを足す | `src/lib-ledger/src/lib.rs` | S | **欠陥は 2026-08-07 に実コードで確認済み**(`is_table_row` は行頭 `\|` を要求するが `is_separator_row` は `split_cells` の結果しか見ない)。対処は guard 1 つとテスト。ADR-072 決定 2 の fail-closed の coverage hole。**2026-08-23 auto → human へ変更**: 成果物 `src/lib-ledger/src/lib.rs` が [ADR-072](adr/adr-072-nightly-todo-loop.md) 決定 6 の Guard 禁止パス `src/lib-ledger/` に当たり、夜間ループでは実装しても push が拒否される([ADR-074](adr/adr-074-auto-lane-screening-criteria.md) 決定 2 クラス 3)。2026-08-20 の run 87837551740 で実際に `[NIGHTLY_DENY]` 停止した。機械検査は順位 486 | fix(ledger): is_separator_row のパイプ検証欠落を塞ぐ |
| 162 | T2 | — | fail-closed error path(`Option::None`)の個別テストを追加(`check_todo_staleness` / `build_todo_staleness_message` の None ケース独立検証) | `src/hooks-pre-tool-validate/src/todo_staleness.rs` | S | PR #177 の `behind.unwrap_or(0)` fail-closed 漏れ修正の回帰テスト。純関数。**2026-08-23 auto → human へ変更**: 本ファイル [§ 対象外](#対象外web-では完了不能--残価値枯渇) が本順位を「着手前に『残りは 1 件のみ』である点をユーザーに確認」と記録しており、`✅` と矛盾していた (PR #441 CodeRabbit 指摘)。対象外側の記述は 2026-08-23 の実測で 3 点とも裏が取れた — (a) `behind.is_none_or(...)` の fix は適用済み (todo_staleness.rs:136,189)、(b) `build_todo_staleness_message` の None ケースは 3 テストで既存、(c) 残るのは `check_todo_staleness` の early-return 以降で、同関数は DI 口を持たないため DI refactor が要る。着手前のユーザー確認と DI refactor の要否判断は [ADR-074](adr/adr-074-auto-lane-screening-criteria.md) 決定 2 クラス 5 に当たるため human lane とする。**2026-08-23 宣言パス修正**: 旧記載 `main.rs` は漂流していた — 対象 2 関数 `check_todo_staleness` / `build_todo_staleness_message` は `todo_staleness.rs` にあり `main.rs` には 1 度も現れない (module 分割で移動したまま台帳が追随していなかった)。2026-08-23 の dry_run で `[LEDGER_CLEANUP_BLOCK]` により実際に停止した。順位 176 / 145 と同型 | test(pre-tool-validate): fail-closed の None ケースをテストで固定する |
| 199 | T2 | ✅ | multi-byte 文字を含む string window test を標準 coverage requirement 化(境界テストの追加) | `src/cli-docs-lint/src/priority_inversion.rs` | S | 既存の `RESOLUTION_WINDOW_CHARS` は文字数基準。multi-byte で境界が崩れないことを固定する | test(docs-lint): multi-byte 文字を含む window の境界をテストで固定する |
| 143 | T2 | — | 複言語 fixture helper(日本語 / emoji / combining chars の 3 関数)を標準化して string-processing の境界テストを書きやすくする | `src/hooks-post-tool-linter/src/main.rs` | S | helper の追加のみ。既存テストの書き換えは範囲外。**2026-08-23 auto → human へ変更**: 宣言先 `main.rs` は 73 行の起点のみでテスト 0 件、string 処理のテストは `utf8_integrity.rs` 等の別モジュールにある (漂流)。ただし「複数モジュールが使う共有 fixture helper をどこに置くか」は台帳から一意に決まらず ([ADR-074](adr/adr-074-auto-lane-screening-criteria.md) 決定 2 クラス 5)、パスの機械的な差し替えでは塞げないため人間が実装先を決める | test(post-tool-linter): 複言語 fixture helper を標準化する |
| 356 | T2 | ✅ | weekly / monthly staleness 判定の共通 fixture を parametrized test 化する | `src/hooks-session-start/src/monthly_review.rs` | S | 両者は同じ閾値判定パターン。`temp_dir()` fixture で Linux CI pass 済み | test(session-start): staleness 判定の共通 fixture を parametrized 化する |
| 412 | T3 | ✅ | `resolve_main_workspace_root` の colocated 経路と file 経路で正規化の粒度が違う点を揃える | `src/lib-jj-helpers/src/workspace.rs` | S | **2026-08-17 パス確認**: 実体は `lib-jj-helpers/src/workspace.rs`。両経路の戻り値を同じ正規化にし、差を回帰テストで固定する | fix(jj-helpers): workspace root 解決の正規化粒度を揃える |
| 457 | T2 | ✅ | lint rule の宣言拡張子が `test_coverage` で網羅されているかを検査する(逆向き coverage 検査の拡張) | `src/hooks-post-tool-linter/src/custom_rules/coverage.rs` | S | 既存の `rule_test_coverage_check` / `orphan_fixture_check` と同じ層に足す。純関数 + fixture | test(post-tool-linter): lint rule の宣言拡張子の網羅を検査する |
| 428 | T2 | — | PR 番号を取る CLI の不正値(`--pr 0` 等)を弾く検査を足す | `src/cli-merge-pipeline/src/main.rs` | S | 既に `pr_number_zero_is_rejected` があるため、**未カバーの入口(他 exe の同種フラグ)を洗ってから足す**。gh の実実行は成功条件外。**2026-08-23 auto → human へ変更**: 夜間ループでは完了不能と判明したため。理由は 2 つで、いずれも 2026-08-23 の実測にもとづく。(1) **宣言先が既に完成している** — 宣言成果物 `src/cli-merge-pipeline/src/main.rs` は `parse_pr_flag` で `--pr` / `--feedback-only` の 0 を拒否済みで、テスト `pr_number_zero_is_rejected` / `feedback_only_pr_number_zero_is_rejected` も存在する。(2) **洗った結果、未カバーの入口が見つからない** — PR 番号フラグを持つもう一方の入口 `src/check-ci-coderabbit/src/main.rs` も `--pr` 経路で `pr == 0` を弾いており (main.rs:299)、`src/cli-pr-monitor` はそもそも PR 番号フラグを取らない (PR URL から取得する)。この状態で夜間ループが着手すると、正しい実装ほど「足すものが無い」に到達して `[NIGHTLY_DENY] 変更がありません` で停止し、無理に何かを足せば宣言先以外を触って `[LEDGER_CLEANUP_BLOCK]` で停止する。どちらに転んでも完了できない。残る価値は `check-ci-coderabbit` の 0 拒否に専用テストが無い点だが、それは宣言先と別ファイルであり、対象の再定義は人間が行う ([ADR-074](adr/adr-074-auto-lane-screening-criteria.md) 決定 2 クラス 5 = 実装内容が一意に定まらない) | fix(cli): PR 番号フラグの不正値を弾く |
| 454 | T1 | — | 自律実行ガードレールの 3 点同期(workflow の Guard step / agent プロンプト / ADR-072 決定 6 の列挙)を cargo test で機械検証する | `src/cli-nightly-task-select/src/main.rs`(実ファイルを読む既存 2 検査と同じ形。新規 test module でも可) | S | **workflow ファイルは読むだけで書き換えない**。3 箇所からパス集合を抽出し完全一致を要求する。抽出は行指向で足りる。**2026-08-23 auto → human へ変更**: 成果物 `src/cli-nightly-task-select/src/main.rs` 自体が [ADR-072](adr/adr-072-nightly-todo-loop.md) 決定 6 の Guard 禁止パス `src/cli-nightly-task-select/` に当たる([ADR-074](adr/adr-074-auto-lane-screening-criteria.md) 決定 2 クラス 3)。注意欄が守っていたのは「workflow を書き換えない」だけで、成果物側は照合されていなかった。機械検査は順位 486 | test(nightly-todo): ガードレール 3 点同期を cargo test で固定する |
| 455 | T1 | ✅ | 一時ファイルの弱い一意性(PID や ms を含まない固定名)を検知する custom lint rule を追加 | `.claude/custom-lint-rules.toml` + `tests/fixtures/incidents/{bad,good}/` | S | **rule 定義・rule test・fixture の 3 点セットが要る**(片方だけだと #394 と同型の未完了マージになる)。検証は cargo test で完結 | feat(lint): 一時ファイルの弱い一意性を検知する rule を追加する |
Expand Down Expand Up @@ -265,6 +262,16 @@ cargo test で検証完結するが、新規 module / lint rule / 軽微リフ

順位 162 も同じ照合で `✅` と対象外記録の矛盾が見つかったが、そちらは**対象外側が正しかった**ため採用タスク表を `—` へ変更した (削除ではないので上表には載せない)。

### 2026-09-02

| 順位 | 節 | 判定 | 根拠 |
|---|---|---|---|
| 324 | 採用タスク | マージ済みのため削除 | 夜間 PR [#427](https://github.com/aloekun/claude-code-hook-test/pull/427) が 2026-08-30 にマージ。ブランチの台帳削除コミット (親) を人間のリベース (`jj rebase -r` で先端のみ移動) が置き去りにしたため行が残り、2026-09-01 の夜間 run が再選択して空 diff red になった |
| 412 | 採用タスク | マージ済みのため削除 | 夜間 PR [#459](https://github.com/aloekun/claude-code-hook-test/pull/459) が 2026-08-30 にマージ。原因は 324 と同一 (3/3 で同じリベース操作ミス) |
| 457 | 採用タスク | マージ済みのため削除 | 夜間 PR [#461](https://github.com/aloekun/claude-code-hook-test/pull/461) が 2026-08-30 にマージ。原因は 324 と同一 |

3 件の削除は `cli-ledger-cleanup --apply` を順位ごとに実行して行った (台帳行 + 順位 table 行 + 詳細エントリの 3 点セット)。再発防止は (1) `claude/nightly-<順位>` の PR が当該順位の台帳行削除を diff に含むことの CI 検査、(2) merged PR と台帳の照合を weekly-review / 夜間 preflight へ組み込み、として別 PR で実装する。

---

## 未完了のままマージされた順位
Expand Down
3 changes: 0 additions & 3 deletions docs/todo-summary2.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@
| 316 | 💎 Tier 3 | **ADR-044「2nd consumer で共通化」原則の明確化・判定基準の例示 (275.md T3-2 採用)** | todo16.md | S | なし (is_truthy の非対称性を case study 化。順位 317 と対) |
| 317 | 💎 Tier 3 | **utility 関数追加前のチェックリスト(workspace grep)(275.md T3-3 採用)** | todo16.md | XS | 順位 316 (ADR-044 明確化と対) |
| 321 | 🔧 Tier 2 | **ADR-019/WP-03 クォータ設計の前提 stale (無料枠 → Pro + adaptive limit) + 初回レビュー処理中 push のレビュー欠落穴** | todo17.md | S | なし (dev-conventions 順位 262「外部 SaaS 無料枠/制限の調査チェックリスト」の適用対象) |
| 324 | 🚀 Tier 1 | **`cli-pr-monitor::push_to_remote` に push 拒否検知が無く post-PR re-push が無言で失敗し得る (push-pipeline-fix-plan §6 backlog 9 移管)** | todo17.md | XS | なし (T5 = PR #282 が cli-push-runner 側で塞いだ silent-failure push と同型の穴。出力は `run_cmd_direct` で全量取得済のため判定追加のみ) |
| 326 | 🔧 Tier 2 | **並列設計レビュアー (design-fit reviewer) の実験起案 — 見落とし実績の事前調査付き (R4/ADR-047 却下分析の代替案)** | todo17.md | S (Phase 0) / M (Phase 1 条件付き) | なし (Phase 0 の需要調査で見落とし実績ゼロなら見送り = negative result 永続化。ADR-047 却下確定 = refute.yaml 削除 revert PR とは独立に進められる) |
| 327 | 🔧 Tier 3 | **多段コミットの ADR/observability 更新チェックリストを dev-conventions に追加 (#295/#296 post-merge feedback 採用: status 同期 / plain-text 参照 / セクション同期)** | todo17.md | S | なし (実害は各 PR review/feedback で捕捉済。doc checklist のみ、機械化は再発観測後にエスカレーション) |
| 329 | 💎 Tier 3 | **新規 ADR 起案時の「判断根拠 × 既存 ADR 定義」矛盾チェックリストを dev-conventions に追加 (#301 post-merge feedback 採用)** | todo17.md | S | なし (ADR-055 初版が自定義の `decision` 軸と矛盾する除外根拠を採用→Amendment 撤回の手戻り。ADR 59件超で同型見落とし再発しうる。#327 と対の doc-only 対処) |
Expand Down Expand Up @@ -125,7 +124,6 @@
| 408 | 🚀 Tier 1 | **safety-critical な config 比較に shell glob を禁止し exact-match を必須化 (系統 C-1)** | todo21.md | S | なし (2026-08-10 採用。kill-switch 判定の部分一致で fail-closed を謳う step 自身が fail-open だった。該当コメントが無かったため症状が出ず潜伏していた) |
| 409 | 🔧 Tier 2 | **shell の部分一致比較を検出するカスタムリントルール (系統 C-2)** | todo21.md | S-M | 順位 408 (規約側)。検出対象を安全装置の判定に絞れるかが採否の分かれ目。絞れなければ却下も正規の出口 (ADR-042 の mechanizable 判定) |
| 411 | 🚀 Tier 1 | **`cargo fmt` を PreToolUse でブロックし正しい対処を提示 (系統 F、規約ではなく機構)** | todo21.md | S | なし (2026-08-10 ユーザー判断で提案の形を変更。規約は毎セッション読まれコンテキストを圧迫するが hook は発火時のみコストが出る。ADR-042 へこの非対称を追記するのも本エントリの範囲。**反射的に実行されやすく無関係な差分を生む**ため WP-18 とは独立に早期着手する = 2026-08-10 ユーザー判断) |
| 412 | 💎 Tier 3 | **`resolve_main_workspace_root` の colocated 経路と file 経路で正規化の粒度が違う** | todo21.md | S | なし (2026-08-10 PR #385 の CodeRabbit 指摘。colocated は入力をそのまま返し file 経路は canonicalize する。現行 caller に破綻経路は見当たらないが、caller が文字列比較を始めた時点で分裂しうる。PR #385 は逐語移動 PR のため見送り) |
| 413 | 🔧 Tier 2 | **`CwdRestore` Drop guard が 8 定義 / 6 ファイルに複製。ADR-025 の統合トリガーと再評価期限を超過** | todo21.md | S-M | なし (2026-08-10 PR #385 の pre-push review 指摘。ADR-025 自身が「2 例目で `lib-test-helpers` へ統合」と定め再評価期限 2026-07-31 も過ぎている。抽出するか ADR-025 の status を更新するかの判断が要る) |
| 414 | 🚀 Tier 1 | **「各出力面は新しい perimeter」原則と screening 関数の出口別分離を明文化 (系統 A-1)** | todo22.md | S | なし (2026-08-11 採用。#389 で PR タイトルが 3 つ目の公開面になり本文用 screening を流用できないと判明。3 ソースが独立に同一原則を指摘。ADR-054 へ output surface × wrapping context の対応表を追記) |
| 415 | 🔧 Tier 2 | **PR 検出源を広げる変更の信頼スコープ検査チェックリスト (系統 A-2)** | todo22.md | XS | なし (2026-08-11 採用。#385 の security review が「origin push 権限と同等の信頼度のソースまで検出を拡張する」点を指摘。検出源追加時の確認項目を明文化) |
Expand Down Expand Up @@ -166,7 +164,6 @@
| 454 | 🚀 Tier 1 | **自律実行ガードレールの 3 点同期を機械検証する (#400-#406 feedback 統合)** | todo23.md | S | なし (2026-08-15 採用。#403/#405 で 3 箇所を手で揃えた。片方漏れで保護が静かに緩み、#403 では実際に抽出で実体が保護外へ出かけた) |
| 455 | 🚀 Tier 1 | **一時ファイルの弱い一意性を検知する lint (#400-#406 feedback 統合)** | todo23.md | S | なし (2026-08-15 採用。#405 で production/test の両方で踏んだ。1 つ直した直後に同型を別箇所で作っており人手の注意では止まらない。regex 層の限界を先に見積もる) |
| 456 | 🚀 Tier 1 | **workflow の guard なし `git commit` を検知する (#400-#406 feedback 統合)** | todo23.md | S | なし (2026-08-15 採用。#406 で Critical を 2 度。レビューが無ければ夜間ループが停止していた) |
| 457 | 🔧 Tier 2 | **lint rule の宣言拡張子が test_coverage で網羅されているか検査 (#400-#406 feedback 統合)** | todo23.md | S | なし (2026-08-15 採用。#402 の孤児 fixture 検査と対になる、もう 1 つの非対称。例外 allowlist の要否を着手時に決める) |
| 458 | 🔧 Tier 2 | **`cli-ledger-cleanup` の統合テスト suite (提案 10 件を統合)** | todo23.md | M | なし (2026-08-15 採用。手動実測した安全側 3 ケースの自動化が起点。削除は取り返しがつかないため安全側こそ回り続ける必要がある) |
| 459 | 🔧 Tier 2 | **weekly-review 周辺の決定論層テスト (提案 4 件を統合)** | todo23.md | S-M | なし (2026-08-15 採用。scan 失敗テストは検証対象が未確定 = shell のままか exe 化か。順位 448 と同じ構図) |
| 460 | 💎 Tier 3 | **外部入力の信頼境界と fail-closed の徒定形を ADR 化 (提案 3 件を統合)** | todo23.md | S | なし (2026-08-15 採用。本チェーンの Critical 2 件の根本にある原則。ADR-043 の具体化として位置づける) |
Expand Down
Loading
Loading