Skip to content

test(hooks-session-start): stale_check_enabled の TOML パーステスト追加 (順位 284) - #324

Closed
aloekun wants to merge 1 commit into
masterfrom
claude/select-next-task-a9aiam
Closed

test(hooks-session-start): stale_check_enabled の TOML パーステスト追加 (順位 284)#324
aloekun wants to merge 1 commit into
masterfrom
claude/select-next-task-a9aiam

Conversation

@aloekun

@aloekun aloekun commented Jul 26, 2026

Copy link
Copy Markdown
Owner

概要

docs/claude-code-web-tasks.md の順位 284 (PR #267 post-merge-feedback T2-1 採用) を消化する。StalenessConfig.stale_check_enabled (Option<bool>) のパース経路が未テストで silent degrade (機能が黙って無効化) のリスクがあったため、regression test で固定する。

変更内容

  • src/hooks-session-start/src/hooks_config.rs
    • 既存テスト hooks_config_parses_session_start_staleness_section の fixture に stale_check_enabled = true + assert を追加
    • 未設定時に None (default-OFF、ADR-039 § 1) となることを固定する staleness_stale_check_enabled_defaults_to_none_when_omitted を新規追加
  • タスク消化に伴う行/エントリ削除 (着手フロー 3-4):
    • docs/claude-code-web-tasks.md — Batch 1 の順位 284 行
    • docs/todo-summary2.md — 順位 284 行
    • docs/todo15.md — 詳細エントリ

DoD

  • cargo test --workspace green (0 failed、hooks_config テスト 5 件 pass)
  • cargo clippy -p hooks-session-start --all-targets clean
  • push-runner パイプライン通過 (takt pre-push-review: Simplicity Review APPROVE、anomaly 0 件)

🤖 Generated with Claude Code

https://claude.ai/code/session_01JU2UF5SW8Dy76rpag9zr29


Generated by Claude Code

Summary by CodeRabbit

  • テスト

    • セッション開始時の設定で、stale_check_enabled のTOMLパースを検証するテストを追加しました。
    • 設定項目を省略した場合に、未設定として扱われることを確認するテストを追加しました。
  • ドキュメント

    • 完了済みの関連タスクを各種タスク一覧から削除しました。

- 既存 staleness fixture に stale_check_enabled = true + assert を追加
- 未設定時に None (default-OFF、ADR-039) を固定する regression test を追加
- 完了タスクの行/エントリを claude-code-web-tasks.md / todo-summary2.md / todo15.md から削除

DoD: cargo test --workspace green (0 failed) + cargo clippy -p hooks-session-start clean

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JU2UF5SW8Dy76rpag9zr29
@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: dd5c0726-278e-44d7-9cd0-52af9616b5dc

📥 Commits

Reviewing files that changed from the base of the PR and between f845f72 and 189ed22.

📒 Files selected for processing (4)
  • docs/claude-code-web-tasks.md
  • docs/todo-summary2.md
  • docs/todo15.md
  • src/hooks-session-start/src/hooks_config.rs
💤 Files with no reviewable changes (3)
  • docs/todo-summary2.md
  • docs/claude-code-web-tasks.md
  • docs/todo15.md

📝 Walkthrough

Walkthrough

stale_check_enabled の TOML パーステストに指定時・省略時の検証を追加し、対応する完了タスクを関連ドキュメントから削除しました。

Changes

stale_check_enabled パース検証

Layer / File(s) Summary
パーステストとタスク記録の更新
src/hooks-session-start/src/hooks_config.rs, docs/claude-code-web-tasks.md, docs/todo-summary2.md, docs/todo15.md
stale_check_enabled = true のパース結果として Some(true) を検証し、省略時に None となるテストを追加しました。関連する完了タスクの記録をドキュメントから削除しました。

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 主要変更である hooks-session-start の stale_check_enabled TOML パーステスト追加を具体的に表しています。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/select-next-task-a9aiam

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 PR Monitor 分析 (GitHub Actions バックストップ)

  • トリガー: issue_comment (created) / 実行 run
  • CI: CodeRabbit チェックのみ pending(Review in progress)。他に必須 CI チェックは検出されず。mergeStateStatus: UNSTABLE(pending チェックに起因)、mergeable: MERGEABLE
  • レビュー状況: CodeRabbit はレビュー未着("Currently processing new changes... please wait" のプレースホルダーのみ)。人間レビュー・他 bot レビューともに 0 件。インラインコメントも 0 件
  • Verdict: user_decision(レビュー未着のため確定判定不可。現時点で指摘 0 件・diff は単純な追加のみ)

Applicable Findings (Critical / High / Major)

該当なし(レビュー未着のため指摘自体が存在しない)

Applicable Findings (Medium 以下)

該当なし

Filtered (not applicable)

該当なし

次のアクション

  • CodeRabbit のレビュー完了を待ち、指摘が投稿された時点で本 workflow の次回起動(issue_comment イベント)で再分析する。本セッションでは待機・ポーリングは行わない。
  • diff 内容は (1) docs/todo15.md / docs/todo-summary2.md / docs/claude-code-web-tasks.md から完了済みタスク「順位284」の記述を削除、(2) src/hooks-session-start/src/hooks_config.rsstale_check_enabled のパーステスト(設定時 true / 未設定時 None=ADR-039 のデフォルト OFF)を追加、という一貫した変更でありレビュー観点での懸念は特になし。

@claude

claude Bot commented Jul 27, 2026

Copy link
Copy Markdown

gh CLI write-path 検証用のテストコメントです (gh api -X POST)。セッション環境からの書き込み経路が通ることを確認しました。


Generated by Claude Code

aloekun added a commit that referenced this pull request Aug 9, 2026
todo 順位 395。クローズ済み PR #365 のブランチを手で消したことで ADR-072 決定 3 の
除外マーカーが失われ、同じ順位が再選択された (PR #373)。決定 3 自体は設計どおりで、
ブランチの存在が着手済みマーカーである以上、浮いたブランチを定期的に片付ける場が要る。

**takt workflow には置けない。** 検出には git ls-remote / gh = ネットワークが要るが、
weekly-review.yaml は全 provider に network_access: false を課している (他 3 パイプラインは
true)。1 つの scan のためにこれを反転すると whole-tree review 6 facet すべての隔離が
緩むため、/monthly-review が cli-telemetry-report を呼ぶのと同じく skill 側 (ADR-031 の
L3 = 決定論層) に置いた。置き場所の判断基準 (ネットワークが要るか) を ADR-031 へ記録。

判定規則:
- 紐づく PR がすべて closed/merged → 削除候補
- open が 1 本でもある → 対象外 (close 後に別 PR を開く / reopen が実在する)
- PR が 1 件も無い → 対象外 (PR 未作成の作業中ブランチと区別できない)
- trunk は常に対象外 / claude/nightly-* は除外しない (除外すると順位が二度と選ばれない)
- state が未知の値 → open 扱い (保護側。誤って削除提案に載せない)

**PR は全件引かずブランチごとに --head で引く。** 総 PR 数は単調増加する一方、remote
ブランチ数は運用上小さく有界。全件方式は実装中に実際に破綻した (本リポジトリは PR が
300 件を超えており、書いた時点で既に上限に張り付いていた)。

**削除はしない。** 出力は人間がそのまま貼れる git push --delete までで、exe は実行
しない (ADR-022 / ADR-028)。ブランチ削除は外部可視かつ着手済みマーカーの破棄でもある。

**出力に wall-clock を含めない。** 同じ状態なら同じ出力にして週次 diff を取れるようにし、
「今週新たに浮いたブランチ」だけを読めるようにした。実行時刻は呼び手が記録する。

- 新規 crate src/cli-stale-branch-scan (classify = 純粋判定 / collect = fail-closed I/O)
- unit test 25 件。取得失敗・上限到達・欠損フィールドはすべて Err に倒し、0 件と報告しない
- pnpm stale-branch-scan / build:cli-stale-branch-scan (build:all にも登録)
- ADR-031 に § 残存ブランチ検出 と L2/L3 の置き場所判断基準を追記

実走: 本リポジトリで削除候補 0 件、open PR 3 本 (#320/#324/#373) を正しく対象外と判定。

weekly-review skill (別リポジトリ claude-code-skills) 側の Step 1.0 / Phase 3 追記は
本 PR に含まれない。編集は済んでいるがコミットは未実施。

--- pre-push review 対応 ---

security REJECT (High, SEC-NEW-cli-stale-branch-scan-main-L154): git の ref 名規則は
`;` バッククォート `|` `$()` を許す (git check-ref-format で実測)。push 権限を持つ誰か
(夜間/cloud harness の自動化を含む) が細工したブランチ名は、本レポートが設計として
出す「そのまま貼れる削除コマンド」経由でコピペ実行時に任意コマンドを実行し得る。
安全文字の allowlist を導入し、外れる名前には削除コマンドを生成しない。

**指摘の修正範囲は狭かったので広げた。** 同じブランチ名は削除提案表の 1 列目と
参考表 2 つにも出るため、コマンド欄だけ塞いでもバッククォート (コードスパン脱出) と
`|` (表の列構造破壊) が残る。描画の全経路を単一の branch_cell() へ通し、危険文字を
`?` へ潰したうえで印を付ける形にした。出口ごとに個別対策を足すと出口が増えたときに
同じ穴が空くため、安全文字集合の定義は 1 箇所に保つ。

simplicity (SIM-NEW-cli-stale-branch-scan-classify-L283): trunk 名を独自 hardcode して
おり lib_jj_helpers::TRUNK_BOOKMARKS からずれて develop/trunk を守れていなかった。
is_trunk_bookmark 呼び出しに変更し、push-runner-config.toml の default_branch も
追加の保護対象として読む。

test 30 件 (危険文字が 3 表いずれにも生で出ないことの回帰固定を含む)。
workspace 全体 2,000 pass / clippy clean / lint 0 error。

--- pre-push review 2 巡目 ---

simplicity needs_fix (High, SIM-NEW-cli-stale-branch-scan-main-L121): configured_trunk_branch()
が top-level default_branch しか読まないが、本リポジトリの push-runner-config.toml は
top-level をコメントアウトし [pr_size_check] / [docs_only_routing] の section override
だけで trunk 名を決めている (ADR-051 の cross-config coupling)。master は TRUNK_BOOKMARKS
に含まれるため masked だが、標準外の trunk 名を section override だけで設定している
リポジトリでは None に落ち、trunk が削除候補として貼れるコマンド付きで出得た。
cli-push-runner の effective_default_branch() と同じ top-level → section fallback へ修正。

**実 config に対する回帰テストを追加した** (--ignored)。既存 5 件は合成 TOML で分岐を
固めるだけで、指摘の起点だった「このリポジトリの実 config が section override 構成で
ある」事実を突いていない。実ファイルの構成が変わって解決不能になっても合成テストは
気づけないため、実ファイルから "master" が解決できることを値まで assert する。

test 36 件 (うち 1 件は cwd 依存の --ignored)。workspace 全体 2,005 pass / clippy clean。
aloekun added a commit that referenced this pull request Aug 9, 2026
todo 順位 395。クローズ済み PR #365 のブランチを手で消したことで ADR-072 決定 3 の
除外マーカーが失われ、同じ順位が再選択された (PR #373)。決定 3 自体は設計どおりで、
ブランチの存在が着手済みマーカーである以上、浮いたブランチを定期的に片付ける場が要る。

**takt workflow には置けない。** 検出には git ls-remote / gh = ネットワークが要るが、
weekly-review.yaml は全 provider に network_access: false を課している (他 3 パイプラインは
true)。1 つの scan のためにこれを反転すると whole-tree review 6 facet すべての隔離が
緩むため、/monthly-review が cli-telemetry-report を呼ぶのと同じく skill 側 (ADR-031 の
L3 = 決定論層) に置いた。置き場所の判断基準 (ネットワークが要るか) を ADR-031 へ記録。

判定規則:
- 紐づく PR がすべて closed/merged → 削除候補
- open が 1 本でもある → 対象外 (close 後に別 PR を開く / reopen が実在する)
- PR が 1 件も無い → 対象外 (PR 未作成の作業中ブランチと区別できない)
- trunk は常に対象外 / claude/nightly-* は除外しない (除外すると順位が二度と選ばれない)
- state が未知の値 → open 扱い (保護側。誤って削除提案に載せない)

**PR は全件引かずブランチごとに --head で引く。** 総 PR 数は単調増加する一方、remote
ブランチ数は運用上小さく有界。全件方式は実装中に実際に破綻した (本リポジトリは PR が
300 件を超えており、書いた時点で既に上限に張り付いていた)。

**削除はしない。** 出力は人間がそのまま貼れる git push --delete までで、exe は実行
しない (ADR-022 / ADR-028)。ブランチ削除は外部可視かつ着手済みマーカーの破棄でもある。

**出力に wall-clock を含めない。** 同じ状態なら同じ出力にして週次 diff を取れるようにし、
「今週新たに浮いたブランチ」だけを読めるようにした。実行時刻は呼び手が記録する。

- 新規 crate src/cli-stale-branch-scan (classify = 純粋判定 / collect = fail-closed I/O)
- unit test 25 件。取得失敗・上限到達・欠損フィールドはすべて Err に倒し、0 件と報告しない
- pnpm stale-branch-scan / build:cli-stale-branch-scan (build:all にも登録)
- ADR-031 に § 残存ブランチ検出 と L2/L3 の置き場所判断基準を追記

実走: 本リポジトリで削除候補 0 件、open PR 3 本 (#320/#324/#373) を正しく対象外と判定。

weekly-review skill (別リポジトリ claude-code-skills) 側の Step 1.0 / Phase 3 追記は
本 PR に含まれない。編集は済んでいるがコミットは未実施。

--- pre-push review 対応 ---

security REJECT (High, SEC-NEW-cli-stale-branch-scan-main-L154): git の ref 名規則は
`;` バッククォート `|` `$()` を許す (git check-ref-format で実測)。push 権限を持つ誰か
(夜間/cloud harness の自動化を含む) が細工したブランチ名は、本レポートが設計として
出す「そのまま貼れる削除コマンド」経由でコピペ実行時に任意コマンドを実行し得る。
安全文字の allowlist を導入し、外れる名前には削除コマンドを生成しない。

**指摘の修正範囲は狭かったので広げた。** 同じブランチ名は削除提案表の 1 列目と
参考表 2 つにも出るため、コマンド欄だけ塞いでもバッククォート (コードスパン脱出) と
`|` (表の列構造破壊) が残る。描画の全経路を単一の branch_cell() へ通し、危険文字を
`?` へ潰したうえで印を付ける形にした。出口ごとに個別対策を足すと出口が増えたときに
同じ穴が空くため、安全文字集合の定義は 1 箇所に保つ。

simplicity (SIM-NEW-cli-stale-branch-scan-classify-L283): trunk 名を独自 hardcode して
おり lib_jj_helpers::TRUNK_BOOKMARKS からずれて develop/trunk を守れていなかった。
is_trunk_bookmark 呼び出しに変更し、push-runner-config.toml の default_branch も
追加の保護対象として読む。

test 30 件 (危険文字が 3 表いずれにも生で出ないことの回帰固定を含む)。
workspace 全体 2,000 pass / clippy clean / lint 0 error。

--- pre-push review 2 巡目 ---

simplicity needs_fix (High, SIM-NEW-cli-stale-branch-scan-main-L121): configured_trunk_branch()
が top-level default_branch しか読まないが、本リポジトリの push-runner-config.toml は
top-level をコメントアウトし [pr_size_check] / [docs_only_routing] の section override
だけで trunk 名を決めている (ADR-051 の cross-config coupling)。master は TRUNK_BOOKMARKS
に含まれるため masked だが、標準外の trunk 名を section override だけで設定している
リポジトリでは None に落ち、trunk が削除候補として貼れるコマンド付きで出得た。
cli-push-runner の effective_default_branch() と同じ top-level → section fallback へ修正。

**実 config に対する回帰テストを追加した** (--ignored)。既存 5 件は合成 TOML で分岐を
固めるだけで、指摘の起点だった「このリポジトリの実 config が section override 構成で
ある」事実を突いていない。実ファイルの構成が変わって解決不能になっても合成テストは
気づけないため、実ファイルから "master" が解決できることを値まで assert する。

test 36 件 (うち 1 件は cwd 依存の --ignored)。workspace 全体 2,005 pass / clippy clean。

--- CodeRabbit レビュー対応 (#377、3 件) ---

- ADR-031 に L3 skill の所在を明記。skill は本リポジトリではなく skills repo
  ($CLAUDE_SKILLS_REPO) にあり ~/.claude/skills/ へ deploy する構成 (ADR-062 の
  /monthly-review と同じ)。ADR がそれを書いていなかったため「ADR は L3 を定義して
  いるが実装が無い」と読めていた。各層の実体がどこにあるかの表を追加し、skill 側の
  変更は PR diff に現れない帰結も明記した。
- ADR-031 の削除コマンドを実装に合わせて `--delete -- <branch>` へ修正。あわせて
  「貼れるコマンドである以上ブランチ名は攻撃面」という設計理由 (-- 区切りと
  allowlist の 2 つの手当て) を ADR 側にも残した。実装だけが知っている状態を解消。
- gh 自体の失敗にもブランチ名を付ける。map_err が parse_pr_list の結果にしか
  掛かっておらず、起動失敗 / timeout / 非ゼロ exit ではどのブランチで止まったか
  分からなかった。最大 100 ブランチを順に回すため fail-closed 停止後の切り分けが
  効かない。実行層を closure で受ける形にし、失敗経路をネットワーク無しで固定する
  回帰テストを 3 件追加。

test 40 件 (うち --ignored 1)。workspace 全体 2,009 pass / clippy clean / lint 0 error。
aloekun added a commit that referenced this pull request Aug 9, 2026
todo 順位 395。クローズ済み PR #365 のブランチを手で消したことで ADR-072 決定 3 の
除外マーカーが失われ、同じ順位が再選択された (PR #373)。決定 3 自体は設計どおりで、
ブランチの存在が着手済みマーカーである以上、浮いたブランチを定期的に片付ける場が要る。

**takt workflow には置けない。** 検出には git ls-remote / gh = ネットワークが要るが、
weekly-review.yaml は全 provider に network_access: false を課している (他 3 パイプラインは
true)。1 つの scan のためにこれを反転すると whole-tree review 6 facet すべての隔離が
緩むため、/monthly-review が cli-telemetry-report を呼ぶのと同じく skill 側 (ADR-031 の
L3 = 決定論層) に置いた。置き場所の判断基準 (ネットワークが要るか) を ADR-031 へ記録。

判定規則:
- 紐づく PR がすべて closed/merged → 削除候補
- open が 1 本でもある → 対象外 (close 後に別 PR を開く / reopen が実在する)
- PR が 1 件も無い → 対象外 (PR 未作成の作業中ブランチと区別できない)
- trunk は常に対象外 / claude/nightly-* は除外しない (除外すると順位が二度と選ばれない)
- state が未知の値 → open 扱い (保護側。誤って削除提案に載せない)

**PR は全件引かずブランチごとに --head で引く。** 総 PR 数は単調増加する一方、remote
ブランチ数は運用上小さく有界。全件方式は実装中に実際に破綻した (本リポジトリは PR が
300 件を超えており、書いた時点で既に上限に張り付いていた)。

**削除はしない。** 出力は人間がそのまま貼れる git push --delete までで、exe は実行
しない (ADR-022 / ADR-028)。ブランチ削除は外部可視かつ着手済みマーカーの破棄でもある。

**出力に wall-clock を含めない。** 同じ状態なら同じ出力にして週次 diff を取れるようにし、
「今週新たに浮いたブランチ」だけを読めるようにした。実行時刻は呼び手が記録する。

- 新規 crate src/cli-stale-branch-scan (classify = 純粋判定 / collect = fail-closed I/O)
- unit test 25 件。取得失敗・上限到達・欠損フィールドはすべて Err に倒し、0 件と報告しない
- pnpm stale-branch-scan / build:cli-stale-branch-scan (build:all にも登録)
- ADR-031 に § 残存ブランチ検出 と L2/L3 の置き場所判断基準を追記

実走: 本リポジトリで削除候補 0 件、open PR 3 本 (#320/#324/#373) を正しく対象外と判定。

weekly-review skill (別リポジトリ claude-code-skills) 側の Step 1.0 / Phase 3 追記は
本 PR に含まれない。編集は済んでいるがコミットは未実施。

--- pre-push review 対応 ---

security REJECT (High, SEC-NEW-cli-stale-branch-scan-main-L154): git の ref 名規則は
`;` バッククォート `|` `$()` を許す (git check-ref-format で実測)。push 権限を持つ誰か
(夜間/cloud harness の自動化を含む) が細工したブランチ名は、本レポートが設計として
出す「そのまま貼れる削除コマンド」経由でコピペ実行時に任意コマンドを実行し得る。
安全文字の allowlist を導入し、外れる名前には削除コマンドを生成しない。

**指摘の修正範囲は狭かったので広げた。** 同じブランチ名は削除提案表の 1 列目と
参考表 2 つにも出るため、コマンド欄だけ塞いでもバッククォート (コードスパン脱出) と
`|` (表の列構造破壊) が残る。描画の全経路を単一の branch_cell() へ通し、危険文字を
`?` へ潰したうえで印を付ける形にした。出口ごとに個別対策を足すと出口が増えたときに
同じ穴が空くため、安全文字集合の定義は 1 箇所に保つ。

simplicity (SIM-NEW-cli-stale-branch-scan-classify-L283): trunk 名を独自 hardcode して
おり lib_jj_helpers::TRUNK_BOOKMARKS からずれて develop/trunk を守れていなかった。
is_trunk_bookmark 呼び出しに変更し、push-runner-config.toml の default_branch も
追加の保護対象として読む。

test 30 件 (危険文字が 3 表いずれにも生で出ないことの回帰固定を含む)。
workspace 全体 2,000 pass / clippy clean / lint 0 error。

--- pre-push review 2 巡目 ---

simplicity needs_fix (High, SIM-NEW-cli-stale-branch-scan-main-L121): configured_trunk_branch()
が top-level default_branch しか読まないが、本リポジトリの push-runner-config.toml は
top-level をコメントアウトし [pr_size_check] / [docs_only_routing] の section override
だけで trunk 名を決めている (ADR-051 の cross-config coupling)。master は TRUNK_BOOKMARKS
に含まれるため masked だが、標準外の trunk 名を section override だけで設定している
リポジトリでは None に落ち、trunk が削除候補として貼れるコマンド付きで出得た。
cli-push-runner の effective_default_branch() と同じ top-level → section fallback へ修正。

**実 config に対する回帰テストを追加した** (--ignored)。既存 5 件は合成 TOML で分岐を
固めるだけで、指摘の起点だった「このリポジトリの実 config が section override 構成で
ある」事実を突いていない。実ファイルの構成が変わって解決不能になっても合成テストは
気づけないため、実ファイルから "master" が解決できることを値まで assert する。

test 36 件 (うち 1 件は cwd 依存の --ignored)。workspace 全体 2,005 pass / clippy clean。

--- CodeRabbit レビュー対応 (#377、3 件) ---

- ADR-031 に L3 skill の所在を明記。skill は本リポジトリではなく skills repo
  ($CLAUDE_SKILLS_REPO) にあり ~/.claude/skills/ へ deploy する構成 (ADR-062 の
  /monthly-review と同じ)。ADR がそれを書いていなかったため「ADR は L3 を定義して
  いるが実装が無い」と読めていた。各層の実体がどこにあるかの表を追加し、skill 側の
  変更は PR diff に現れない帰結も明記した。
- ADR-031 の削除コマンドを実装に合わせて `--delete -- <branch>` へ修正。あわせて
  「貼れるコマンドである以上ブランチ名は攻撃面」という設計理由 (-- 区切りと
  allowlist の 2 つの手当て) を ADR 側にも残した。実装だけが知っている状態を解消。
- gh 自体の失敗にもブランチ名を付ける。map_err が parse_pr_list の結果にしか
  掛かっておらず、起動失敗 / timeout / 非ゼロ exit ではどのブランチで止まったか
  分からなかった。最大 100 ブランチを順に回すため fail-closed 停止後の切り分けが
  効かない。実行層を closure で受ける形にし、失敗経路をネットワーク無しで固定する
  回帰テストを 3 件追加。

test 40 件 (うち --ignored 1)。workspace 全体 2,009 pass / clippy clean / lint 0 error。
@aloekun

aloekun commented Aug 12, 2026

Copy link
Copy Markdown
Owner Author

Claude Code WebからPRを作るテスト、確認できたのでクローズ

@aloekun aloekun closed this Aug 12, 2026
@aloekun
aloekun deleted the claude/select-next-task-a9aiam branch August 15, 2026 11:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants