docs(adr): セッション 247510ea 由来の設計を ADR 集約 (ADR-028 新設 + ADR-021/024/019 更新) - #56
Conversation
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 39 minutes and 18 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (6)
📝 WalkthroughWalkthrough複数のアーキテクチャ決定記録(ADR)とTODOドキュメントを更新した。ADR-024を試験運用から正式採用に移行し、ADR-021・ADR-019を拡張し、新たにADR-028を追加した。併せてプロジェクトのタスク優先度と実装計画を再整理した。 Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/adr/adr-028-pnpm-create-pr-gate.md`:
- Around line 59-60: The doc contains contradictory descriptions of precedence
between permissions.ask and permissions.allow; decide which behavior is correct
and make the text consistent: if ask should override allow, update the sentence
referencing permissions.allow to state that permissions.ask takes precedence and
adjust any examples and the explanation around the auto-mode/permission prompt
accordingly; if allow should override ask, change the sentence that claims ask
is prioritized (and the auto-mode behavior) to reflect that allow disables ask,
and update both the earlier paragraph referencing
permissions.ask/permissions.allow and the later paragraph (the block around the
other contradictory description) so all mentions and examples consistently use
the chosen precedence for permissions.ask and permissions.allow. Ensure both
occurrences (the earlier and the later paragraph) and any examples are aligned
with the chosen rule.
- Around line 159-160: Update the PR-D task reference in the ADR text so it
matches the current TODO numbering: change the mention "PR-D (docs/todo.md `#10`)"
to the correct "PR-D (docs/todo.md `#9`)" and ensure the surrounding description
("prepare-pr skill で「ドラフト提示 → 明示承認 → 実行」フローを標準化") still refers to the same PR-D
identifier.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: bd7aaf3f-3c3b-4069-b8c2-9b2f4b91079b
📒 Files selected for processing (6)
CLAUDE.mddocs/adr/adr-019-coderabbit-review-hybrid-policy.mddocs/adr/adr-021-jj-change-detection-principles.mddocs/adr/adr-024-shared-jj-helpers-library.mddocs/adr/adr-028-pnpm-create-pr-gate.mddocs/todo.md
… 更新) docs/todo.md の「セッション 247510ea 由来: 整備タスク群 (PR-A)」を反映。 - ADR-028 (新規): 外部可視成果物の生成コマンド (pnpm create-pr / pnpm merge-pr 等) の実行ゲート - ADR-021 (原則 5 追加): bookmark 検出標準 (BOOKMARK_SEARCH_REVSETS / TRUNK_BOOKMARKS) + option A/B/C 比較 - ADR-024 (本採用に格上げ): 3 箇所 port 完了 (cli-push-runner / cli-merge-pipeline / cli-pr-monitor) により早期達成 - ADR-019 (制約・可換性追記): CodeRabbit 無料枠 1h 3 回制約、ハイブリッド再定義、M5 不採用論拠 - CLAUDE.md: ADR-028 追加、ADR-024 試験運用マーカー除去 - docs/todo.md: PR-A タスク削除 + 後続リナンバー (PR-B/C/D → #7/8/9) refs: PR #54, PR #55, セッション 247510ea-3f24-4b87-8f68-3c860e1b1b4e
…プト化 + prepare-pr-body helper 新設 (PR-B) ADR-028 の二次防衛層を実装。`permissions.ask` の "ask > allow" precedence により、auto mode でも毎回確認プロンプトが発火するようになる。 - `.claude/settings.json`: `permissions.ask` に 4 パターン追加 - `Bash(pnpm create-pr*)`, `Bash(pnpm merge-pr*)` - `Bash(*cli-pr-monitor.exe*)`, `Bash(*cli-merge-pipeline.exe*)` - `.claude/settings.local.json.template`: `pnpm create-pr` / `merge-pr` の allow 登録を削除 (ADR-028 の二層防衛と矛盾する誤解を招くため) - `scripts/prepare-pr-body.ps1` 新規: stdin から PR body を受け取り `.tmp-pr-body.md` に UTF-8 (BOM なし) で書き出す helper。`-Cleanup` で削除 - `package.json`: `prepare-pr-body` / `prepare-pr-body:cleanup` スクリプト追加 - `.gitignore`: `.tmp-pr-body.md` を除外 (一時ファイル) - `docs/adr/adr-028-pnpm-create-pr-gate.md`: PR-B 実装済みに反映、PR-D 参照番号を更新 - `docs/todo.md`: PR-B タスク削除 + 後続リナンバー (PR-C → #7, PR-D → #8) smoke test: - `echo "日本語" | pnpm prepare-pr-body` で UTF-8 が保持されることを確認 - `pnpm prepare-pr-body:cleanup` で `.tmp-pr-body.md` 削除動作を確認 refs: ADR-028, PR #56 (PR-A, ADR 集約)
…プト化 + prepare-pr-body helper 新設 (PR-B) ADR-028 の二次防衛層を実装。`permissions.ask` の "ask > allow" precedence により、auto mode でも毎回確認プロンプトが発火するようになる。 - `.claude/settings.json`: `permissions.ask` に 4 パターン追加 - `Bash(pnpm create-pr*)`, `Bash(pnpm merge-pr*)` - `Bash(*cli-pr-monitor.exe*)`, `Bash(*cli-merge-pipeline.exe*)` - `.claude/settings.local.json.template`: `pnpm create-pr` / `merge-pr` の allow 登録を削除 (ADR-028 の二層防衛と矛盾する誤解を招くため) - `scripts/prepare-pr-body.ps1` 新規: stdin から PR body を受け取り `.tmp-pr-body.md` に UTF-8 (BOM なし) で書き出す helper。`-Cleanup` で削除 - `package.json`: `prepare-pr-body` / `prepare-pr-body:cleanup` スクリプト追加 - `.gitignore`: `.tmp-pr-body.md` を除外 (一時ファイル) - `docs/adr/adr-028-pnpm-create-pr-gate.md`: PR-B 実装済みに反映、PR-D 参照番号を更新 - `docs/todo.md`: PR-B タスク削除 + 後続リナンバー (PR-C → #7, PR-D → #8) smoke test: - `echo "日本語" | pnpm prepare-pr-body` で UTF-8 が保持されることを確認 - `pnpm prepare-pr-body:cleanup` で `.tmp-pr-body.md` 削除動作を確認 refs: ADR-028, PR #56 (PR-A, ADR 集約)
…プト化 + prepare-pr-body helper 新設 (PR-B) (#57) ADR-028 の二次防衛層を実装。`permissions.ask` の "ask > allow" precedence により、auto mode でも毎回確認プロンプトが発火するようになる。 - `.claude/settings.json`: `permissions.ask` に 4 パターン追加 - `Bash(pnpm create-pr*)`, `Bash(pnpm merge-pr*)` - `Bash(*cli-pr-monitor.exe*)`, `Bash(*cli-merge-pipeline.exe*)` - `.claude/settings.local.json.template`: `pnpm create-pr` / `merge-pr` の allow 登録を削除 (ADR-028 の二層防衛と矛盾する誤解を招くため) - `scripts/prepare-pr-body.ps1` 新規: stdin から PR body を受け取り `.tmp-pr-body.md` に UTF-8 (BOM なし) で書き出す helper。`-Cleanup` で削除 - `package.json`: `prepare-pr-body` / `prepare-pr-body:cleanup` スクリプト追加 - `.gitignore`: `.tmp-pr-body.md` を除外 (一時ファイル) - `docs/adr/adr-028-pnpm-create-pr-gate.md`: PR-B 実装済みに反映、PR-D 参照番号を更新 - `docs/todo.md`: PR-B タスク削除 + 後続リナンバー (PR-C → #7, PR-D → #8) smoke test: - `echo "日本語" | pnpm prepare-pr-body` で UTF-8 が保持されることを確認 - `pnpm prepare-pr-body:cleanup` で `.tmp-pr-body.md` 削除動作を確認 refs: ADR-028, PR #56 (PR-A, ADR 集約)
cli-pr-monitor / cli-merge-pipeline / cli-push-runner の 3 クレートで重複していた bookmark 検出ロジックを ADR-024 (本採用) に従い `src/lib-jj-helpers/` に集約。
## 新クレート
- `src/lib-jj-helpers/` 新設 (ADR-012 命名規約、ADR-026 workspace 準拠)
- 公開 API:
- 定数: `TRUNK_BOOKMARKS`, `BOOKMARK_SEARCH_REVSETS`
- 関数: `is_trunk_bookmark`, `parse_bookmark_list_output`, `query_bookmarks_at`, `select_from_revsets`, `get_jj_bookmarks`
- 型: `StderrMode { Silent, Piped(fn(&str)) }`
- 14 unit tests (fallback_log コールバック検証 2 件を新規追加)
## 設計方針
- **stderr ハンドリングを `StderrMode` で選択**: cli-pr-monitor は `Silent` (CI ログ汚染回避)、cli-merge-pipeline は `Piped(log_info)` (診断情報を出す)
- **log 関数は `fn(&str)` ポインタで注入**: 各クレート固有 prefix (`[post-pr-monitor]` / `[merge-pipeline]`) を崩さない
- **fallback_log は `Option<fn(&str)>`**: `@-` や `@--` で hit した場合のみ通知 (noise 抑制)
## 呼び出し側差し替え
- cli-pr-monitor (`util.rs`): `get_jj_bookmarks()` を lib 呼び出しに置換、重複テスト削除
- cli-merge-pipeline (`main.rs`): 同上、stderr は `Piped` で継続
- cli-push-runner (`push_jj_bookmark.rs`): `is_trunk_bookmark` のみ lib 借用、他ロジックは crate-local 保持 (`parse_bookmark_list_output` は `jj bookmark list` 出力用で semantics が異なる)
## 検証
- cargo test --workspace: 363 tests PASS (1 ignored)
- pnpm build:all: 全 9 exe ビルド成功
- cargo clippy: modified 4 クレートに warning なし
- 行数インパクト: +425 / -492 = net -67 行 (重複テスト集約効果)
## ADR 更新
- ADR-024: 実装フェーズを「実施済」に反映、`capture_commit_id` / `diff_is_empty` は将来 PR で段階的移設と明記
- ADR-021 原則 5: 「3 クレートで重複 → lib-jj-helpers に集約済」と完了反映
- ADR-028: PR-D 参照番号を #7 に更新 (PR-B/PR-C 完了で docs/todo.md がリナンバー)
refs: ADR-024, ADR-021, PR #56 (PR-A), PR #57 (PR-B), PR #54, PR #55
cli-pr-monitor / cli-merge-pipeline / cli-push-runner の 3 クレートで重複していた bookmark 検出ロジックを ADR-024 (本採用) に従い `src/lib-jj-helpers/` に集約。
## 新クレート
- `src/lib-jj-helpers/` 新設 (ADR-012 命名規約、ADR-026 workspace 準拠)
- 公開 API:
- 定数: `TRUNK_BOOKMARKS`, `BOOKMARK_SEARCH_REVSETS`
- 関数: `is_trunk_bookmark`, `parse_bookmark_list_output`, `query_bookmarks_at`, `select_from_revsets`, `get_jj_bookmarks`
- 型: `StderrMode { Silent, Piped(fn(&str)) }`
- 14 unit tests (fallback_log コールバック検証 2 件を新規追加)
## 設計方針
- **stderr ハンドリングを `StderrMode` で選択**: cli-pr-monitor は `Silent` (CI ログ汚染回避)、cli-merge-pipeline は `Piped(log_info)` (診断情報を出す)
- **log 関数は `fn(&str)` ポインタで注入**: 各クレート固有 prefix (`[post-pr-monitor]` / `[merge-pipeline]`) を崩さない
- **fallback_log は `Option<fn(&str)>`**: `@-` や `@--` で hit した場合のみ通知 (noise 抑制)
## 呼び出し側差し替え
- cli-pr-monitor (`util.rs`): `get_jj_bookmarks()` を lib 呼び出しに置換、重複テスト削除
- cli-merge-pipeline (`main.rs`): 同上、stderr は `Piped` で継続
- cli-push-runner (`push_jj_bookmark.rs`): `is_trunk_bookmark` のみ lib 借用、他ロジックは crate-local 保持 (`parse_bookmark_list_output` は `jj bookmark list` 出力用で semantics が異なる)
## 検証
- cargo test --workspace: 363 tests PASS (1 ignored)
- pnpm build:all: 全 9 exe ビルド成功
- cargo clippy: modified 4 クレートに warning なし
- 行数インパクト: +425 / -492 = net -67 行 (重複テスト集約効果)
## ADR 更新
- ADR-024: 実装フェーズを「実施済」に反映、`capture_commit_id` / `diff_is_empty` は将来 PR で段階的移設と明記
- ADR-021 原則 5: 「3 クレートで重複 → lib-jj-helpers に集約済」と完了反映
- ADR-028: PR-D 参照番号を #7 に更新 (PR-B/PR-C 完了で docs/todo.md がリナンバー)
refs: ADR-024, ADR-021, PR #56 (PR-A), PR #57 (PR-B), PR #54, PR #55
cli-pr-monitor / cli-merge-pipeline / cli-push-runner の 3 クレートで重複していた bookmark 検出ロジックを ADR-024 (本採用) に従い `src/lib-jj-helpers/` に集約。
## 新クレート
- `src/lib-jj-helpers/` 新設 (ADR-012 命名規約、ADR-026 workspace 準拠)
- 公開 API:
- 定数: `TRUNK_BOOKMARKS`, `BOOKMARK_SEARCH_REVSETS`
- 関数: `is_trunk_bookmark`, `parse_bookmark_list_output`, `query_bookmarks_at`, `select_from_revsets`, `get_jj_bookmarks`
- 型: `StderrMode { Silent, Piped(fn(&str)) }`
- 14 unit tests (fallback_log コールバック検証 2 件を新規追加)
## 設計方針
- **stderr ハンドリングを `StderrMode` で選択**: cli-pr-monitor は `Silent` (CI ログ汚染回避)、cli-merge-pipeline は `Piped(log_info)` (診断情報を出す)
- **log 関数は `fn(&str)` ポインタで注入**: 各クレート固有 prefix (`[post-pr-monitor]` / `[merge-pipeline]`) を崩さない
- **fallback_log は `Option<fn(&str)>`**: `@-` や `@--` で hit した場合のみ通知 (noise 抑制)
## 呼び出し側差し替え
- cli-pr-monitor (`util.rs`): `get_jj_bookmarks()` を lib 呼び出しに置換、重複テスト削除
- cli-merge-pipeline (`main.rs`): 同上、stderr は `Piped` で継続
- cli-push-runner (`push_jj_bookmark.rs`): `is_trunk_bookmark` のみ lib 借用、他ロジックは crate-local 保持 (`parse_bookmark_list_output` は `jj bookmark list` 出力用で semantics が異なる)
## 検証
- cargo test --workspace: 363 tests PASS (1 ignored)
- pnpm build:all: 全 9 exe ビルド成功
- cargo clippy: modified 4 クレートに warning なし
- 行数インパクト: +425 / -492 = net -67 行 (重複テスト集約効果)
## ADR 更新
- ADR-024: 実装フェーズを「実施済」に反映、`capture_commit_id` / `diff_is_empty` は将来 PR で段階的移設と明記
- ADR-021 原則 5: 「3 クレートで重複 → lib-jj-helpers に集約済」と完了反映
- ADR-028: PR-D 参照番号を #7 に更新 (PR-B/PR-C 完了で docs/todo.md がリナンバー)
refs: ADR-024, ADR-021, PR #56 (PR-A), PR #57 (PR-B), PR #54, PR #55
Summary
Context
docs/todo.md の「セッション 247510ea 由来: 整備タスク群 (PR-A〜PR-D)」のうち PR-A (ADR 集約) を実施。
後続 PR-B (Ask ルール + body helper) / PR-C (jj-helpers 抽出) / PR-D (prepare-pr skill) が ADR 番号を引用できる形にする起点 PR。
Test plan
References
feedback_bookmark_auto_naming.md(ユーザーフィードバック 3 点)Summary by CodeRabbit
注記: この更新は内部ドキュメント変更のみで、ユーザーが使用する機能に変更はありません。