diff --git a/docs/todo.md b/docs/todo.md index 134095e..d6c2f27 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -2,11 +2,15 @@ > **運用ルール**: 各タスクには **やろうとしたこと / 現在地 / 詰まっている箇所** を必ず書く。完了タスクは ADR か仕組みに反映後、このファイルから削除する。過去の経緯は git log で追跡可能。 > -> **本ファイル + [docs/todo2.md](todo2.md) の使い分け**: todo.md がサイズ ~40KB に達したため新規タスクは todo2.md に記録。新セッションでは両方を確認すること。 +> **本ファイル + [docs/todo2.md](todo2.md) の使い分け** (PR #83 T3-2 で恒久化、2026-04-28 強化): +> - **docs/todo.md**: 既存タスクの編集・完了削除専用。新規タスクは追加しない (~50KB 閾値内に維持し Claude Code 読み取り安定性を確保) +> - **docs/todo2.md**: 新規タスクの追加先。todo.md のサイズ管理のため新規エントリは原則本ファイルへ +> - 例外: 既存 todo.md タスクと **同一ファイル / 同一コンポーネント** を編集する密結合タスクは todo.md に追加可 (例: `~/.claude/rules/common/git-workflow.md` 配下のグローバルルール群) +> - **新セッションでは両方を確認すること** --- -## 推奨実行順序サマリー (2026-04-27 更新、PR #82 post-merge-feedback 反映後) +## 推奨実行順序サマリー (2026-04-28 更新、PR #83 post-merge-feedback 反映後) 開発環境の作業効率への貢献度を基準にした推奨実行順序。詳細は各タスク冒頭の **「実行優先度」** 行を参照。 @@ -14,20 +18,21 @@ |---|---|---|---|---|---| | 1 | 🚀 Tier 1 | git-workflow.md jj 運用節更新 (Tier 3 finding) | todo.md | XS | なし | | 2 | 🚀 Tier 1 | **個人開発ブランチ保護方針 ADR/グローバルルール明文化 (T3-1)** | todo.md | XS | なし | -| 3 | 🚀 Tier 1 | Markdown linter (markdownlint-cli2) hook 統合 (Tier 1 finding) | todo.md | Small | なし (順位 8 の前提) | -| 4 | 🚀 Tier 1 | ADR-032 PR-pre: GitHub Branch Protection 整備 | todo2.md | 設定のみ | 順位 2 | -| 5 | 🔧 Tier 2 | 週次レビュー (ADR-031) Phase B 実装 | todo.md | 中-高 | なし (順位 8 の compensating check 前提) | -| 6 | 🔧 Tier 2 | **reviewer facet 改善 (review-simplicity / review-security の DRY/YAGNI/security 軸明文化、T3-combined)** | todo2.md | S | なし | -| 7 | 🔧 Tier 2 | ADR-032 PR-broken-link: broken-link-check 統合 | todo2.md | Small-中 | 順位 3 (clean baseline) | -| 8 | 💎 Tier 3 | ADR-032 PR-β: 実装 (enabled=false default) | todo2.md | 中-高 | 1, 2, 3, 4, 5, 7 | -| 9 | 💎 Tier 3 | ADR-032 PR-γ: enablement (1 行 flip) | todo2.md | XS | 順位 5 dogfood + 順位 8 | -| 10 | 💎 Tier 3 | ADR-032 PR-δ: dogfood + メトリクス検証 | todo2.md | (運用) | 順位 9 | -| 11 | 🧹 Tier 4 | ADR-030 Phase E/F: 旧機構廃止 + dogfood | todo.md | 中 | なし (cleanup) | -| 12 | ⏳ Tier 5 | (追って) ADR-030 の takt-test-vc 反映 | todo.md | 中 | 順位 11 Phase F | - -**戦略**: Tier 1 (1〜4) を 1〜2 セッションで片付け → Tier 2 (5〜7) で D の前提を埋める → Tier 3 (8〜10) で D を land。Tier 4-5 は cleanup / 外部展開で daily efficiency への直接効果は小さい。 - -**順位 1-2 はグローバルルール (`~/.claude/rules/common/`) 整備で並列可**。順位 6 (reviewer facet 改善) は全 PR の review 精度を即時向上させ、Tier 2 内で順位 5/7 と並列実施可能。 +| 3 | 🚀 Tier 1 | **却下済み変更の再適用防止グローバルルール明文化 (PR #83 T3-1)** | todo2.md | XS | なし | +| 4 | 🚀 Tier 1 | Markdown linter (markdownlint-cli2) hook 統合 (Tier 1 finding) | todo.md | Small | なし (順位 9 の前提) | +| 5 | 🚀 Tier 1 | ADR-032 PR-pre: GitHub Branch Protection 整備 | todo2.md | 設定のみ | 順位 2 | +| 6 | 🔧 Tier 2 | 週次レビュー (ADR-031) Phase B 実装 | todo.md | 中-高 | なし (順位 9 の compensating check 前提) | +| 7 | 🔧 Tier 2 | **reviewer facet 改善 (review-simplicity / review-security の DRY/YAGNI/security 軸明文化、T3-combined)** | todo2.md | S | なし | +| 8 | 🔧 Tier 2 | ADR-032 PR-broken-link: broken-link-check 統合 | todo2.md | Small-中 | 順位 4 (clean baseline) | +| 9 | 💎 Tier 3 | ADR-032 PR-β: 実装 (enabled=false default) | todo2.md | 中-高 | 1, 2, 3, 4, 5, 6, 8 | +| 10 | 💎 Tier 3 | ADR-032 PR-γ: enablement (1 行 flip) | todo2.md | XS | 順位 6 dogfood + 順位 9 | +| 11 | 💎 Tier 3 | ADR-032 PR-δ: dogfood + メトリクス検証 | todo2.md | (運用) | 順位 10 | +| 12 | 🧹 Tier 4 | ADR-030 Phase E/F: 旧機構廃止 + dogfood | todo.md | 中 | なし (cleanup) | +| 13 | ⏳ Tier 5 | (追って) ADR-030 の takt-test-vc 反映 | todo.md | 中 | 順位 12 Phase F | + +**戦略**: Tier 1 (1〜5) を 1〜2 セッションで片付け → Tier 2 (6〜8) で D の前提を埋める → Tier 3 (9〜11) で D を land。Tier 4-5 は cleanup / 外部展開で daily efficiency への直接効果は小さい。 + +**順位 1-3 はグローバルルール (`~/.claude/rules/common/` または `~/.claude/CLAUDE.md`) 整備で並列可**。順位 7 (reviewer facet 改善) は全 PR の review 精度を即時向上させ、Tier 2 内で順位 6/8 と並列実施可能。 --- @@ -39,7 +44,7 @@ > > **本タスクの位置づけ**: ADR-029 を partial supersede する新 ADR-030 を起案し、takt 経由の決定論的フィードバック機構へ移行する。本タスク完了で post-merge-feedback skill / pending file / Stop hook (hooks-stop-feedback-dispatch) はすべて廃止される。 > -> **実行優先度**: 🧹 **Tier 4 (順位 11/12)** — Phase A〜D は merged 済で workflow は機能。残る Phase E (旧機構廃止) / Phase F (dogfood) は cleanup 中心で daily efficiency への直接効果は小。Tier 1〜3 完了後の片付けタイミングで実施推奨。 +> **実行優先度**: 🧹 **Tier 4 (順位 12/13)** — Phase A〜D は merged 済で workflow は機能。残る Phase E (旧機構廃止) / Phase F (dogfood) は cleanup 中心で daily efficiency への直接効果は小。Tier 1〜3 完了後の片付けタイミングで実施推奨。 #### 背景: ADR-029 の構造的欠陥 (PR #74 dogfood で実証) @@ -221,7 +226,7 @@ dogfood では PR #74 マージ後、pending file が `dispatched` で stuck し > **参照**: 上位タスク「マージ後フィードバック機構の決定論化」の Phase F 完了が前提。元の 1-F (ADR-014 本採用化 + takt-test-vc 反映) は ADR-014 が ADR-030 で Superseded されるため scope 変更。 > -> **実行優先度**: ⏳ **Tier 5 (順位 12/12)** — 派生プロジェクトへの展開で本リポジトリへの効果はゼロ。順位 11 (ADR-030 Phase F) 完了後の任意タスク。 +> **実行優先度**: ⏳ **Tier 5 (順位 13/13)** — 派生プロジェクトへの展開で本リポジトリへの効果はゼロ。順位 12 (ADR-030 Phase F) 完了後の任意タスク。 - **やろうとしたこと**: 本プロジェクトで ADR-030 機構が安定稼働 (Phase F dogfood 完了) した後、takt-test-vc へ機構ごとバックポート - **現在地**: 上位タスクの Phase F 完了待ち @@ -235,7 +240,7 @@ dogfood では PR #74 マージ後、pending file が `dispatched` で stuck し > > **計画ファイル参照**: `~/.claude/plans/1-docs-todo-md-askuserquestion-validated-orbit.md` (本タスク策定時の plan、新セッションでも同じ判断を再現可能) > -> **実行優先度**: 🔧 **Tier 2 (順位 5/12)** — ADR-032 (docs-only fast path) の compensating check 前提。順位 8 (ADR-032 PR-β) 着手前に Phase B dogfood 1 回成功が必要。architecture facet の rubric に docs 整合性観点 (ADR/symbol drift, terminology drift, docs-code 整合, docs 重複/不整合) を含めること。 +> **実行優先度**: 🔧 **Tier 2 (順位 6/13)** — ADR-032 (docs-only fast path) の compensating check 前提。順位 9 (ADR-032 PR-β) 着手前に Phase B dogfood 1 回成功が必要。architecture facet の rubric に docs 整合性観点 (ADR/symbol drift, terminology drift, docs-code 整合, docs 重複/不整合) を含めること。 #### 背景: 既存レビューの空白 @@ -419,7 +424,7 @@ SessionStart hook (hooks-session-start.exe 拡張) > **参照**: `.claude/feedback-reports/81.md` の Tier 1 finding (post-merge-feedback による独立提案) > -> **実行優先度**: 🚀 **Tier 1 (順位 3/12)** — daily efficiency への即効性が極大。`.md` 編集毎に自動 `--fix` で CodeRabbit Nitpick が消え、PR レビュー時間も間接短縮。**ADR-032 (docs-only fast path) の前提条件** (push 前に markdownlint 違反が解消されることが docs-only skip の前提)。順位 1-2 (グローバルルール 2 件) と並列または直後に実施推奨。**PR #82 post-merge-feedback で MD028 / MD040 / MD058 が初期 rule set として明示された** (T1-1 + T1-2 sub-task として吸収)。 +> **実行優先度**: 🚀 **Tier 1 (順位 4/13)** — daily efficiency への即効性が極大。`.md` 編集毎に自動 `--fix` で CodeRabbit Nitpick が消え、PR レビュー時間も間接短縮。**ADR-032 (docs-only fast path) の前提条件** (push 前に markdownlint 違反が解消されることが docs-only skip の前提)。順位 1-3 (グローバルルール 3 件) と並列または直後に実施推奨。**PR #82 post-merge-feedback で MD028 / MD040 / MD058 が初期 rule set として明示された** (T1-1 + T1-2 sub-task として吸収)。 #### 背景 @@ -468,7 +473,7 @@ SessionStart hook (hooks-session-start.exe 拡張) > **参照**: `.claude/feedback-reports/81.md` の Tier 3 finding (post-merge-feedback による独立提案) > -> **実行優先度**: 🚀 **Tier 1 (順位 1/12)** — 工数 XS (数行追記)、グローバルルールなので **全プロジェクト** で即時効果。完了すれば AI が commit 分離を自動判断 (本セッションで実証された必要性の恒久化)。**最初に着手すべき**。順位 2 (ブランチ保護方針 ADR) も同じ ~/.claude/rules/common/ への追記なので並列実施推奨。 +> **実行優先度**: 🚀 **Tier 1 (順位 1/13)** — 工数 XS (数行追記)、グローバルルールなので **全プロジェクト** で即時効果。完了すれば AI が commit 分離を自動判断 (本セッションで実証された必要性の恒久化)。**最初に着手すべき**。順位 2 (ブランチ保護方針) / 順位 3 (却下済み変更再適用防止) も同じ ~/.claude/ 配下への追記なので並列実施推奨。 #### 背景 @@ -517,7 +522,7 @@ SessionStart hook (hooks-session-start.exe 拡張) > > **参照**: `.claude/feedback-reports/82.md` の Tier 3 #1 finding > -> **実行優先度**: 🚀 **Tier 1 (順位 2/12)** — 工数 XS (数行追記)、グローバルルールなので **全プロジェクト** で即時効果。順位 1 (git-workflow.md jj 運用節更新) と同じ ~/.claude/rules/common/ への追記のため **並列実施推奨**。次回 docs-only fast path や類似の責務分離設計で 7 回反復のコストを回避できる。 +> **実行優先度**: 🚀 **Tier 1 (順位 2/13)** — 工数 XS (数行追記)、グローバルルールなので **全プロジェクト** で即時効果。順位 1 (git-workflow.md jj 運用節更新) と同じ ~/.claude/rules/common/ への追記のため **並列実施推奨**。次回 docs-only fast path や類似の責務分離設計で 7 回反復のコストを回避できる。 #### 背景 diff --git a/docs/todo2.md b/docs/todo2.md index 74e7a7e..a1a3c8c 100644 --- a/docs/todo2.md +++ b/docs/todo2.md @@ -18,13 +18,13 @@ > > **計画ファイル参照**: `~/.claude/plans/1-docs-todo-md-askuserquestion-validated-orbit.md` (本タスク策定時の plan、新セッションでも同じ判断を再現可能) > -> **実行優先度**: タスク全体は **🚀 Tier 1 〜 💎 Tier 3 に分散** (Phase ごとに優先度が異なる)。 -> - Phase pre (branch protection): **Tier 1 (順位 3/10)** — 設定のみ、A/B と並列可 -> - Phase α: 既存 todo.md「週次レビュー (ADR-031)」エントリ参照 — **Tier 2 (順位 4/10)** -> - Phase broken-link: **Tier 2 (順位 5/10)** — 順位 2 (markdownlint) の clean baseline 後が望ましい -> - Phase β (実装、enabled=false): **Tier 3 (順位 6/10)** — 全前提揃ってから -> - Phase γ (enablement): **Tier 3 (順位 7/10)** — 順位 4 dogfood 後の 1 行 flip -> - Phase δ (dogfood): **Tier 3 (順位 8/10)** — 実 docs PR で検証 +> **実行優先度**: タスク全体は **🚀 Tier 1 〜 💎 Tier 3 に分散** (Phase ごとに優先度が異なる、2026-04-28 採番更新)。 +> - Phase pre (branch protection): **Tier 1 (順位 5/13)** — 設定のみ、順位 1-4 と並列可 +> - Phase α: 既存 todo.md「週次レビュー (ADR-031)」エントリ参照 — **Tier 2 (順位 6/13)** +> - Phase broken-link: **Tier 2 (順位 8/13)** — 順位 4 (markdownlint) の clean baseline 後が望ましい +> - Phase β (実装、enabled=false): **Tier 3 (順位 9/13)** — 全前提揃ってから +> - Phase γ (enablement): **Tier 3 (順位 10/13)** — 順位 6 dogfood 後の 1 行 flip +> - Phase δ (dogfood): **Tier 3 (順位 11/13)** — 実 docs PR で検証 > > **最大 payoff**: Phase γ enable 後、docs PR 所要時間 ~15min → ~30sec (30 倍速)。daily efficiency への貢献は本リポジトリ随一だが、**前提依存が多いため近道はない**。 @@ -366,7 +366,7 @@ Phase 2 (任意、段階的緩和) > > **参照**: `.claude/feedback-reports/82.md` の Tier 3 #2-4 findings (3 件を統合) > -> **実行優先度**: 🔧 **Tier 2 (順位 6/12)** — 全 PR の review 精度を即時向上、false positive iteration の削減効果。Tier 2 内で順位 5 (週次レビュー Phase B) / 順位 7 (ADR-032 PR-broken-link) と並列実施可能。Effort S × 3 = ~S。 +> **実行優先度**: 🔧 **Tier 2 (順位 7/13)** — 全 PR の review 精度を即時向上、false positive iteration の削減効果。Tier 2 内で順位 6 (週次レビュー Phase B) / 順位 8 (ADR-032 PR-broken-link) と並列実施可能。Effort S × 3 = ~S。 #### 背景 @@ -407,3 +407,47 @@ Phase 2 (任意、段階的緩和) #### 詰まっている箇所 なし (Effort S、既存 instruction への追記のみ) + +### 却下済み変更の再適用防止グローバルルール明文化 (PR #83 T3-1) + +> **動機**: 2026-04-27 セッションで T3-combined を todo2.md に移動する Edit 中、AI が無意識に直前にユーザーが却下した CodeRabbit MD040 finding (` ``` ` → ` ```text `) を付随的に適用してしまった。即座に revert したが、構造的に防ぐルールがあれば防げる事案。post-merge-feedback (PR #83) が Tier 3 として独立に提案。 +> +> **本タスクの位置づけ**: グローバルルール (`~/.claude/CLAUDE.md` または `~/.claude/rules/common/coding-style.md`) への追記。Claude/AI の動作ルールとして「ユーザーが現セッションで明示却下した変更は、後続の Edit / Write 操作でも適用しない」を明文化。 +> +> **参照**: `.claude/feedback-reports/83.md` の Tier 3 #1 finding +> +> **実行優先度**: 🚀 **Tier 1 (順位 3/13)** — 工数 XS、グローバルなので全プロジェクト即時効果。本セッションでの事実 (MD040 fence 不意追加) の恒久化。順位 1 (git-workflow.md) / 順位 2 (ブランチ保護方針) と並列実施可能 (~/.claude/ 配下のグローバルルール群)。 + +#### 背景 + +- 2026-04-27 セッションで PR #82 の 4 CodeRabbit findings を「全件却下」と判断 +- 直後の T3-combined 移動 Edit で、AI が old_string と new_string を組み立てる際「整合性のため」MD040 fence の修正 (` ``` ` → ` ```text `) を含めてしまった +- 即座に revert したが、AI が「便利だから」「ついでに」と却下済み修正を再適用するリスクは構造的に存在 +- post-merge-feedback (PR #83) が同一セッション transcript から本事象を独立に検出 +- ユーザー意思決定の override に該当する重大なリスク (本来の意図と異なる変更が混入する) + +#### 設計決定 (案) + +- 配置先: 第一候補 `~/.claude/CLAUDE.md` の Personal Preferences 配下 (Decision Handling 等の新規セクション)。第二候補 `~/.claude/rules/common/coding-style.md` +- 第一候補の根拠: Claude 自身の動作ルールに該当するため CLAUDE.md (グローバル指示) が自然 +- ルール文 (案): + > **却下済み変更の再適用禁止**: セッション内でユーザーが明示的に却下した変更 (CodeRabbit findings の reject、design choice の reject など) は、後続の Edit / Write 操作で **付随適用してはならない**。AI が「整合性のため」「ついでに」「ベストプラクティスだから」として再適用するのも禁止。例外: ユーザーが新たに同セッションで明示的に採用を表明した場合のみ。 +- スコープ: 全プロジェクトの全セッションに即時適用 + +#### 作業計画 + +- [ ] 配置先決定 (CLAUDE.md vs coding-style.md、第一候補は CLAUDE.md) +- [ ] 該当ファイルにルール文を追記 +- [ ] memory `feedback_*.md` で関連する判断 (今回の MD040 reverted 経緯) があれば参照を追加 +- [ ] 動作確認: 次回セッションで却下済み変更の再適用が発生しないか観察 +- [ ] 本 todo2.md エントリを削除 + +#### 完了基準 + +- ~/.claude/ 配下に「却下済み変更の再適用禁止」ルールが明記される +- 次回セッションで AI が却下済み変更を付随適用しない (ユーザー明示指示なしで挙動変化を確認) +- 順位 1 / 順位 2 と並列実施で 1 セッション内に完了 (~/.claude/ 配下のグローバルルール 3 件を一括整備) + +#### 詰まっている箇所 + +なし (Effort XS、追記のみ)