From f128f8e2f29cab4205fb63becfb4fa20b4f51c58 Mon Sep 17 00:00:00 2001 From: aloekun Date: Fri, 29 May 2026 14:13:44 +0900 Subject: [PATCH 1/2] =?UTF-8?q?docs(todo):=20PR=20#182=20post-merge-feedba?= =?UTF-8?q?ck=20Bundle=20CR-RL=20=E6=8E=A1=E7=94=A8=203=20=E4=BB=B6=20+=20?= =?UTF-8?q?=E9=A0=86=E4=BD=8D=20165=20=E8=A3=9C=E8=B6=B3=E8=BF=BD=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 採用: PR #182 post-merge-feedback (2026-05-29 ユーザー承認): - 順位 167 (T1-#1): check-ci-coderabbit の RATE_LIMIT_MARKER を新フォーマット対応に更新 - 順位 168 (T2-#1): CR rate-limit detection integration test の新旧 fixture - 順位 169 (T3-#1): ADR-018 / ADR-034 に CR rate-limit format evolution 同期戦略 codify 3 件は Bundle CR-RL タグで同 PR land 推奨 (機械強制 + test 層 + 永続 ADR 層の 3 層補強)。 順位 165 補足追記: - PR #182 T2-#2 採用候補 (pnpm-create-pr-body-guard hook test) は本 165 と scope 重複のため独立 entry 化せず本 entry に集約 - supplementary fact: PR #134 で pnpm-create-pr-body-guard hook 採用判定されたが未実装の state (= stale unfulfilled adoption、feedback-reports/134.md Tier 1 #1) - 165 着手時に hook 実装済なら test 範囲を 2 層 (--body-file workaround verify + guard hook 動作 verify) に拡張 --- docs/todo-summary.md | 3 + docs/todo9.md | 135 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 138 insertions(+) diff --git a/docs/todo-summary.md b/docs/todo-summary.md index 498366a..7b253d9 100644 --- a/docs/todo-summary.md +++ b/docs/todo-summary.md @@ -80,6 +80,9 @@ | 164 | 💎 Tier 3 | **ADR-039 kill-switch standard pattern に「診断メッセージは実装の受理値を網羅」原則追記 (PR #179 T3-#1 採用)** | todo9.md | XS | なし (PR #179 で `CLI_DOCS_LINT_DISABLE` の kill-switch message が `=1` 固定で実受理値 `true`/`TRUE`/`True` を反映しなかった spec-impl drift、ADR-039 は全 experimental feature の標準参照のため systemic reach、`docs/adr/adr-039-*.md` 編集) | | 165 | 🔧 Tier 2 | **`pnpm create-pr` PR body truncation 回避を検証する e2e/integration test 追加 (PR #181 T2-#1 採用)** | todo9.md | S | なし (PR #134 + #181 の 2 回観測で Medium frequency に昇格、memory `feedback_pnpm_create_pr_body` の `--body-file` workaround を自動 regression gate 化、shell argument truncation の境界 (行数/バイト数) を fixture で測定、silent UX 劣化の早期検出、cli-pr-monitor の argv 組み立て層を test 対象、順位 166 と相補 = test 層 vs docs 層) | | 166 | 💎 Tier 3 | **ADR-028 に PR body 複数行時の `--body-file` 推奨 + shell argument truncation の why/how 補足追記 (PR #181 T3-#1 採用)** | todo9.md | XS | なし (順位 165 の構造的予防策として ADR-028 = pnpm create-pr gate に codify、改行が shell delimiter として処理される why と `--body-file` / `gh pr edit --body-file` の how を 2-3 段落で補足、`docs/adr/adr-028-pnpm-create-pr-gate.md` 編集、memory `feedback_pnpm_create_pr_body` との back-link 整合) | +| 167 | 🚀 Tier 1 | **`check-ci-coderabbit` の `RATE_LIMIT_MARKER` を新フォーマット対応に更新 (PR #182 T1-#1 採用) ★ Bundle CR-RL** | todo9.md | M | なし (`src/check-ci-coderabbit/src/main.rs:251` 旧 marker `Rate limit exceeded` 固定 → multi-variant array `["Rate limit exceeded", "rate limited by coderabbit.ai"]` に変更、現行 CR は HTML マーカー + `## Review limit reached` フォーマットを使用、PR #182 で 30+ 分 polling 観測の root cause、`RateLimitOutcome::Parked` 経路 (ADR-018) が silent regression で無効化されている critical bug、順位 168 + 169 と Bundle CR-RL で同 PR land 推奨) | +| 168 | 🔧 Tier 2 | **CR rate-limit detection integration test — 新旧両フォーマット対応 fixture 追加 (PR #182 T2-#1 採用) ★ Bundle CR-RL** | todo9.md | S | 順位 167 の marker 配列化と pair、`#[cfg(test)]` に新 format fixture 2-3 variant 追加 (HTML マーカー + `## Review limit reached` の minimum reproduction)、既存 6 fixture (旧 format) は維持して backward compat、silent regression を test で検出可能化 | +| 169 | 💎 Tier 3 | **ADR-018 / ADR-034 に CR rate-limit format evolution と検出ロジック同期戦略を codify (PR #182 T3-#1 採用) ★ Bundle CR-RL** | todo9.md | XS | 順位 167 + 168 と同 commit 推奨、ADR-034 に「既知 format 一覧 + 検出 logic 更新手順」を追記、ADR-018 lines 185-186 を multi-variant 参照に更新、CR の format 進化への構造的予防策、永続 layer (ADR) での format drift 防止 | **戦略**: Tier 1 を 2〜3 セッションで片付け → Tier 2 で ADR-032 の前提 + rate-limit + convergence cost 削減を進める → Tier 3 で ADR-032 を land + ドキュメント整備。Tier 4-5 は cleanup / 外部展開で daily efficiency への直接効果は小さい。 diff --git a/docs/todo9.md b/docs/todo9.md index b6fdd2d..73e76ca 100644 --- a/docs/todo9.md +++ b/docs/todo9.md @@ -774,6 +774,15 @@ ADR-039 § 決定 2 (Kill-switch) に以下の原則を追記: `gh pr create` 自体に dry-run option がないため、実 PR 作成を伴わない検証戦略を要設計 (argv 組み立て層の関数化 or mock gh CLI)。Effort S 想定だが test 戦略次第で M に膨らむ可能性あり。 +#### 補足 (PR #182 T2-#2 採用候補との関係、2026-05-29 ユーザー判断) + +- PR #182 post-merge-feedback の T2-#2 (`pnpm-create-pr-body-guard` hook の guard test 追加) は本 165 と test 層 scope が重複するため、独立 entry 化せず本 entry に集約。analyzer は「本 session で `pnpm-create-pr-body-guard` hook による mitigate 実施」と articulate したが、これは hallucination (本 session では `--body-file` workaround を使ったのみで guard hook は触れていない) +- 重要な supplementary fact: PR #134 post-merge-feedback で `pnpm-create-pr-body-guard` hook 追加が **✅ 採用判定されたが、実装は完了していない状態** (= unfulfilled adoption、`.claude/feedback-reports/134.md` Tier 1 #1 参照)。順位 152 (todo 削除時の事前 land 確認手順) と関連する process learning として記録 +- 本 165 着手時に guard hook が実装済なら test 範囲を 2 層に拡張する: + 1. (本 entry の主旨) `--body-file` workaround が複数行 body で truncation なしに動作することを verify + 2. (拡張) guard hook が `pnpm create-pr -- ... --body "..."` を block して `--body-file` に誘導することを verify +- hook 未実装のまま本 165 を land する場合、guard 層の test は将来の guard 実装 follow-up entry に切り出す + --- ### ADR-028 に PR body 複数行時の `--body-file` 推奨 + shell argument truncation の why/how 補足追記 (PR #181 T3-#1 採用) @@ -813,6 +822,132 @@ ADR-028 に以下を補足セクションとして追記: --- +### `check-ci-coderabbit` の `RATE_LIMIT_MARKER` を新フォーマット対応に更新 (PR #182 T1-#1 採用) ★ Bundle CR-RL + +> **動機**: PR #182 セッションで CR の rate-limit が 30+ 分間検出されず、`cli-pr-monitor` が無効な polling を継続した実観測ベース。`src/check-ci-coderabbit/src/main.rs:251` の `RATE_LIMIT_MARKER = "Rate limit exceeded"` は CR の旧フォーマット時代の固定値で、現行 CR は `` HTML マーカー + `## Review limit reached` heading + `you've reached your PR review rate limit` 本文を使用。format drift により `is_rate_limit_comment()` が常に false を返し、`RateLimitOutcome::Parked` 経路 (ADR-018 設計) が完全に無効化されている silent regression。 +> +> **本タスクの位置づけ**: PR #182 post-merge-feedback Tier 1 #1 採用 (Severity High / Frequency Medium / Effort M / Adoption Risk None、2026-05-29 ユーザー承認)。Tier 1 機械強制層の修正、Bundle CR-RL (本 entry + 順位 168 + 順位 169) で同一 PR land 推奨。 +> +> **参照**: `.claude/feedback-reports/182.md` Tier 1 #1、`src/check-ci-coderabbit/src/main.rs:251` (現状コード)、`src/check-ci-coderabbit/src/main.rs:1298-1370` 周辺 (既存 fixture は旧フォーマットのみ)、`docs/adr/adr-018-pr-monitor-takt-migration.md` (rate-limit 経路の設計根拠、旧 marker 前提で記載)、`docs/adr/adr-034-coderabbit-auto-monitoring.md` line 64 (旧 marker regex 検出記述)、PR #182 セッションでの 30+ 分 polling 観測 (`docs/handoff-rank-8-weekly-review-phase-b.md` 関連 transcript) +> +> **実行優先度**: 🚀 **Tier 1** — Effort M。CR rate-limit 検出が常時無効化されている critical bug 修正。 + +#### 設計決定 (案) + +- **multi-variant marker 配列化**: `const RATE_LIMIT_MARKERS: &[&str] = &["Rate limit exceeded", "rate limited by coderabbit.ai"]` (HTML マーカーは最も安定なため優先、旧 marker は backward compat) +- **format 進化への耐性**: marker 配列の任意 1 件 hit で rate-limit 判定、新 CR format 追加時は配列 append のみで対応 +- **時刻パース logic 拡張**: 新 format は `More reviews will be available in N minutes and S seconds` (例: "26 minutes and 21 seconds")。旧 format `Please wait N minutes and S seconds before requesting another review` と異なる prefix のため、`rate_limit_event_time()` の reset 時刻計算ロジックを 2 variant 対応に refactor +- **採用 marker source**: 現行 CR walkthrough HTML コメント `` を最も安定な検出 source とする (実観測: PR #182 で確認) +- **fixture 追加**: `tests/` または `#[cfg(test)]` mod に新 format fixture (現実観測 body の minimum reproduction、4-6 lines) を 2-3 variant 追加 (順位 168 と pair で実装) + +#### 作業計画 + +- [ ] `RATE_LIMIT_MARKER` を `RATE_LIMIT_MARKERS: &[&str]` に変更し、`is_rate_limit_comment()` を multi-variant check に refactor +- [ ] `rate_limit_event_time()` / `parse_rate_limit()` を新旧両 format の時刻パースに対応 (regex or split-based parsing) +- [ ] 既存 6 fixture (lines 1298-1370 周辺) はそのまま維持 (旧 format regression gate として継続)、新 format fixture を 2-3 件追加 (順位 168) +- [ ] cargo test で pass 確認 + 意図的に新 marker を削除して test が落ちるか手動検証 +- [ ] markdownlint clean (test fixture の body 内 HTML エンティティ等が markdownlint で問題ないか確認) +- [ ] 本エントリ削除 + todo-summary.md 行削除 (順位 168 / 169 と同 PR で land 推奨) + +#### 完了基準 + +- `RATE_LIMIT_MARKERS` 配列化 + multi-variant check 実装 +- 旧 format + 新 format 両方で `parse_rate_limit()` が `RateLimitInfo` を正しく返す +- `cli-pr-monitor` 実行時に新 format の CR rate-limit を `RateLimitOutcome::Parked` で検出 +- silent regression を test で 1 件以上検出できる構造 (= 単一 marker に戻すと test 失敗) + +#### 詰まっている箇所 + +format パースの time prefix variant が複雑になる可能性あり (`Please wait N minutes` vs `More reviews will be available in N minutes`)。Effort M 想定だが parsing 戦略次第で実装難度が変動する。順位 168 と同時着手で fixture-driven 実装が現実的。 + +--- + +### CR rate-limit detection integration test — 新旧両フォーマット対応 fixture 追加 (PR #182 T2-#1 採用) ★ Bundle CR-RL + +> **動機**: 順位 167 (`RATE_LIMIT_MARKER` 更新) と対になる regression gate。既存 6 fixture (lines 1298-1370) は全て旧フォーマット (`Rate limit exceeded`) のみで、CR の format 変更により無効化される構造的 silent regression リスクを抱えていた。新 format fixture を test に追加することで、将来 CR が format を変更しても test が早期検出する protective layer を確立する。 +> +> **本タスクの位置づけ**: PR #182 post-merge-feedback Tier 2 #1 採用 (Severity High / Frequency Medium / Effort S / Adoption Risk None、2026-05-29 ユーザー承認)。順位 167 と pair、同 PR での実装推奨。Bundle CR-RL (順位 167 + 本 entry + 順位 169) の test 層。 +> +> **参照**: `.claude/feedback-reports/182.md` Tier 2 #1、`src/check-ci-coderabbit/src/main.rs` の `#[cfg(test)]` モジュール (既存 fixture 配置先)、順位 167 設計決定との pair +> +> **実行優先度**: 🔧 **Tier 2** — Effort S。順位 167 と同 PR で 1 day 程度を目安。 + +#### 設計決定 (案) + +- **fixture variant**: + 1. **新 format (HTML マーカー + Review limit reached)**: PR #182 で観測した実 body の minimum reproduction (`` + `## Review limit reached` + 数 minutes and seconds + credit warning 部分) + 2. **新 format (credit warning なし)**: rate-limit のみで credit 文言なし variant + 3. **新 + 旧 format 共存**: 同一 PR 内に旧 marker comment と新 marker comment が混在する場合 (CR の format 移行期に発生しうる) +- **memory `feedback_test_dry_antipattern`**: 各 variant 独立 setup、共通 helper 化しない (fixture body は format! ではなく直接記述) +- **assert 観点**: `is_rate_limit_comment()` が新 format で true を返す + `parse_rate_limit()` が `RateLimitInfo` を返し reset 時刻 (unix epoch) が正しい + +#### 作業計画 + +- [ ] `#[cfg(test)]` モジュールに新 format fixture 2-3 variant を追加 (順位 167 の marker 配列化と同 commit) +- [ ] 既存 6 fixture (旧 format) を維持 = backward compat の regression gate +- [ ] cargo test で pass 確認、意図的に時刻パース logic を旧 prefix のみに戻して新 fixture test が落ちるか手動検証 +- [ ] silent regression: marker 配列から HTML マーカーを削除 → 新 fixture test 失敗、を確認 +- [ ] 本エントリ削除 + todo-summary.md 行削除 (順位 167 / 169 と同 PR で land) + +#### 完了基準 + +- 新 format fixture が test 配列に追加 (2-3 variant) +- 既存 6 fixture が変更なく pass 継続 (regression なし) +- 新 + 旧両方の `is_rate_limit_comment()` / `parse_rate_limit()` 経路が test で carry-through +- silent regression を test で 1 件以上検出できる構造 + +#### 詰まっている箇所 + +なし。順位 167 の marker 配列化が完了すれば fixture 追加は機械的作業。 + +--- + +### ADR-018 / ADR-034 に CR rate-limit format evolution と検出ロジック同期戦略を codify (PR #182 T3-#1 採用) ★ Bundle CR-RL + +> **動機**: 順位 167 で marker 配列化 + multi-variant 対応を実装するが、CR が今後さらに format を変更する場合に同じ silent regression パターンが再発する可能性が高い (CR は外部 SaaS で format は CR 側の都合で変わる)。永続 layer (ADR) に「既知 format 一覧 + 検出 logic 更新手順」を codify することで将来の maintainer が同じ trap に落ちない構造的予防策。 +> +> **本タスクの位置づけ**: PR #182 post-merge-feedback Tier 3 #1 採用 (Severity Medium / Frequency Medium / Effort XS / Adoption Risk None、2026-05-29 ユーザー承認)。順位 167 + 168 と同 commit での ADR 追記が analyzer 推奨。Bundle CR-RL の docs 層。 +> +> **参照**: `.claude/feedback-reports/182.md` Tier 3 #1、`docs/adr/adr-034-coderabbit-auto-monitoring.md` (line 64 で旧 marker 記述あり、第一候補)、`docs/adr/adr-018-pr-monitor-takt-migration.md` (lines 185-186 で `RateLimitOutcome::Parked` 設計、旧 marker 前提)、順位 167 / 168 の実装 + +#### 設計決定 (案) + +ADR-034 (第一候補) に以下を追記: + +- **既知 CR rate-limit format 一覧** (実観測ベース、format 変更時に append): + 1. 旧 format (〜2026 年初頃): `Rate limit exceeded\nPlease wait N minutes and S seconds before requesting another review` + 2. 新 format (PR #182 で観測、2026-05-29 時点): `` (HTML マーカー) + `## Review limit reached` + `More reviews will be available in N minutes and S seconds` +- **検出 logic 更新手順** (CR が format を変更した場合): + 1. PR 観測 → marker drift で `is_rate_limit_comment()` が常時 false を返す symptom (= 30+ 分 polling 継続) を発見 + 2. `gh api issues//comments` で walkthrough body を grep、新 marker を特定 + 3. `RATE_LIMIT_MARKERS` 配列に追加、`rate_limit_event_time()` の time prefix variant を追加 + 4. 新 format fixture を `#[cfg(test)]` に追加 (順位 168 と同 pattern) + 5. ADR-034 § 既知 format 一覧に append +- **HTML マーカー優先**: walkthrough comment の HTML マーカー (``) は heading 文言や本文より stable な可能性が高いため、検出優先順位を明示 + +ADR-018 lines 185-186 については、旧 marker 記述を「順位 167 で multi-variant 対応済、詳細は ADR-034 を参照」に書き換える。 + +#### 作業計画 + +- [ ] `docs/adr/adr-034-coderabbit-auto-monitoring.md` の line 64 周辺に「既知 format 一覧」section を新設、旧 + 新 format を記載 +- [ ] 同 ADR に「検出 logic 更新手順」section を新設、6 step の標準手順を記述 +- [ ] `docs/adr/adr-018-pr-monitor-takt-migration.md` lines 185-186 の rate-limit 表 description を「順位 167 で multi-variant 対応、詳細は ADR-034 参照」に更新 +- [ ] markdownlint clean 確認 +- [ ] 本エントリ削除 + todo-summary.md 行削除 (順位 167 / 168 と同 PR で land) + +#### 完了基準 + +- ADR-034 に既知 format 一覧 + 検出 logic 更新手順が codify される +- ADR-018 lines 185-186 が現実の実装状態と整合 (multi-variant 参照) +- 将来 CR format 変更時に reviewer / Claude が ADR から逆引き可能になる +- markdownlint clean + +#### 詰まっている箇所 + +なし。Effort XS、ADR の section 追記 + 既存表更新のみ。 + +--- + ## 既知課題 (記録のみ、本セッションで未対応) (現時点で本ファイルへの既知課題は無し。docs/todo8.md 末尾の post-merge-feedback workflow stale marker 問題を参照。) From e1a888ed3b6ad15b93e3f542480c04c17c18a862 Mon Sep 17 00:00:00 2001 From: aloekun Date: Fri, 29 May 2026 14:18:14 +0900 Subject: [PATCH 2/2] =?UTF-8?q?docs(adr):=208=20ADR=20=E3=81=AE=20ephemera?= =?UTF-8?q?l=20todo=20=E5=8F=82=E7=85=A7=E3=82=92=20permanent=20reference?= =?UTF-8?q?=20=E3=81=AB=E7=BD=AE=E6=8F=9B=20(A01=20fix=E3=80=81Cross-File?= =?UTF-8?q?=20Reference=20Lifecycle=20=E9=81=95=E5=8F=8D=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #182 Phase B dogfood で検出された finding WR-2026-05-29-A01 (Severity High、Category adr-alignment) の修正。 8 永続 ADR が docs/todo*.md の section / 順位 N / Phase A-F 等の ephemeral artifact を直接参照しており、 docs-governance.md § Retirement Workflow で todo entry が削除された際に silent dead pointer 化する systemic documentation drift の構造修正。 修正方針 (analyzer 推奨 3 strategy): 1. ADR cross-references — 別 ADR に decision がある場合 2. PR # references — git log で origin が trackable な場合 3. Inlined constraints — detail が小さい場合 各 ADR の修正: - ADR-022 line 197: parenthetical pointer 削除 (operational guideline は self-contained で完結) - ADR-023 lines 54, 86: "docs/todo.md or PR description" → "PR description" (permanent artifact のみに集約) - ADR-028 line 186: "docs/todo.md #7" → "PR #59 で land、PR #62 で global skill 移管" - ADR-029 lines 191, 240, 266: task pointer 削除 + ADR-030 supersede note (本 ADR は ADR-030 partial supersede 対象、実装系譜は ADR-030 に集約) - ADR-030 line 417: Phase B-F section pointer → 各 Phase の land 済 PR # (PR #75/77/80/154) を直接列挙、 Phase E/F は priority table 参照 (specific 順位 番号は避ける) - ADR-031 line 270: Phase A-F section pointer → PR #182 + priority table (順位 8 は trackable level の言及) - ADR-033 line 111: grep procedure hardcoded list (todo.md/2/3) → glob (todo*.md) 本 ADR land 時から todo4-9 が追加されており hardcode list は既に stale - ADR-034: "todo-summary.md / todo4.md エントリ" section + "新セッションで最初に確認すべきこと" を全面再構成、4 component の land 状況を PR # primary table 化 (旧 順位 42 = PR #113 等)、 新セッション checklist を ADR-018 + memory + grep ベースに置換 修正外 (operational reference として保持): - ADR-031 lines 79, 84, 96, 121, 185, 189-191, 205, 207, 240, 242, 251, 302: workflow が todo.md に書き込む / セクション作成する behavior 記述 (pointer ではない operational description) - ADR-033 lines 1, 11, 24, 93, 100, 130, 131: ADR 本体が todo.md 管理がテーマのため intrinsic - ADR-034 lines 195-198 (Bundle b との関係 table): 順位 N と PR # / Bb-N が pair で書かれているため permanent reference (PR #) が常にあり、dead pointer リスクなし --- ...22-automation-responsibility-separation.md | 2 +- .../adr-023-coderabbit-reject-thread-skill.md | 4 +-- docs/adr/adr-028-pnpm-create-pr-gate.md | 2 +- ...dr-029-post-merge-feedback-auto-trigger.md | 6 ++-- ...r-030-deterministic-post-merge-feedback.md | 13 +++++---- docs/adr/adr-031-weekly-review-pipeline.md | 12 ++++---- .../adr-033-todo-numbering-simplification.md | 4 ++- .../adr/adr-034-coderabbit-auto-monitoring.md | 29 +++++++++++-------- 8 files changed, 40 insertions(+), 32 deletions(-) diff --git a/docs/adr/adr-022-automation-responsibility-separation.md b/docs/adr/adr-022-automation-responsibility-separation.md index 774dbe7..70f58a8 100644 --- a/docs/adr/adr-022-automation-responsibility-separation.md +++ b/docs/adr/adr-022-automation-responsibility-separation.md @@ -194,7 +194,7 @@ external reviewer が参照する対象 (PR 上の commit 履歴) は不変で - `gh pr list --head --state open --json number` で bookmark が open PR に紐付いているか確認 - cli-pr-monitor は stage 間 state で PR 番号を保持済み (`src/cli-pr-monitor/src/stages/push.rs` 参照) -- interactive Claude Code は `jj describe` / ファイル edit 連続実行の前に上記チェックを入れる運用に切り替える (実装タスクは docs/todo.md 参照) +- interactive Claude Code は `jj describe` / ファイル edit 連続実行の前に上記チェックを入れる運用に切り替える #### 本原則の適用開始 diff --git a/docs/adr/adr-023-coderabbit-reject-thread-skill.md b/docs/adr/adr-023-coderabbit-reject-thread-skill.md index 826c022..5d096b1 100644 --- a/docs/adr/adr-023-coderabbit-reject-thread-skill.md +++ b/docs/adr/adr-023-coderabbit-reject-thread-skill.md @@ -51,7 +51,7 @@ PR #44 で 1 回実施した。ADR-019 の運用が普通に回れば、今後 - うち takt analyze が `not_applicable` として理由書きした件数 - 人間が手動で reply + resolve した件数 -計測方法: 毎回の PR 作業終了時に docs/todo.md or PR description に `[CR-reject: N件]` のようなタグを残す (簡易カウント)。 +計測方法: 毎回の PR 作業終了時に PR description に `[CR-reject: N件]` のようなタグを残す (簡易カウント。PR description は permanent artifact なのでカウント履歴が retire でも残る)。 ### 正式採用条件 (2026-07-31 再評価) @@ -83,7 +83,7 @@ PR #44 で 1 回実施した。ADR-019 の運用が普通に回れば、今後 ### 試験運用中の運用 - PR #44 で確立した 2 ステップ手順を手動で継続 -- 発火するたびに docs/todo.md または PR description にカウントを記録 +- 発火するたびに PR description にカウントを記録 (permanent artifact なので retire でも履歴が残る) - 2026-07-31 に再評価 PR を立てる (本 ADR の status 更新) ### 参照する他 ADR diff --git a/docs/adr/adr-028-pnpm-create-pr-gate.md b/docs/adr/adr-028-pnpm-create-pr-gate.md index 4926a70..01a5f9e 100644 --- a/docs/adr/adr-028-pnpm-create-pr-gate.md +++ b/docs/adr/adr-028-pnpm-create-pr-gate.md @@ -183,7 +183,7 @@ interactive session での PR 作成フロー: ## 次ステップ (スコープ外、PR-B 以降で対応) - **PR-B (実装済)**: `.claude/settings.json` に `permissions.ask` 4 パターンを追加して二次防衛層を実装 + `scripts/prepare-pr-body.ps1` で PR body を一時ファイル化する helper を整備 -- **PR-D (`docs/todo.md` #7)**: `prepare-pr` skill で「ドラフト提示 → 明示承認 → 実行」フローを標準化 +- **PR-D (PR #59 で land、PR #62 で global skill に移管)**: `prepare-pr` skill で「ドラフト提示 → 明示承認 → 実行」フローを標準化 - **運用レビュー**: 2026-07 に二次防衛層の発火頻度を計測。毎回 prompt 応答が形骸化していないか確認 ## 参照 diff --git a/docs/adr/adr-029-post-merge-feedback-auto-trigger.md b/docs/adr/adr-029-post-merge-feedback-auto-trigger.md index bb8a236..6515110 100644 --- a/docs/adr/adr-029-post-merge-feedback-auto-trigger.md +++ b/docs/adr/adr-029-post-merge-feedback-auto-trigger.md @@ -188,7 +188,7 @@ hooks-stop-feedback-dispatch が pending file を読み取る際の分岐表: Rust 側の実装順序は rust-lang/rust の [#131072](https://github.com/rust-lang/rust/pull/131072) / [#138133](https://github.com/rust-lang/rust/pull/138133) で 2024-2025 に変更されており、信頼性のため non-atomic を先に試行、失敗時のみ POSIX semantics 版へ fallback する挙動になっている点にも留意。 -本 ADR が「atomic rename で十分、ロック不要」と結論する前提は「Windows 10 1607+ / NTFS」が成り立つ本プロジェクト環境に限る。派生プロジェクトへバックポートする際は環境を再確認すること。実装 (task 1-B) 時の action item は docs/todo.md 1-B を参照。 +本 ADR が「atomic rename で十分、ロック不要」と結論する前提は「Windows 10 1607+ / NTFS」が成り立つ本プロジェクト環境に限る。派生プロジェクトへバックポートする際は環境を再確認すること。 ### additionalContext 構造化フォーマット @@ -237,7 +237,7 @@ commit description / bookmark 名 / PR title/body への介入は一切発生し ## 実装タスク -詳細な実装手順は `docs/todo.md` の「マージ後フィードバックの定常化」セクションを参照。本 ADR は仕様のみを規定する。 +本 ADR の実装は ADR-030 (Supersedes ADR-029 partial) で再設計され、最終形は同 ADR § 実装タスクおよび cli-merge-pipeline / takt facets 関連 PR を参照。本 ADR の当初の task 内訳は以下: - **1-B**: cli-merge-pipeline の `"ai"` 分岐を pending file 書き込みに置き換え - **1-C**: `hooks-stop-feedback-dispatch` 新規 exe の追加 + Stop hook 登録 @@ -263,7 +263,7 @@ commit description / bookmark 名 / PR title/body への介入は一切発生し ### 将来の展望 - 取りこぼしが問題化したらディレクトリベースのキュー (`.claude/post-merge-feedback/.json`) へ移行 (schema_version bump を伴う) -- dogfood で問題なければ ADR-014 の試験運用ステータスを本採用化 (docs/todo.md の 1-F タスク) +- dogfood で問題なければ ADR-014 の試験運用ステータスを本採用化 (ADR-030 が ADR-014 を full supersede したことで本 line item は実質完了済) - 派生プロジェクト (takt-test-vc 等) へバックポート ## References diff --git a/docs/adr/adr-030-deterministic-post-merge-feedback.md b/docs/adr/adr-030-deterministic-post-merge-feedback.md index f1d7746..fd40389 100644 --- a/docs/adr/adr-030-deterministic-post-merge-feedback.md +++ b/docs/adr/adr-030-deterministic-post-merge-feedback.md @@ -414,14 +414,15 @@ PR #91 で実証された pathological loop: ## 実装タスク -詳細な実装手順は [`docs/todo.md`](../todo.md) の「マージ後フィードバック機構の決定論化」セクション Phase B-F を参照。本 ADR は仕様のみを規定する。 +本 ADR は仕様のみを規定し、各 Phase の実装は以下の PR で land 済: -- **Phase A**: 本 ADR 起案 (PR 1) — 設計のみ -- **Phase B**: takt workflow + 4 facets — L1 Floor (PR 2) -- **Phase C**: UserPromptSubmit hook — L2 Recovery (PR 3) +- **Phase A**: 本 ADR 起案 — 設計のみ (PR #75 で land) +- **Phase B**: takt workflow + 4 facets — L1 Floor (PR #77 で land) +- **Phase C**: UserPromptSubmit hook — L2 Recovery (PR #80 で land) - **Phase D**: 廃止 (skill enrichment 不要、本 ADR 「検討した選択肢 D」参照) -- **Phase E**: 旧機構廃止 (PR 4 — Phase B/C dogfood 数回後) -- **Phase F**: dogfood 検証 (PR 4 マージ後 / 継続観察) +- **Phase D-7 (補完)**: L1 Drop guard + L2 orphan reaper + ADR-030 spec (PR #154 で land、Bundle c-1) +- **Phase E**: 旧機構廃止 (Phase B/C dogfood 数回後の判断) — 進捗は `docs/todo-summary.md` の priority table で trackable +- **Phase F**: dogfood 検証 — Phase E land 後の継続観察として priority table で trackable ## 影響 diff --git a/docs/adr/adr-031-weekly-review-pipeline.md b/docs/adr/adr-031-weekly-review-pipeline.md index 9ced644..e5592b1 100644 --- a/docs/adr/adr-031-weekly-review-pipeline.md +++ b/docs/adr/adr-031-weekly-review-pipeline.md @@ -267,13 +267,13 @@ ADR-030 で確立した「機械的 = Rust / AI 並列 = takt / ask-based = skil ## 実装タスク -詳細な実装手順は [`docs/todo.md`](../todo.md) の「週次プロジェクト全体レビューパイプラインの導入」セクション Phase A-F を参照。本 ADR は仕様のみを規定する。 +本 ADR は仕様のみを規定し、各 Phase の land 状況は以下: -- **Phase A**: 本 ADR 起案 (PR 1) — 設計のみ -- **Phase B**: takt workflow + 4 facets + architecture-reviewer persona (PR 2) -- **Phase C**: skill + SessionStart hook 拡張 (PR 3) -- **Phase D**: e2e 検証 (PR 3 マージ後 / PR 4 起案前) -- **Phase E**: 試験運用 dogfood (PR 4 — 1〜2 週運用 + ADR-031 ステータス更新) +- **Phase A**: 本 ADR 起案 — 設計のみ (PR #177 を起源とする bundle、ADR 本体 land) +- **Phase B**: takt workflow + 4 facets + architecture-reviewer persona (PR #182 で land、persona は既存 `persona_sessions.json` 登録分を再利用) +- **Phase C**: skill + SessionStart hook 拡張 — 未着手 (Phase B dogfood 後の判断、todo-summary 順位 8 で trackable) +- **Phase D**: e2e 検証 — Phase C land 後 (todo-summary 順位 8 entry に内包) +- **Phase E**: 試験運用 dogfood (1〜2 週運用 + ADR-031 ステータス更新) — Phase D 後 - **Phase F**: 自動化検討 (本採用後の任意 — schedule スキル経由の cron 化) ## アンチパターン diff --git a/docs/adr/adr-033-todo-numbering-simplification.md b/docs/adr/adr-033-todo-numbering-simplification.md index f15cc45..a3afe10 100644 --- a/docs/adr/adr-033-todo-numbering-simplification.md +++ b/docs/adr/adr-033-todo-numbering-simplification.md @@ -108,11 +108,13 @@ migration 完了の判定: ```sh # 推奨実行順序サマリー table の外側で `順位 X` (数値・英字 placeholder 含む) が使われていないこと -grep -nE "順位 [0-9A-Za-z_-]+" docs/todo.md docs/todo2.md docs/todo3.md \ +grep -nE "順位 [0-9A-Za-z_-]+" docs/todo*.md \ | grep -vE "推奨実行順序サマリー|^[^:]+:[0-9]+:\| [0-9]+ \|" # 期待: 0 行 (table 列以外で `順位 X` が使われていない) # 注: 数値だけでなく英字 placeholder (例: `順位 X`、`順位 N`) も検出対象。 # ADR の本文中で「絶対番号を示唆する placeholder を本文に書かない」方針を機械検証する。 +# todo*.md は今後追加されうるため glob で全件対象 (本 ADR land 時は todo.md/2/3 のみだったが、 +# todo4-9 等が後から追加されており、hardcode list は stale 化する構造的問題を回避)。 ``` ## priority table 運用ルール (PR #111 post-merge-feedback で追加) diff --git a/docs/adr/adr-034-coderabbit-auto-monitoring.md b/docs/adr/adr-034-coderabbit-auto-monitoring.md index cd90b7f..df7ec34 100644 --- a/docs/adr/adr-034-coderabbit-auto-monitoring.md +++ b/docs/adr/adr-034-coderabbit-auto-monitoring.md @@ -147,22 +147,27 @@ PR #99 セッションで以下の運用痛が観測された: - `project_coderabbit_rate_limit_overlay.md`: rate-limit 検出ロジックの根拠 (PR #99 で実証された walkthrough overlay 仕様) - `project_coderabbit_auto_resolve.md`: `resolved:` reply での auto-resolve 挙動 -### todo-summary.md / todo4.md エントリ +### Bundle a component の land 状況 (2026-05-29 update) -- `docs/todo-summary.md` 推奨実行順序サマリー: 順位 42-45 (Bundle a 4 component) -- `docs/todo4.md`: - - cli-pr-monitor の rate-limit auto-retry + `@coderabbitai review` auto-trigger 実装 (PR #99 T2-4) - - ADR-018 / ADR-009 の rate-limit retry ポリシー明文化 (PR #99 T3-5) - - 本 ADR で追加される #D-1 / #D-3 entry も別セッションで todo4.md に追記が必要 +Bundle a の 4 component は以下のように消化された: + +| component | 状態 | land 経路 | +|---|---|---| +| rate-limit auto-retry 実装 (旧 順位 42) | ✅ land 済 | **PR #113 (Bb-1)** で実装、PR #115 dogfood で実証 | +| ADR-018 / ADR-009 retry policy 明文化 (旧 順位 43) | ✅ 部分達成 | ADR-018 追記 (2026-05-06)、残作業は ADR-009 navigation 注記 | +| #D-1 (gh CLI 規則を `~/.claude/rules/common/git-workflow.md` に追記) | 別経路で完了 | 計画書消化、本 ADR 当初 entry は retire 済 | +| #D-3 (`check-ci-coderabbit --list-findings` Rust モード) | 状況依存 | todo entry 化されている場合 land 状況を確認 (本 ADR では trackable な PR # を直接保持しない方針) | + +詳細な進捗 trackable な permanent reference は本 ADR § "Bundle b との関係" 表 (line 188+) を参照。`docs/todo*.md` の `順位 N` entry は ephemeral artifact であり、entry 削除時に本セクションの言及が dead-pointer 化しないよう PR # primary 引用を優先する。 ### 新セッションで最初に確認すべきこと -1. `git log --oneline -5` で master の最新状態を確認 (Bundle Z Phase 2/3 が land 済か等) -2. `docs/todo-summary.md` の Bundle a 関連 entry (順位 42-45) を読む -3. `docs/todo4.md` の Bundle a 詳細 entry を読む -4. 本 ADR (ADR-034) を読む -5. memory `project_coderabbit_rate_limit_overlay.md` を読む -6. **どの Sub-PR を実施するか確認**: Sub-PR 1 (#D-1 + #D-3) と Sub-PR 2 (rate-limit auto-retry + ADR-018 改訂) のどちらから着手か (推奨は Sub-PR 1 先行) +1. `git log --oneline -5` で master の最新状態を確認 (Bundle Z Phase 2/3 / Bundle b / Bundle CR-RL 等の land 済 PR を把握) +2. 本 ADR (ADR-034) を読む — 特に "Bundle b との関係" 表で Bundle a の現状を把握 +3. ADR-018 (cli-pr-monitor takt 移行) を読む — rate-limit retry policy の現状実装 +4. memory `project_coderabbit_rate_limit_overlay.md` を読む +5. **未着手 component** を確認: 旧 順位 46 (integration test) / 旧 順位 49 (parse_findings error-path test infra) が `docs/todo*.md` 系列に entry を持つか `grep "整合性 test\|parse_findings" docs/todo*.md` で確認 +6. **どの Sub-PR を実施するか確認**: Bundle a 残作業 (Sub-PR 2 縮小版) または Bundle CR-RL (順位 167-169、本 ADR 採用ロジックと隣接領域) のどちらから着手か (Bundle CR-RL は format drift 修正の優先度が高い) ### 完了条件