diff --git a/docs/bugfix-batch-plan.md b/docs/bugfix-batch-plan.md index ad1467f..bb67bb0 100644 --- a/docs/bugfix-batch-plan.md +++ b/docs/bugfix-batch-plan.md @@ -22,10 +22,10 @@ | F | fix(pr-monitor): cli-pr-monitor 小修正束 | 246 + 292 + 385 | **完了** ([PR #430](https://github.com/aloekun/claude-code-hook-test/pull/430))。246 は前提消滅 + 連結 regression test、292 は token 方式 + **takeover 排他化** (レビューで 8/8 同時取得を実測)、385 は不採用を記録 | | G | fix(jj-helpers): bookmark 探索の深さ非依存化 + 自動 fix 後始末 | 386 + 387 | **完了** ([PR #431](https://github.com/aloekun/claude-code-hook-test/pull/431))。386 は実測を根拠に検出の深さ非依存化 + advance の description 基準化の両輪。387 は**警告 (証拠保全)** を採用 | | H | fix(push-runner): push 経路 stage 修正束 | 376 + 254 + 322 | **完了** ([PR #432](https://github.com/aloekun/claude-code-hook-test/pull/432))。 3 件とも台帳と実態のずれなし。376 は案 (a) (@ の bookmark のみ前進)、254 は実装側で remote tracking ref を優先解決、322 は配置ベース検出を第 2 層に追加 (`__*` パターンが gitignore で**デッド**だったことも実測で判明) | -| I | fix(push-runner): bookmark_check の未レビュー祖先 fail-closed | 288(b) | 未着手 | -| J | fix(pr-monitor): post-pr-review の docs-only 判定を PR 全体基準に | 233 | 未着手 | -| K | fix(subprocess): timeout の孫プロセス穴を塞ぐ | 323 | 未着手 | -| L | fix(automation): 自動化経路の小穴・ノイズ修正束 | 467 + 181 | 未着手 | +| I | fix(push-runner): bookmark_check の未レビュー祖先 fail-closed | 288(b) | **完了** ([PR #434](https://github.com/aloekun/claude-code-hook-test/pull/434))。**台帳の (b) は (a) 側で既に閉じていた** (`{{PR_RANGE}}` 必須化 + 範囲カバレッジ検査)。実在した穴は `jj bookmark list` 失敗時の fail-open で、そちらを fail-closed 化した | +| J | fix(pr-monitor): post-pr-review の docs-only 判定を PR 全体基準に | 233 | **完了** ([PR #435](https://github.com/aloekun/claude-code-hook-test/pull/435))。台帳の推定 (`[diff]` stage) は PR #311 で解消済みで、真因は `fix.md` の tip 限定 refresh と `review-diff.txt` の残骸だった。判定を決定論層へ引き上げた。CodeRabbit Major で `gh pr view --json files` の 100 件無言切り捨てが判明し、件数一致検査を追加 | +| K | fix(subprocess): timeout の孫プロセス穴を塞ぐ | 323 | **完了** ([PR #436](https://github.com/aloekun/claude-code-hook-test/pull/436))。**台帳どおり** (3 variant とも timeout 1s に対し 9.59s)。tree-kill + join 上限で解決。調査中に `drain_pipe_unlimited` の非 UTF-8 全損も判明し同梱。**テスト自身の空振りを 2 度踏み**、いずれも変異テストで発覚した | +| L | fix(automation): 自動化経路の小穴・ノイズ修正束 | 467 + 181 | **完了** ([PR #437](https://github.com/aloekun/claude-code-hook-test/pull/437))。**D-1 の台帳前提は誤り** — フル ref 名では exit 0 で、真の破綻は cwd がリポジトリでないこと (exit 128) だった。掃除経路は過去 40 run で一度も実行されていなかった。lease による compare-and-delete も追加 | **挿入 (2026-08-20、完了)**: 順位 431 の調査で `markers.rs` の rate-limit marker が CodeRabbit の **command ack 形式**を拾わないことが判明した (PR #412 / #387 の実データ)。検出層の穴なので PR F を保留し、先に [PR #429](https://github.com/aloekun/claude-code-hook-test/pull/429) として処理した (ユーザー判断)。**台帳の前提が変わった項目に着手したら、周辺への影響まで確認する** — 本計画の 9 件中 7 件でずれが出ている以上、ずれの周辺は常に疑う。この 1 件は「前提が変わった理由を追ったら別の穴が見えた」形だった。 @@ -401,8 +401,8 @@ post-merge feedback **全 48 提案**を採否判定した。内訳は **採用 - [x] **319** (PR E): 観測完了 (2026-08-20)。PR #429 / #430 / #431 の 3 件で backstop 投稿は各 1 件 (`` マーカーで機械的に計数)。エントリ後始末済み。 - [ ] **431** (PR E): 次にレート制限が起きた夜間 run で「未レビュー」が可視化されること → 確認後 todo22.md 431 節 (`review-request` の成功判定…) + todo-summary2.md 431 行を削除 -- [ ] **467 D-1 / F-2** (PR L): 次回 dispatch or schedule 実走で、消えたブランチで job が落ちないこと + GIT_DIR 警告が出ないこと → 確認後 todo24.md 467 節 + todo-summary2.md 467 行を削除 -- [ ] **181** (PR L): 次回 `/weekly-review` で findings.json が raw JSON で出力されること → 確認後 todo12.md 181 節 + **todo-summary.md** (順位 219 以下側) の 181 行を削除。矯正できなければ skill 側 strip へ切替してから完了 +- [ ] **467** (PR L): **F-2 は観測完了** (2026-08-22)。実 run の前後比較で `GIT_DIR 導出失敗` が 1 件 → 0 件 (2026-08-20 の run 32401510711 vs 2026-08-21 の run 32511788731)。**D-1 が未観測** — 掃除対象が 1 件以上ある run が過去 40 回で 0 件だったため。PR #422 のマージで `claude/nightly-228` が対象になり条件は整った (`cli-stale-branch-scan --deletable-only` で列挙されることを確認済み) ので、次の定時 run で発火する見込み。**D-1 の観測後**に todo24.md 467 節 + todo-summary2.md 467 行を削除 +- [x] **181** (PR L): 観測完了 (2026-08-22)。`/weekly-review` 実走で findings.json が raw JSON (先頭 `{` / 末尾 `}` / fence 行 0) で出力され、`JSON.parse` が手動 strip なしで成功した。**修正前は 3 run すべて fence 付き** (2026-08-15 / 08-17 / 08-17-rerun) だったので、instruction 修正だけで矯正できたと言える (skill 側 strip への切替は不要)。エントリ後始末済み ## 本計画書の退役手順 diff --git a/docs/todo-summary.md b/docs/todo-summary.md index a6ea519..1082918 100644 --- a/docs/todo-summary.md +++ b/docs/todo-summary.md @@ -2,7 +2,7 @@ > **本ファイルの位置付け**: `docs/todo.md` から「推奨実行順序サマリー」section を切り出した index 専用ファイル。各タスクの詳細は「ファイル」列に示された `docs/todoN.md` を参照する。`docs/todo.md` のサイズが 50KB を超え Claude Code 読み取り安定性に影響したため分離 (2026-05-09)。 > -> **更新方針**: table への新規行追加・既存行の削除は本 index (todo-summary.md + [docs/todo-summary2.md](todo-summary2.md)) で実施する (2026-07-20 に順位 220 以降を todo-summary2.md へ物理分割、docs 50KB 超過解消。新規行は末尾 = todo-summary2.md 側に追加)。**順位は追記型の ID であり、再採番はしない** — 新規行には既存の最大 + 1 を付け、欠番は埋めない。優先度は `Tier` 列が表すため、行の並び (= 登録順) を優先度順と読まないこと ([ADR-033](adr/adr-033-todo-numbering-simplification.md) § 改訂 2026-08-16)。詳細エントリは現行の追加先ファイル (= **`docs/todo24.md`**、2026-08-16 新設。直前の追加先 `docs/todo23.md` が 52690B = 50KB 安定読み取り閾値超過に達したため移行) に記録する。追加先は 50KB 到達のたびに移っており、`docs/todo13.md` → `todo14.md` (2026-07-19、WR-2026-07-19-T02) → `todo20.md` → `todo21.md` (2026-08-08) → `todo22.md` (2026-08-11) → `todo23.md` (2026-08-13) → `todo24.md` (2026-08-16) と辿ってきた。**現在の追加先は [docs/todo.md](todo.md) の preamble が持つ routing 表が正であり、本行はその写しである** — 移行時は両方を更新すること。**移行済みの旧ファイルは既存エントリの編集・完了削除専用**で、新規追加先ではない。なお `docs/todo10.md` は 2026-06-29 PR #224 セッションで todo13.md へ追加先が移行するまでの旧追加先 (以降 既存エントリの編集・完了削除専用)、`docs/todo11.md` は 2026-06-06 todo9.md 分割で新設された専用ファイル (順位 157, 160-173 を収容)、`docs/todo12.md` は 2026-06-12 PR #204 で todo10.md 分割により新設された専用ファイル (順位 176/178/179/180/181/182/193/194 = PR #185 〜 PR #196 era を収容) で、いずれも新規追加先ではない。 +> **更新方針**: table への新規行追加・既存行の削除は本 index (todo-summary.md + [docs/todo-summary2.md](todo-summary2.md)) で実施する (2026-07-20 に順位 220 以降を todo-summary2.md へ物理分割、docs 50KB 超過解消。新規行は末尾 = todo-summary2.md 側に追加)。**順位は追記型の ID であり、再採番はしない** — 新規行には既存の最大 + 1 を付け、欠番は埋めない。優先度は `Tier` 列が表すため、行の並び (= 登録順) を優先度順と読まないこと ([ADR-033](adr/adr-033-todo-numbering-simplification.md) § 改訂 2026-08-16)。詳細エントリは現行の追加先ファイル (= **`docs/todo25.md`**、2026-08-22 新設。直前の追加先 `docs/todo24.md` が 50869B = 50KB 安定読み取り閾値まで残り 331B に達したため移行) に記録する。追加先は 50KB 到達のたびに移っており、`docs/todo13.md` → `todo14.md` (2026-07-19、WR-2026-07-19-T02) → `todo20.md` → `todo21.md` (2026-08-08) → `todo22.md` (2026-08-11) → `todo23.md` (2026-08-13) → `todo24.md` (2026-08-16) → `todo25.md` (2026-08-22) と辿ってきた。**現在の追加先は [docs/todo.md](todo.md) の preamble が持つ routing 表が正であり、本行はその写しである** — 移行時は両方を更新すること。**移行済みの旧ファイルは既存エントリの編集・完了削除専用**で、新規追加先ではない。なお `docs/todo10.md` は 2026-06-29 PR #224 セッションで todo13.md へ追加先が移行するまでの旧追加先 (以降 既存エントリの編集・完了削除専用)、`docs/todo11.md` は 2026-06-06 todo9.md 分割で新設された専用ファイル (順位 157, 160-173 を収容)、`docs/todo12.md` は 2026-06-12 PR #204 で todo10.md 分割により新設された専用ファイル (順位 176/178/179/180/181/182/193/194 = PR #185 〜 PR #196 era を収容) で、いずれも新規追加先ではない。 @@ -64,7 +64,6 @@ | 178 | 🔧 Tier 2 | **`state.rs` の behavioral invariant test を ADR-041 pattern で追加 (週次レビュー 2026-05-30 S02 採用)** | todo12.md | S | なし (Phase D dogfood で発見、`src/cli-pr-monitor/src/state.rs:226-510` の test が JSON round-trip のみ、`rate_limit=Some` 時 CI 更新 skip 等の behavioral invariant 未検証、ADR-041 sentinel 事前投入 + mutation 不在 assert pattern で 3-5 test 追加、memory `feedback_test_dry_antipattern` 適用、Effort S で high value catches state regression) | | 179 | 🔧 Tier 2 | **rate-limit retry decision boundary test を rstest parameterized で追加 (週次レビュー 2026-05-30 S03 採用)** | todo12.md | S | なし (Phase D dogfood で発見、`src/cli-pr-monitor/src/config.rs:94-122` + `stages/poll.rs` の `max_retries=3` 固定 test のみで boundary (0/1/3/off-by-one) 未検証、rstest parameterized で 3-4 case 追加 ~15 行、rstest 既存使用 + Bundle CR-RL = 順位 167-169 隣接領域 follow-up、off-by-one regression が test で検出可能化) | | 180 | 🔧 Tier 2 | **`lib-report-formatter` に markdown pipe / newline escape を追加 (週次レビュー 2026-05-30 C01 採用)** | todo12.md | S | なし (Phase D dogfood で発見、`src/lib-report-formatter/src/lib.rs:51-79` の `format_table()` が PR title / commit message の `|` / `\n`を escape せず markdown table 構造を破壊 → downstream AI facet で prompt injection リスク、`escape_markdown_pipe()` 5 行 utility + call site escape + 5 variant test で defense-in-depth 確立、本セッション 5 PR chain で AI facet 連鎖が systemic 化したため継続価値高) | -| 181 | 🔧 Tier 2 | **`aggregate-weekly` facet の `findings.json` 出力を raw JSON にする (Phase D dogfood D-A 採用)** | todo12.md | XS-S | なし (本セッション 2026-05-30 Phase D dogfood で実観測した facet 出力 bug、`aggregate-weekly.md` instruction が「raw JSON 出力必須、markdown code fence で囲まない」を明示せず facet LLM が `\`\`\`json...\`\`\` ` で wrap してしまう、skill 側の手動 fence strip workaround を不要化、修正後の次 `/weekly-review` で raw JSON 出力を dogfood 観測、Phase E 試験運用前の整備) | | 182 | 🔧 Tier 2 | **`/weekly-review` skill に重複検出 (簡易 grep) を Phase 4 で追加 (Phase D dogfood D-B 採用)** | todo12.md | XS-S | なし (本セッション 2026-05-30 Phase D dogfood で WR-2026-05-30-S05 と既存 順位 173 が完全重複していた実観測、ADR-031 § Phase 4 「重複検出は MVP では実装しない」を「MVP+1 (簡易 grep + 3 択 AskUserQuestion: augment/新規/skip)」相当に格上げ、自動 merge なし原則は維持、description 先頭 40 chars の grep ヒット警告 → user 判断、`feedback_global_config_backup` 適用必須 (~/.claude/skills/ 編集前 snapshot)) | | 193 | 🔧 Tier 2 | **Companion helper group 署名整合 compile-time validation test (PR #196 T2-1 採用) ★ Bundle 195-FB follow-up** | todo12.md | S | なし (Bundle 195-FB で 3 関数目の signature drift が CR Major + pre-push F-1 で systemic 観測、rule⑫ は literal hardcode 層、本タスクは API signature 整合性層、関数ポインタ cast による compile-time witness で signature drift を test 不通過に。`code-review.md` § Review Checklist に reviewer 注意 1 項目追加で 3 層防御 = rule⑫ + compile-time test + reviewer 注意、`feedback_global_config_backup` 適用必須) | | 194 | 💎 Tier 3 | **`development-workflow.md` 「1. Plan First」に「task 着手前に grep で既存 section 確認」step 追記 (PR #196 T3-5 採用)** | todo12.md | XS | なし (PR #123 + #196 で「既実装 section の重複計画」事象を Frequency Medium で観測、`~/.claude/rules/common/development-workflow.md` "1. Plan First" に Codification 重複確認 step を 1-2 行追記、`grep -rn` 手順 + 由来 cite (PR #123, #196)、派生プロジェクト (techbook-ledger / auto-review-fix-vc) に global rule として自動波及、`feedback_global_config_backup` 適用必須) | diff --git a/docs/todo.md b/docs/todo.md index 024b65a..7553b8a 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -2,7 +2,7 @@ > **運用ルール**: 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 > -> **本ファイル + [docs/todo3.md](todo3.md) 〜 [docs/todo24.md](todo24.md) + [docs/todo-summary.md](todo-summary.md) + [docs/todo-summary2.md](todo-summary2.md) の使い分け** (todo2.md は 2026-08-12 退役) (PR #83 T3-2 で恒久化、2026-04-28 強化、PR #88 で todo3.md 追加、PR #96 セッションで todo4.md 追加、PR #101 セッションで todo5.md 追加、PR #123 セッションで todo6.md 追加、2026-05-09 に todo-summary.md 切り出し + todo5.md 分割で todo7.md 追加、PR #143 = 2026-05-11 で todo8.md 追加、PR #172 仕組み化方針切替 = 2026-05-25 で todo9.md 追加、PR #185 land 後 2026-05-29 で todo10.md 追加、2026-06-06 todo9.md 分割で todo11.md 追加、2026-06-12 PR #204 で todo10.md 分割により todo12.md 追加、2026-06-29 PR #224 セッションで todo13.md 追加、2026-07-19 週次レビュー WR-2026-07-19-T02 採用で todo14.md 追加、2026-07-20 docs 50KB 超過解消で todo13.md を todo15/16/17・todo10.md を todo18/19 へ物理分割、2026-08-04 todo14.md の 50KB 超過で todo20.md 追加、2026-08-08 todo20.md の 50KB 超過で todo21.md 追加、2026-08-11 todo21.md の 50KB 超過で todo22.md 追加、2026-08-13 todo22.md の 50KB 超過で todo23.md 追加、2026-08-16 todo23.md の 50KB 超過で todo24.md 追加): +> **本ファイル + [docs/todo3.md](todo3.md) 〜 [docs/todo25.md](todo25.md) + [docs/todo-summary.md](todo-summary.md) + [docs/todo-summary2.md](todo-summary2.md) の使い分け** (todo2.md は 2026-08-12 退役) (PR #83 T3-2 で恒久化、2026-04-28 強化、PR #88 で todo3.md 追加、PR #96 セッションで todo4.md 追加、PR #101 セッションで todo5.md 追加、PR #123 セッションで todo6.md 追加、2026-05-09 に todo-summary.md 切り出し + todo5.md 分割で todo7.md 追加、PR #143 = 2026-05-11 で todo8.md 追加、PR #172 仕組み化方針切替 = 2026-05-25 で todo9.md 追加、PR #185 land 後 2026-05-29 で todo10.md 追加、2026-06-06 todo9.md 分割で todo11.md 追加、2026-06-12 PR #204 で todo10.md 分割により todo12.md 追加、2026-06-29 PR #224 セッションで todo13.md 追加、2026-07-19 週次レビュー WR-2026-07-19-T02 採用で todo14.md 追加、2026-07-20 docs 50KB 超過解消で todo13.md を todo15/16/17・todo10.md を todo18/19 へ物理分割、2026-08-04 todo14.md の 50KB 超過で todo20.md 追加、2026-08-08 todo20.md の 50KB 超過で todo21.md 追加、2026-08-11 todo21.md の 50KB 超過で todo22.md 追加、2026-08-13 todo22.md の 50KB 超過で todo23.md 追加、2026-08-16 todo23.md の 50KB 超過で todo24.md 追加): > > - **docs/todo-summary.md**: 推奨実行順序サマリー table 専用 (旧 todo.md から切り出し)、順位 6-219 を収容。既存行編集・順位再採番はここで行う。 > - **docs/todo-summary2.md**: todo-summary.md の table を 2026-07-20 に docs 50KB 超過解消で分割した後半 (順位 220 以降を収容)。新規行追加は末尾 = 本ファイルで行う。cli-docs-lint の priority-inversion / preamble は両 summary を統合検査。 @@ -29,9 +29,10 @@ > - **docs/todo21.md**: 既存タスクの編集・完了削除専用。**新規タスクは追加しない** (約57KB に到達したため、2026-08-11 以降の新規エントリは todo22.md へ。2026-08-08 todo20.md の 50KB 超過で新設、順位 385 以降を収容) > - **docs/todo22.md**: 既存タスクの編集・完了削除専用。**新規タスクは追加しない** (約 66KB に到達したため、2026-08-13 以降の新規エントリは todo23.md へ。2026-08-11 todo21.md の 50KB 超過で新設) > - **docs/todo23.md**: 既存タスクの編集・完了削除専用。**新規タスクは追加しない** (52690B に到達したため、2026-08-16 以降の新規エントリは todo24.md へ。2026-08-13 todo22.md の 50KB 超過で新設、週次レビュー WR-2026-08-13-M01 採用) -> - **docs/todo24.md**: 新規タスクの追加先。50KB に到達するまでは本ファイルへ追加 (2026-08-16 todo23.md の 50KB 超過で新設) -> - 例外: 既存 todo.md / todo3.md 〜 todo24.md タスクと **同一ファイル / 同一コンポーネント** を編集する密結合タスクは該当ファイルに追加可 (例: `~/.claude/rules/common/git-workflow.md` 配下のグローバルルール群) -> - **新セッションでは全 todo ファイルを確認すること** (todo.md / todo3-24.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役) +> - **docs/todo24.md**: 既存タスクの編集・完了削除専用。**新規タスクは追加しない** (50869B = 閾値まで残り 331B に到達したため、2026-08-22 以降の新規エントリは todo25.md へ。2026-08-16 todo23.md の 50KB 超過で新設) +> - **docs/todo25.md**: 新規タスクの追加先。50KB に到達するまでは本ファイルへ追加 (2026-08-22 todo24.md の閾値接近で新設、週次レビュー 2026-08-22 実行セッションで検出) +> - 例外: 既存 todo.md / todo3.md 〜 todo25.md タスクと **同一ファイル / 同一コンポーネント** を編集する密結合タスクは該当ファイルに追加可 (例: `~/.claude/rules/common/git-workflow.md` 配下のグローバルルール群) +> - **新セッションでは全 todo ファイルを確認すること** (todo.md / todo3-25.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役) --- diff --git a/docs/todo10.md b/docs/todo10.md index 6d1705e..51f6425 100644 --- a/docs/todo10.md +++ b/docs/todo10.md @@ -2,7 +2,7 @@ > **運用ルール** ([docs/todo.md](todo.md) と同一): 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 > -> **本ファイルの位置付け**: docs/todo9.md がファイルサイズ 50KB を超え行数 1100+ 行に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して新規エントリは本ファイルに記録する (PR #185 = Bundle CR-RL land 後、2026-05-29 ユーザー判断)。**本ファイルは既存タスクの編集・完了削除専用** (新規エントリの追加先は PR #224 セッション = 2026-06-29 で [docs/todo13.md](todo13.md) へ移行し、その後 todo14.md → todo20.md → todo21.md を経て、**現在は [docs/todo24.md](todo24.md)** (2026-08-16 に todo23.md が 50KB 超過で移行)。2026-06-12 PR #204 で PR #185 〜 PR #196 era の 8 エントリを [docs/todo12.md](todo12.md) に分離して file_size_check 50KB threshold 内に収めた、todo12.md は新規追加先ではない)。todo.md / todo3.md 〜 todo9.md / todo11.md / todo12.md の既存エントリ (todo2.md は 2026-08-12 退役)は引き続き有効、相互に独立。**2026-07-20 に順位 215-224 を todo18.md/todo19.md へ物理分割し、本ファイルは順位 198-214 のみ収容 (docs 50KB 超過解消、39KB 台に縮小)。**新セッションでは25つすべてを確認すること (todo.md / todo3-24.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 +> **本ファイルの位置付け**: docs/todo9.md がファイルサイズ 50KB を超え行数 1100+ 行に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して新規エントリは本ファイルに記録する (PR #185 = Bundle CR-RL land 後、2026-05-29 ユーザー判断)。**本ファイルは既存タスクの編集・完了削除専用** (新規エントリの追加先は PR #224 セッション = 2026-06-29 で [docs/todo13.md](todo13.md) へ移行し、その後 todo14.md → todo20.md → todo21.md → todo24.md を経て、**現在は [docs/todo25.md](todo25.md)** (2026-08-22 に todo24.md が 50KB 超過で移行)。2026-06-12 PR #204 で PR #185 〜 PR #196 era の 8 エントリを [docs/todo12.md](todo12.md) に分離して file_size_check 50KB threshold 内に収めた、todo12.md は新規追加先ではない)。todo.md / todo3.md 〜 todo9.md / todo11.md / todo12.md の既存エントリ (todo2.md は 2026-08-12 退役)は引き続き有効、相互に独立。**2026-07-20 に順位 215-224 を todo18.md/todo19.md へ物理分割し、本ファイルは順位 198-214 のみ収容 (docs 50KB 超過解消、39KB 台に縮小)。**新セッションでは26つすべてを確認すること (todo.md / todo3-25.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 > > **推奨実行順序**: 全タスク横断のサマリーは [docs/todo-summary.md](todo-summary.md#recommended-order-summary) を参照。 diff --git a/docs/todo11.md b/docs/todo11.md index 2883cd9..575903c 100644 --- a/docs/todo11.md +++ b/docs/todo11.md @@ -2,7 +2,7 @@ > **運用ルール** ([docs/todo.md](todo.md) と同一): 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 > -> **本ファイルの位置付け**: docs/todo9.md がファイルサイズ 75KB 超 (890 行) に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して、PR-specific follow-up entries (PR #174 以降の post-merge-feedback 採用 entry) を本ファイルに分離 (2026-06-06)。todo9.md には「既存ルール仕組み化バンドル + 週次レビュー拡張」themed entries が残る。todo.md / todo3.md 〜 todo10.md の既存エントリ (todo2.md は 2026-08-12 退役)は引き続き有効、相互に独立。新セッションでは25つすべてを確認すること (todo.md / todo3-24.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 +> **本ファイルの位置付け**: docs/todo9.md がファイルサイズ 75KB 超 (890 行) に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して、PR-specific follow-up entries (PR #174 以降の post-merge-feedback 採用 entry) を本ファイルに分離 (2026-06-06)。todo9.md には「既存ルール仕組み化バンドル + 週次レビュー拡張」themed entries が残る。todo.md / todo3.md 〜 todo10.md の既存エントリ (todo2.md は 2026-08-12 退役)は引き続き有効、相互に独立。新セッションでは26つすべてを確認すること (todo.md / todo3-25.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 > > **推奨実行順序**: 全タスク横断のサマリーは [docs/todo-summary.md](todo-summary.md#recommended-order-summary) を参照。 diff --git a/docs/todo12.md b/docs/todo12.md index e1d7f5c..6300973 100644 --- a/docs/todo12.md +++ b/docs/todo12.md @@ -206,42 +206,6 @@ regex 拡張アプローチ (#1) vs fixture のみ追加 (#2) の選択。本タ --- -### `aggregate-weekly` facet の `findings.json` 出力を raw JSON にする (Phase D dogfood D-A 採用) - -> **動機**: Phase D dogfood (週次レビュー 2026-05-30 実行) で検出した skill 統合 bug。`aggregate-weekly` facet が write する `findings.json` が ` ```json ... ``` ` の markdown code fence で wrap されており、Phase C skill (`/weekly-review`) が JSON parser に直接渡せない。本 dogfood では skill 内で fence を手動 strip して pending JSON を構築したが、**facet 出力を raw JSON にすれば skill 側の workaround が不要**になる。 -> -> **本タスクの位置づけ**: Phase D dogfood (本セッション 2026-05-30 実施) の skill flow 実観測で発見、本 PR の dogfood 観測点 (D-A) として user 承認 (2026-05-30)。週次レビュー (ADR-031) facet 出力の整合性確保。 -> -> **参照**: `.takt/facets/instructions/aggregate-weekly.md` (修正対象)、`.takt/runs/20260529-150611-weekly-review-2026-05-30/reports/findings.json` (Phase D dogfood で実観測した fence 付き出力)、`~/.claude/skills/weekly-review/SKILL.md` Phase 2 (現 skill が手動 fence strip した workaround) - -#### 設計決定 (案) - -- **`aggregate-weekly.md` の output 指示を明確化**: - - 現状: instruction が「JSON は ... `findings.json` というファイル名で write する」と書いてあるが、facet LLM が markdown 出力癖 (` ```json...``` ` 自動 wrap) で fence 付きで write してしまう - - 修正: instruction で「**raw JSON のみ** (markdown code fence なし) で write する。先頭は `{` で始まり、末尾は `}` で終わる必要がある」を明示 - - test 文言例: `{"run_date": "...", ...}` から始まる、` ```json` で始まらない、を強調 -- **alternative**: skill 側で fence 検出 + strip を実装する (但し source-of-truth が facet 側であるべき) - -#### 作業計画 - -- [ ] `.takt/facets/instructions/aggregate-weekly.md` の `## Phase 3` (= JSON 生成 section) に「**raw JSON 出力必須、markdown code fence で囲まない**」warning を追加 -- [ ] JSON 出力例の前後 context を Edit で明確化 -- [ ] dogfood: 修正後に次の `/weekly-review` 実行で `findings.json` が raw JSON で出力されることを実観測 (Phase E で確認) -- [ ] (option) Phase C skill SKILL.md にも「fence wrap された場合の defensive strip 手順」を補足追記 (= belt-and-suspenders) -- [ ] markdownlint clean -- [ ] 本エントリ削除 + todo-summary.md 行削除 - -#### 完了基準 - -- `aggregate-weekly.md` instruction で raw JSON 出力要件が明示される -- 次回 `/weekly-review` 実行で `findings.json` が raw JSON (= ` ```` ` で wrap されない) で出力される dogfood 観測 - -#### 詰まっている箇所 - -facet 側の文言修正のみで facet LLM の出力 habit を矯正できるかは未確定。修正後の dogfood 結果次第で alternative (= skill 側 strip) に切り替える判断あり。Effort XS-S。 - ---- - ### `/weekly-review` skill に重複検出 (簡易 grep) を Phase 4 で追加 (Phase D dogfood D-B 採用) > **動機**: Phase D dogfood (週次レビュー 2026-05-30 実行) で **WR-2026-05-30-S05 (`combine_output` dead-code) が既存 順位 173 (PR #182 dry-run S01 採用) と完全重複**であることを実観測。ADR-031 § Phase 4 で「**重複検出は MVP では実装しない**」と明示済だが、本 dogfood で「2 PR で同じ finding が出る」を実証したため、最低限の grep ベース簡易検出を後追い追加する妥当性が確立。MVP は description 先頭 40 chars の grep ヒットを警告表示するのみで、自動 merge は行わない (user 判断に委ねる ADR-031 原則維持)。 diff --git a/docs/todo24.md b/docs/todo24.md index 57ae03d..bab9bd7 100644 --- a/docs/todo24.md +++ b/docs/todo24.md @@ -2,7 +2,7 @@ > **運用ルール** ([docs/todo.md](todo.md) と同一): 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 > -> **本ファイルの位置付け**: docs/todo23.md がファイルサイズ 52690 B (2026-08-16 時点、50KB = 51200 B の安定読み取り閾値超過) に到達したため、新規エントリは本ファイルに記録する (2026-08-16 新設、週次レビュー 2026-08-15 実行セッションで検出)。**新規エントリの追加先は本ファイル**。todo.md / todo3.md 〜 todo23.md の既存エントリは引き続き有効、相互に独立。 +> **本ファイルの位置付け**: docs/todo23.md がファイルサイズ 52690 B (2026-08-16 時点、50KB = 51200 B の安定読み取り閾値超過) に到達したため、新規エントリは本ファイルに記録していた (2026-08-16 新設、週次レビュー 2026-08-15 実行セッションで検出)。**本ファイルは既存タスクの編集・完了削除専用。新規エントリの追加先は [docs/todo25.md](todo25.md)** (50869B = 閾値まで残り331Bに到達したため、2026-08-22 以降移行)。todo.md / todo3.md 〜 todo23.md の既存エントリは引き続き有効、相互に独立。 > > **サイズ表記について**: 各記載は**その時点の計測値**であり、現在値と一致しないことがある。現在値が必要なら計測すること。 > diff --git a/docs/todo25.md b/docs/todo25.md new file mode 100644 index 0000000..d07947f --- /dev/null +++ b/docs/todo25.md @@ -0,0 +1,156 @@ +# TODO (Part 25) + +> **運用ルール** ([docs/todo.md](todo.md) と同一): 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 +> +> **本ファイルの位置付け**: docs/todo24.md がファイルサイズ 50869 B (2026-08-22 時点、50KB = 51200 B の安定読み取り閾値まで残り 331 B) に到達したため、新規エントリは本ファイルに記録する (2026-08-22 新設、週次レビュー 2026-08-22 実行セッションで検出)。**新規エントリの追加先は本ファイル**。todo.md / todo3.md 〜 todo24.md の既存エントリは引き続き有効、相互に独立。 +> +> **サイズ表記について**: 各記載は**その時点の計測値**であり、現在値と一致しないことがある。現在値が必要なら計測すること。 +> +> **推奨実行順序**: 全タスク横断のサマリーは [docs/todo-summary.md](todo-summary.md#recommended-order-summary) を参照。 + +--- + +## 週次レビュー採用 (2026-08-22) + +### jj の working copy materialize による mtime リセットで「最近 fetch した」「書き込み中」判定が壊れる + +> **動機**: `fetch_head_is_recent()` が `.git/FETCH_HEAD` の mtime を「最後に fetch した時刻」として扱っているが、jj が working copy を materialize する際 (`jj new` 等) に全ファイルの mtime が checkout 時刻へ書き換わる。同じ根因で `holder_still_writing()` が空ロックファイルの「書き込み中」判定に mtime を使っており、プロセスクラッシュ後に残った古い空ロックファイルが「たった今作成された」と誤認される。 +> +> **本タスクの位置づけ**: 週次レビュー WR-2026-08-22-J01 / WR-2026-08-22-J02 で採用 (severity=high, facet=jj-robustness, category=jj-mtime-staleness)。**2 件は同一の根因クラス**なので 1 タスクとして扱う。 +> +> **参照**: `.claude/weekly-reviews/2026-08-22.md`、`src/hooks-session-start/src/jj_helpers.rs` (`fetch_head_is_recent`)、`src/cli-pr-monitor/src/lock.rs` (`holder_still_writing`) + +#### 背景 + +どちらも「ファイルの mtime = そのファイルに対する最後の意味ある操作の時刻」を前提にしている。jj はこの前提を破る — working copy を materialize するとき、内容が変わっていないファイルも含めて mtime が更新されうる。ADR-021 (jj 変更検出ロジックの設計原則) が「commit_id 単独比較の限界」を扱っているのと同じ系統の問題で、**mtime を状態の代理として使うこと自体**が jj 環境では成立しない。 + +#### 設計決定 (案) + +- `fetch_head_is_recent()`: mtime ではなく fetch 実行側が残す明示的な記録 (タイムスタンプファイル / state JSON) を真実源にする。あるいは `jj git fetch` の実行そのものを記録する +- `holder_still_writing()`: 空ロックファイルの「書き込み中」判定を mtime から切り離す。lock 取得側が PID や開始時刻を**内容として**書き、空ファイル = 未完了と扱う (現状は空ファイルを Held 扱いにする設計が memory `verify-concurrency-by-observation` にある — その方針と整合させる) +- **どちらも実測で確かめる**: jj の materialize が実際に mtime を書き換えることを観測してから直す (推論で直すと、直っていないことに気づけない) + +- [ ] jj materialize による mtime 書き換えを実測で再現する +- [ ] `fetch_head_is_recent()` を mtime 非依存にする +- [ ] `holder_still_writing()` を mtime 非依存にする +- [ ] 両方に回帰テスト (mtime を人為的に巻き戻しても判定が変わらないこと) + +#### 完了基準 + +mtime を書き換えても両判定の結果が変わらないこと。変異テストで、mtime 依存へ戻すとテストが落ちること。 + +--- + +### ADR-032 の「永久欠番」決定が CLAUDE.md の ADR index へ未反映 + +> **動機**: ADR-032 は 2026-08-12 に「docs-only fast-path として reserved」と判定され、実装は別設計の ADR-057 が実現した。todo.md では「永久欠番として扱う」と決定済みだが、CLAUDE.md の ADR index 等へ未反映で、決定と実態が乖離している。 +> +> **本タスクの位置づけ**: 週次レビュー WR-2026-08-22-A01 で採用 (severity=high, facet=architecture, category=adr-alignment)。 +> +> **参照**: `.claude/weekly-reviews/2026-08-22.md`、`CLAUDE.md` (ADR index) + +#### 背景 + +CLAUDE.md の ADR index は ADR-001 から ADR-074 まで連番で並ぶが、ADR-032 の行が無いまま番号だけが飛んでいる。読み手には「抜けている」のか「意図的な欠番」なのか判別できず、新規 ADR を起こす人が 032 を再利用しかねない。 + +#### 設計決定 (案) + +CLAUDE.md の ADR index に ADR-032 の行を **欠番として明示**して戻す (例: `ADR-032: (永久欠番 — docs-only fast-path は ADR-057 が別設計で実現)`)。番号の再利用を防ぐのが目的なので、リンク先の実ファイルは作らない。 + +- [ ] CLAUDE.md の ADR index に欠番行を追加 +- [ ] 他に ADR-032 を参照している箇所が無いか確認 (`grep -rn "ADR-032"`) + +#### 完了基準 + +ADR index を通読して 032 が意図的欠番と分かること。番号の再利用が起きない。 + +--- + +### lib-* crate の責務分類基準が ADR-012 に無い + +> **動機**: 現行の `lib-*` crate は shared utility / jj helper / domain logic / state management / external integration の 5 種の責務に分散しているが、ADR-012 (src/ ディレクトリの命名規約) には新規 crate がどのカテゴリに属するかの判定基準が無い。新しい lib-* を足すときに置き場所の判断が属人的になる。 +> +> **本タスクの位置づけ**: 週次レビュー WR-2026-08-22-A04 で採用 (severity=medium, facet=architecture, category=module-boundary)。 +> +> **参照**: `.claude/weekly-reviews/2026-08-22.md`、`src/lib-*/Cargo.toml`、[ADR-012](adr/adr-012-src-naming-convention.md) + +#### 背景 + +直近だけでも順位 323 で `lib-subprocess`、順位 467 F-2 で `lib-jj-helpers` に手を入れており、「この関数はどの lib に置くべきか」を毎回その場で判断している。ADR-044 (subprocess utility extraction の境界判定) は**抽出するかどうか**の基準を与えるが、**どの crate へ置くか**は扱っていない。 + +#### 設計決定 (案) + +ADR-012 に「lib-* の責務カテゴリと判定順序」を追記する。既存 crate を実際に分類して例示にする (分類できない crate があれば、それ自体が設計の綻びとして記録に値する)。 + +- [ ] 既存 lib-* を 5 カテゴリへ実際に分類してみる +- [ ] 分類できない / 複数にまたがる crate を洗い出す +- [ ] ADR-012 に判定順序を追記 + +#### 完了基準 + +新規 lib-* を足すとき、ADR-012 だけを読んで置き場所が決まること。 + +--- + +## docs ファイルサイズの是正 (2026-08-22 週次レビューの決定論 scan 由来) + +### 50KB 超過 3 ファイルの物理分割 + +> **動機**: file-length watchlist が `docs/todo-summary2.md` (70969 B) / `docs/todo22.md` (60685 B) / `docs/todo14.md` (60518 B) の 3 ファイルを 50KB (51200 B) 超過として検出した。**削除漏れではない** — 節数と summary 参照数がほぼ一致しており (14: 31 節/33 参照、22: 30/31)、中身は全て生きたタスクである。刈り込みでは解決せず物理分割が要る。 +> +> **本タスクの位置づけ**: 週次レビュー 2026-08-22 の決定論 scan (file-length-watchlist) 由来。findings ではなく機械的観測からの起票。 +> +> **参照**: `.claude/weekly-reviews/2026-08-22.md` § File Length Watchlist + +#### 背景 + +前例がある: 2026-07-20 に `todo13.md` を `todo15/16/17` へ、`todo10.md` を `todo18/19` へ物理分割して 50KB 以下に縮小した。同じ手順を踏めばよい。 + +`todo-summary2.md` だけは事情が違う — 183 行の優先度表 1 枚なので、節ではなく**順位で切る**ことになり、「順位 219 以下 = `docs/todo-summary.md` / 220 以上 = `docs/todo-summary2.md`」という 2 分割規約を 3 分割へ更新する必要がある (`docs/todo.md` preamble と `docs/todo-summary.md` の写し、および summary を読む決定論層 `lib-ledger` の `summary_gate` が対象)。 + +#### 設計決定 (案) + +- `todo14.md` (31 節) / `todo22.md` (30 節): 順位順に 2 分割し、`docs/todo.md` の routing 表へ新ファイルを追記 +- `todo-summary2.md`: 順位で切って `todo-summary3.md` を新設。**分割の境界順位を決める前に `lib-ledger` の読み取り経路を確認する** — `parse_summary_entries` は複数 table を走査するので、ファイルが増えたときに呼び出し側が全ファイルを読むかを確かめる +- 分割後に `pnpm lint:docs` / cross-ref 検査が通ることを確認する + +- [ ] `lib-ledger` の summary 読み取り経路が 3 ファイル構成に対応できるか確認 +- [ ] `todo14.md` を 2 分割 +- [ ] `todo22.md` を 2 分割 +- [ ] `todo-summary2.md` を分割し規約を 3 分割へ更新 +- [ ] `docs/todo.md` の routing 表を更新 + +#### 完了基準 + +`docs/todo*.md` と `docs/todo-summary*.md` のすべてが 51200 B 未満。`pnpm lint:docs` green。 + +--- + +### PostToolUse で docs ファイルの 50KB 超過を即時ブロックする + +> **動機**: 現在 file-length の検査は**週次レビューの報告のみ**で、超過しても何も止まらない。そのため超過に気づくのは最大 7 日後で、その間に書き足しが進んで分割コストが膨らむ。`.rs` は既に PostToolUse hook (`comment-lint-rust` の `RUST_FILE_TOO_LONG`、800 行) で**書いた瞬間にブロック**されており、同じ機構を docs へ広げれば週次を待つ必要がなくなる (ユーザー判断、2026-08-22)。 +> +> **本タスクの位置づけ**: 週次レビュー 2026-08-22 の決定論 scan 由来。上の「物理分割」が対症で、本タスクが再発防止。 +> +> **参照**: `.claude/weekly-reviews/2026-08-22.md` § File Length Watchlist、`src/hooks-post-tool-comment-lint-rust/` (既存の RUST_FILE_TOO_LONG 実装)、[ADR-042](adr/adr-042-rule-vs-mechanism-boundary.md) (ルール vs 仕組み化の境界基準) + +#### 背景 + +`RUST_FILE_TOO_LONG` は「触られるまで grandfather、触ったら閾値を課す」touch-trigger ratchet として実装済みで、本セッションでも実際に発火して分割を促した (`bookmark_check.rs` / `lib-subprocess`)。docs 側に同じものが無いために、todo ファイルだけが 24 個まで増えた。 + +**分割の連鎖には二次コストがある** — ファイルが増えるほど `docs/todo.md` の routing preamble が伸び、現在 8162 B に達している。todo.md 自身が 48053 B (残り 3147 B) で、**別方向から閾値に近づいている**。早期ブロックはこの連鎖そのものを抑える。 + +#### 設計決定 (案) + +- 対象は `docs/todo*.md` / `docs/todo-summary*.md` (閾値 51200 B)。他の docs へ広げるかは実測してから決める +- **touch-trigger ratchet を踏襲する** — 既に超過している 3 ファイルを即座に全ブロックすると編集自体ができなくなり、分割作業すら阻む。「触ったファイルが閾値を超えていたらブロック」ではなく「**書き込みの結果として閾値を超えたらブロック**」にするか、超過分の縮小方向の編集は通すか、線引きを決める必要がある +- エラーメッセージには現在サイズ・閾値・次にすべきこと (routing 表の更新を伴う新ファイル作成) を含める。`RUST_FILE_TOO_LONG` の `fix.steps` と同じ流儀 + +- [ ] 既存 `RUST_FILE_TOO_LONG` の実装と ratchet 判定を読む +- [ ] 超過ファイルの編集を阻まない線引きを決める (縮小方向は通す等) +- [ ] hook に docs 用の検査を追加 +- [ ] 回帰テスト (超過を作る書き込み → ブロック / 縮小方向の書き込み → 通す) + +#### 完了基準 + +`docs/todo*.md` を 51200 B 超へ書き足す編集がその場でブロックされること。既に超過しているファイルの**縮小方向の編集は通る**こと。両方をテストで固定。 diff --git a/docs/todo3.md b/docs/todo3.md index d5d0691..6ce5797 100644 --- a/docs/todo3.md +++ b/docs/todo3.md @@ -2,7 +2,7 @@ > **運用ルール** ([docs/todo.md](todo.md) と同一): 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 > -> **本ファイルの位置付け**: docs/todo2.md がファイルサイズ約 50KB に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して PR #88 以降の新規エントリは本ファイルに記録した。本ファイルも PR #96 セッションで 50KB 接近のため、それ以降の新規エントリは [docs/todo4.md](todo4.md) へ。todo.md / todo3-24.md の既存エントリは引き続き有効、相互に独立。新セッションでは25つすべてを確認すること (todo.md / todo3-24.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 +> **本ファイルの位置付け**: docs/todo2.md がファイルサイズ約 50KB に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して PR #88 以降の新規エントリは本ファイルに記録した。本ファイルも PR #96 セッションで 50KB 接近のため、それ以降の新規エントリは [docs/todo4.md](todo4.md) へ。todo.md / todo3-25.md の既存エントリは引き続き有効、相互に独立。新セッションでは26つすべてを確認すること (todo.md / todo3-25.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 > > **推奨実行順序**: 全タスク横断のサマリーは [docs/todo-summary.md](todo-summary.md#recommended-order-summary) を参照。 diff --git a/docs/todo4.md b/docs/todo4.md index 6692653..247ceef 100644 --- a/docs/todo4.md +++ b/docs/todo4.md @@ -2,7 +2,7 @@ > **運用ルール** ([docs/todo.md](todo.md) と同一): 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 > -> **本ファイルの位置付け**: docs/todo3.md がファイルサイズ約 50KB に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して新規エントリは本ファイルに記録していた。**本ファイルも 50KB に到達したため、PR #101 セッション以降の新規エントリは [docs/todo5.md](todo5.md) へ**。本ファイルは既存タスクの編集・完了削除専用。todo.md / todo3-24.md の既存エントリは引き続き有効、相互に独立。新セッションでは25つすべてを確認すること (todo.md / todo3-24.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 +> **本ファイルの位置付け**: docs/todo3.md がファイルサイズ約 50KB に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して新規エントリは本ファイルに記録していた。**本ファイルも 50KB に到達したため、PR #101 セッション以降の新規エントリは [docs/todo5.md](todo5.md) へ**。本ファイルは既存タスクの編集・完了削除専用。todo.md / todo3-25.md の既存エントリは引き続き有効、相互に独立。新セッションでは26つすべてを確認すること (todo.md / todo3-25.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 > > **推奨実行順序**: 全タスク横断のサマリーは [docs/todo-summary.md](todo-summary.md#recommended-order-summary) を参照。 diff --git a/docs/todo5.md b/docs/todo5.md index baa82a4..ea0f7b5 100644 --- a/docs/todo5.md +++ b/docs/todo5.md @@ -2,7 +2,7 @@ > **運用ルール** ([docs/todo.md](todo.md) と同一): 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 > -> **本ファイルの位置付け**: docs/todo4.md がファイルサイズ約 50KB に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して PR #101 セッション以降の新規エントリは本ファイルに記録していた。**本ファイルも 67KB に到達したため、2026-05-09 に PR #101〜#109 由来の古い半分を [docs/todo7.md](todo7.md) へ分離した**。本ファイル残存は PR #110 以降のエントリのみ。新規エントリは [docs/todo6.md](todo6.md) へ。todo.md / todo3-24.md の既存エントリは引き続き有効、相互に独立。新セッションでは25つすべてを確認すること (todo.md / todo3-24.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 +> **本ファイルの位置付け**: docs/todo4.md がファイルサイズ約 50KB に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して PR #101 セッション以降の新規エントリは本ファイルに記録していた。**本ファイルも 67KB に到達したため、2026-05-09 に PR #101〜#109 由来の古い半分を [docs/todo7.md](todo7.md) へ分離した**。本ファイル残存は PR #110 以降のエントリのみ。新規エントリは [docs/todo6.md](todo6.md) へ。todo.md / todo3-25.md の既存エントリは引き続き有効、相互に独立。新セッションでは26つすべてを確認すること (todo.md / todo3-25.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 > > **推奨実行順序**: 全タスク横断のサマリーは [docs/todo-summary.md](todo-summary.md#recommended-order-summary) を参照。 diff --git a/docs/todo6.md b/docs/todo6.md index 539f82d..e152221 100644 --- a/docs/todo6.md +++ b/docs/todo6.md @@ -2,7 +2,7 @@ > **運用ルール** ([docs/todo.md](todo.md) と同一): 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 > -> **本ファイルの位置付け**: docs/todo5.md / 本ファイルが 50KB に到達 (PR #143 T3-#1) のため **新規エントリは [docs/todo8.md](todo8.md) へ移行**。本ファイルは既存タスクの編集・完了削除専用。todo.md / todo3-24.md の既存エントリは引き続き有効、相互に独立。新セッションでは25つすべてを確認すること (todo.md / todo3-24.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 +> **本ファイルの位置付け**: docs/todo5.md / 本ファイルが 50KB に到達 (PR #143 T3-#1) のため **新規エントリは [docs/todo8.md](todo8.md) へ移行**。本ファイルは既存タスクの編集・完了削除専用。todo.md / todo3-25.md の既存エントリは引き続き有効、相互に独立。新セッションでは26つすべてを確認すること (todo.md / todo3-25.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 > > **推奨実行順序**: 全タスク横断のサマリーは [docs/todo-summary.md](todo-summary.md#recommended-order-summary) を参照。 diff --git a/docs/todo7.md b/docs/todo7.md index 5f21d3e..3ea1e16 100644 --- a/docs/todo7.md +++ b/docs/todo7.md @@ -2,7 +2,7 @@ > **運用ルール** ([docs/todo.md](todo.md) と同一): 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 > -> **本ファイルの位置付け**: docs/todo5.md がファイルサイズ 67KB に到達して Claude Code の読み取り安定性 (50KB 超で不安定化) を損なったため、2026-05-09 に **PR #101〜#109 由来の古い半分のタスクを本ファイルへ分離** した。todo5.md には PR #110 以降のタスクが残存。本ファイルは既存タスクの編集・完了削除専用、新規タスクは追加しない (新規エントリは [docs/todo6.md](todo6.md) へ)。todo.md / todo3-24.md の既存エントリは引き続き有効、相互に独立。新セッションでは25つすべてを確認すること (todo.md / todo3-24.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 +> **本ファイルの位置付け**: docs/todo5.md がファイルサイズ 67KB に到達して Claude Code の読み取り安定性 (50KB 超で不安定化) を損なったため、2026-05-09 に **PR #101〜#109 由来の古い半分のタスクを本ファイルへ分離** した。todo5.md には PR #110 以降のタスクが残存。本ファイルは既存タスクの編集・完了削除専用、新規タスクは追加しない (新規エントリは [docs/todo6.md](todo6.md) へ)。todo.md / todo3-25.md の既存エントリは引き続き有効、相互に独立。新セッションでは26つすべてを確認すること (todo.md / todo3-25.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 > > **推奨実行順序**: 全タスク横断のサマリーは [docs/todo-summary.md](todo-summary.md#recommended-order-summary) を参照。 diff --git a/docs/todo8.md b/docs/todo8.md index d715329..534d781 100644 --- a/docs/todo8.md +++ b/docs/todo8.md @@ -2,7 +2,7 @@ > **運用ルール** ([docs/todo.md](todo.md) と同一): 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 > -> **本ファイルの位置付け**: docs/todo6.md がファイルサイズ 50KB に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して PR #143 T3-#1 採用時 = 2026-05-11 から新規エントリは本ファイルに記録していた。**本ファイルも 60KB に到達したため、PR #172 仕組み化方針切替セッション = 2026-05-25 以降の新規エントリは [docs/todo9.md](todo9.md) へ移行**。本ファイルは既存タスクの編集・完了削除専用。**新規エントリの現在の追加先は [docs/todo24.md](todo24.md)** (todo9 → todo10 → todo13 → todo14 → todo20 → todo21 → todo22 → todo23 と移動してきた)。todo.md / todo3.md 〜 todo7.md / todo9.md 〜 todo24.md の既存エントリは引き続き有効、相互に独立。新セッションでは25つすべてを確認すること (todo.md / todo3-24.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 +> **本ファイルの位置付け**: docs/todo6.md がファイルサイズ 50KB に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して PR #143 T3-#1 採用時 = 2026-05-11 から新規エントリは本ファイルに記録していた。**本ファイルも 60KB に到達したため、PR #172 仕組み化方針切替セッション = 2026-05-25 以降の新規エントリは [docs/todo9.md](todo9.md) へ移行**。本ファイルは既存タスクの編集・完了削除専用。**新規エントリの現在の追加先は [docs/todo25.md](todo25.md)** (todo9 → todo10 → todo13 → todo14 → todo20 → todo21 → todo22 → todo23 → todo24 と移動してきた)。todo.md / todo3.md 〜 todo7.md / todo9.md 〜 todo24.md の既存エントリは引き続き有効、相互に独立。新セッションでは26つすべてを確認すること (todo.md / todo3-25.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 > > **推奨実行順序**: 全タスク横断のサマリーは [docs/todo-summary.md](todo-summary.md#recommended-order-summary) を参照。 diff --git a/docs/todo9.md b/docs/todo9.md index fa61fcb..32f6c19 100644 --- a/docs/todo9.md +++ b/docs/todo9.md @@ -2,7 +2,7 @@ > **運用ルール** ([docs/todo.md](todo.md) と同一): 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 > -> **本ファイルの位置付け**: docs/todo8.md がファイルサイズ 60KB に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して新規エントリは本ファイルに記録する (PR #172 仕組み化方針切替セッション = 2026-05-25)。todo.md / todo3.md 〜 todo8.md の既存エントリは引き続き有効、相互に独立。**2026-06-06 分割**: 本ファイルが 75KB / 890 行に到達したため、PR-specific follow-up entries (順位 157, 160-173) を [docs/todo11.md](todo11.md) に分離。残置: 既存ルール仕組み化バンドル (順位 146-151) + 週次レビュー拡張 (順位 152-154)。新セッションでは25つすべてを確認すること (todo.md / todo3-24.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 +> **本ファイルの位置付け**: docs/todo8.md がファイルサイズ 60KB に到達したため、Claude Code の読み取り安定性 (50KB 超で不安定化) を考慮して新規エントリは本ファイルに記録する (PR #172 仕組み化方針切替セッション = 2026-05-25)。todo.md / todo3.md 〜 todo8.md の既存エントリは引き続き有効、相互に独立。**2026-06-06 分割**: 本ファイルが 75KB / 890 行に到達したため、PR-specific follow-up entries (順位 157, 160-173) を [docs/todo11.md](todo11.md) に分離。残置: 既存ルール仕組み化バンドル (順位 146-151) + 週次レビュー拡張 (順位 152-154)。新セッションでは26つすべてを確認すること (todo.md / todo3-25.md / todo-summary.md / todo-summary2.md。todo2.md は 2026-08-12 退役)。 > > **推奨実行順序**: 全タスク横断のサマリーは [docs/todo-summary.md](todo-summary.md#recommended-order-summary) を参照。