fix(pr-monitor): findings ファイルをワークスペース内へ移し fix agent から読めるようにする (ADR-067) - #358
Merged
Conversation
…067) ## 問題 Phase B 実走スモーク段 2 の 3 回目 (2026-08-04) で `Apply fixes` が 1 ファイルも編集せず 空 diff になり、4 軸ゲートが `reason=empty-fix-diff` で deny した。 原因は findings ファイルの置き場所である。fix agent の参照先が `$RUNNER_TEMP/findings.json` = `/home/runner/work/_temp/findings.json` で、agent の作業 ディレクトリ (ワークスペース直下) の外にある。Claude Code は既定で作業ディレクトリ外の ファイルアクセスを制限するため、`--allowedTools` に絶対パスを列挙してもディレクトリ サンドボックスが別レイヤで遮る。 根拠は同一 run 内の対照であり、仮説ではない: | agent | 読み取り先 | permission_denials_count | ターン数 | 結果 | |---|---|---|---|---| | Collect findings | `findings-input/**` (ワークスペース内) | 0 | 3 | 成功・3 件検出 | | Apply fixes | `/home/runner/work/_temp/findings.json` (外) | 2 | 3 | 無編集 | ## 変更 - `Extract findings JSON` の出力先を `findings-input/findings.json` へ移す (raw ファイルは agent が読まないので `$RUNNER_TEMP` のまま) - `Apply fixes` の `--allowedTools` へ `Read(findings-input/findings.json)` を与える - プロンプトに findings が作業ディレクトリ直下にあることを明記 - `Gate fix push` の `--findings-file` は step output 経由で同じ相対パスになる。run: の cwd が $GITHUB_WORKSPACE であるという前提を gate step のコメントに明記した `findings-input/` はワークスペースルート直下で `pr/` にも `master-ref/` にも含まれない素の ディレクトリなので、`git -C pr add -A` には混入しない。ディレクトリの存在は step の if 連鎖 (Extract → findings → cr_input) が保証するため mkdir を重ねていない。 ## allowedTools を単一ファイルに絞る理由 (pre-push security review の指摘を反映) ADR-067 § 残課題 1 の当初方針は `Read(findings-input/**)` だったが、これは**誤り**である。 同ディレクトリには `comments.json` / `reviews.json` = 著者フィルタ済みだが未要約の raw な CodeRabbit テキストがあり、glob を与えると write 権限を持つ fix agent がそれを直接読める。 これは findings agent (read-only) と fix agent (write 可) を別プロセスに分けた ADR-054 の 設計目的そのものを崩す。4 軸ゲートは path ベースの検査しか行わず (`lib-docs-policy` の 拡張子判定と `lib-scope-guard` の allowlist 突き合わせ)、in-scope な docs ファイルへ**何が 書かれたか**は検査しないため、injection が成立しても下流では捕まらない。よって単一ファイル 指定に絞る。ADR-067 の方針記述は docs バッチで訂正する。 ## 検証 - js-yaml で 13 step 構成が維持されていることを確認 - `$RUNNER_TEMP/findings.json` の実参照が残っていないことを確認 (残る 1 件は根拠を書いた コメント文中の記述) - 実走検証は本ブランチ ref に対する workflow_dispatch で行う (ADR-067 § 残課題 2 に従い マージ前に確認する)。単一ファイル指定の `Read(...)` が fix agent に効くことはこの実走で 初めて確認できる。万一効かなければ findings.json を専用ディレクトリへ分離し `Read(<dir>/**)` を与える (raw テキストを含まないので security の指摘とも両立する) ## `Push fix` の先回り監査 (ADR-067 § 残課題 3) 一度も実走していない `Push fix` step を静的に監査した。コードを変える必要のある欠陥は 見つからなかったため本 PR では変更していない。 - `git -C pr config user.name/email`: リポジトリローカル config への書き込みで `pr/.git` が 存在するため有効 - `add -A` → commit のステージ維持: 間に挟まる `Gate fix push` は `master-ref/` の exe を 実行するだけで `pr/` に触れないため index は維持される。commit 直前に `add -A` を再実行 しないことで「gate が評価した内容そのものを commit する」保証を保つ - `persist-credentials: false` + token URL push: `ref: <branch>` 指定の checkout はローカル ブランチを作るので `HEAD:refs/heads/<branch>` は fast-forward になる。ただし `fetch-depth: 1` の shallow clone からの push は実走未検証で、ここが残る最大の不確実性 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughFindings JSONの保存先を ChangesFindingsファイル連携
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
Contributor
🤖 PR Monitor 分析 (GitHub Actions バックストップ)
Applicable Findings (Critical / High / Major)該当なし (findings 未着) Applicable Findings (Medium 以下)該当なし Filtered (not applicable)該当なし 次のアクション
|
aloekun
added a commit
that referenced
this pull request
Aug 4, 2026
WP-17 (イベント駆動バックボーン完成) で唯一残っていた受け入れ基準 — 実走スモーク段 2 = Phase B allow 経路の完走 — が 2026-08-04 に充足したことを記帳し、#350〜#357 の post-merge feedback 採否とセッション発案のハーネス改善 1 件を todo へ確定する。 コード変更は含まない。 ## 段 2 の結果 (ADR-067 § 検証記録) `workflow_dispatch` を 4 回実行し、4 回目で 13 step 完走に至った。 | 回 | 検出した欠陥 | 対処 | |---|---|---| | 1 | `gh api` は `--slurp` と `--jq` を併用できない | PR #356 | | 2 | findings agent の出力がコードフェンスで囲まれ `jq` が失敗 | PR #357 | | 3 | `Apply fixes` が findings ファイルを読めず空 diff | PR #358 | | 4 | なし (完走) | — | 4 回目の実測: findings 3 件 / `Apply fixes` は `permission_denials_count=0`・`num_turns=6` / `Gate fix push` が `[FIX_PUSH_ALLOW] autonomy=allowed branch=isolated content=docs-only scope=in-scope(1 files)` / `Push fix` が `ee9557a..86f424c` を push / `Report degrade to Phase A` は skip (= degrade しなかった証拠)。 無人 fix が書いた内容も実測検証し、仕込んだ不整合 3 点を過不足なく修正・範囲外の編集 ゼロ (1 ファイル / 3 insertions / 3 deletions) であることを確認した。 `AUTONOMY_ENABLED` を削除した状態での dispatch では fix job 自体が skip され、ADR-066 の 「欠損 → 安全状態」が実 Actions ランタイムで機能することも確認した。 ## ADR-067 § 残課題 1 の方針を訂正 同節に書いていた修正方針「`allowedTools` を `Read(findings-input/**)` にする」は**誤り** だった。同ディレクトリには未要約の raw な CodeRabbit テキスト (`comments.json` / `reviews.json`) があり、glob を与えると write 権限を持つ fix agent がそれを直接読める。 findings agent と fix agent を分離した § 決定 2 / ADR-054 の設計目的が崩れる。実装時の pre-push security review が REJECT で指摘し、単一ファイル指定に改めて land した (#358)。 **静的検査を通らないのはコードだけではない — ADR に書かれた修正方針そのものが誤って いることがある**。この一般化を dev-conventions へ convention として追加した。 ## 主な変更 - `docs/adr/adr-067-*.md`: 段 2 完走の検証記録、残課題 1〜4 を「段 2 で閉じた課題」へ移し 方針訂正を明記、ruleset の実体 (`~ALL` 対象 / `claude/**` 除外 / admin bypass) を残課題へ、 `coderabbitai[bot]` allowlist の follow-up 判断 (追加しない = WP-18 で再判断) を追記 - `docs/adr/adr-066-*.md`: bounded lifetime の実走観測 1 run 目を記録 (trigger (a)(c) 充足、 (b) は variable 側のみ充足で config 側の実走観測は未実施) - `docs/adr/adr-068-*.md`: Phase B 1 run 目で docs-only fix の事実性誤りが観測されなかった ことを記録 (追加機構の再検討条件は未充足のまま) - `docs/harness-improvement-plan.md`: 引き継ぎ節を実施記録へ書き換え、WP-17 受け入れ基準の 段 0〜2 を充足済みへ更新 - `docs/dev-conventions.md` + `CLAUDE.md`: convention「LLM を含む自動化経路は実走でしか 検証できない」を追加 - `docs/todo20.md` (新規) + `docs/todo-summary2.md`: 順位 365-373 の 9 エントリを登録。 内訳は post-merge feedback 採用 19 件を実装時の PR 粒度で 8 エントリへまとめたもの (365-372) と、Rust exe の自動再ビルド 2 層案 (373)。却下 5 件も理由付きで記録 - `docs/todo.md` / `docs/todo14.md` / `docs/todo3-11.md`: todo14.md が約 70KB に達したため 新規追加先を todo20.md へ。preamble 数詞を 22 へ更新 (cli-docs-lint の検出に追従) ## 順位 373 の実測データ (Rust exe の自動再ビルド) `.claude/*.exe` は gitignore された生成物で、`pnpm build:all` を明示実行しない限り古い バイナリが使われ続ける。2026-08-04 時点で `cli-fix-push-gate` (3/3 ファイル)・ `cli-autonomy-gate` (1/1)・`hooks-session-start` (1/8) の 3 パッケージが古い状態だった。 | 操作 | 小パッケージ | 大パッケージ (30 ファイル) | |---|---|---| | `cargo build --release` (変更あり) | 4.3 秒 | 9.9 秒 | | `cargo check` | 0.39 秒 | 0.70 秒 | この差から、PostToolUse には `cargo check` を、Stop hook には `build --release` + deploy を 割り当てる 2 層構成を採る。PostToolUse で build しない理由 (編集ごとの 4〜10 秒、中間状態の compile error がノイズになる、deploy が毎回走る) も todo エントリに記録した。 ## 自動起動経路への懸念 (新規記録) 段 1 で `coderabbitai[bot]` の permission が `none` と実測され `pull_request_review` 経路が 恒久 deny になるため、Phase B の起動は `issue_comment` (walkthrough) 経路だけになる。この 経路は初回 1 回きりで、その時点では CodeRabbit の実レビューがまだ無いことが多い。「findings がある状態で Phase B が自動起動する窓」が実質的に無い可能性がある。段 2 は `workflow_dispatch` による手動起動だったため**自動起動経路は未検証**である。WP-18 着手時に bot allowlist の要否と併せて実測する (ADR-067 § 検証記録に記録)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
aloekun
added a commit
that referenced
this pull request
Aug 5, 2026
WP-17 (イベント駆動バックボーン完成) で唯一残っていた受け入れ基準 — 実走スモーク段 2 = Phase B allow 経路の完走 — が 2026-08-04 に充足したことを記帳し、#350〜#357 の post-merge feedback 採否とセッション発案のハーネス改善 1 件を todo へ確定する。 コード変更は含まない。 ## 段 2 の結果 (ADR-067 § 検証記録) `workflow_dispatch` を 4 回実行し、4 回目で 13 step 完走に至った。 | 回 | 検出した欠陥 | 対処 | |---|---|---| | 1 | `gh api` は `--slurp` と `--jq` を併用できない | PR #356 | | 2 | findings agent の出力がコードフェンスで囲まれ `jq` が失敗 | PR #357 | | 3 | `Apply fixes` が findings ファイルを読めず空 diff | PR #358 | | 4 | なし (完走) | — | 4 回目の実測: findings 3 件 / `Apply fixes` は `permission_denials_count=0`・`num_turns=6` / `Gate fix push` が `[FIX_PUSH_ALLOW] autonomy=allowed branch=isolated content=docs-only scope=in-scope(1 files)` / `Push fix` が `ee9557a..86f424c` を push / `Report degrade to Phase A` は skip (= degrade しなかった証拠)。 無人 fix が書いた内容も実測検証し、仕込んだ不整合 3 点を過不足なく修正・範囲外の編集 ゼロ (1 ファイル / 3 insertions / 3 deletions) であることを確認した。 `AUTONOMY_ENABLED` を削除した状態での dispatch では fix job 自体が skip され、ADR-066 の 「欠損 → 安全状態」が実 Actions ランタイムで機能することも確認した。 ## ADR-067 § 残課題 1 の方針を訂正 同節に書いていた修正方針「`allowedTools` を `Read(findings-input/**)` にする」は**誤り** だった。同ディレクトリには未要約の raw な CodeRabbit テキスト (`comments.json` / `reviews.json`) があり、glob を与えると write 権限を持つ fix agent がそれを直接読める。 findings agent と fix agent を分離した § 決定 2 / ADR-054 の設計目的が崩れる。実装時の pre-push security review が REJECT で指摘し、単一ファイル指定に改めて land した (#358)。 **静的検査を通らないのはコードだけではない — ADR に書かれた修正方針そのものが誤って いることがある**。この一般化を dev-conventions へ convention として追加した。 ## 主な変更 - `docs/adr/adr-067-*.md`: 段 2 完走の検証記録、残課題 1〜4 を「段 2 で閉じた課題」へ移し 方針訂正を明記、ruleset の実体 (`~ALL` 対象 / `claude/**` 除外 / admin bypass) を残課題へ、 `coderabbitai[bot]` allowlist の follow-up 判断 (追加しない = WP-18 で再判断) を追記 - `docs/adr/adr-066-*.md`: bounded lifetime の実走観測 1 run 目を記録 (trigger (a)(c) 充足、 (b) は variable 側のみ充足で config 側の実走観測は未実施) - `docs/adr/adr-068-*.md`: Phase B 1 run 目で docs-only fix の事実性誤りが観測されなかった ことを記録 (追加機構の再検討条件は未充足のまま) - `docs/harness-improvement-plan.md`: 引き継ぎ節を実施記録へ書き換え、WP-17 受け入れ基準の 段 0〜2 を充足済みへ更新 - `docs/dev-conventions.md` + `CLAUDE.md`: convention「LLM を含む自動化経路は実走でしか 検証できない」を追加 - `docs/todo20.md` (新規) + `docs/todo-summary2.md`: 順位 365-373 の 9 エントリを登録。 内訳は post-merge feedback 採用 19 件を実装時の PR 粒度で 8 エントリへまとめたもの (365-372) と、Rust exe の自動再ビルド 2 層案 (373)。却下 5 件も理由付きで記録 - `docs/todo.md` / `docs/todo14.md` / `docs/todo3-11.md`: todo14.md が約 70KB に達したため 新規追加先を todo20.md へ。preamble 数詞を 22 へ更新 (cli-docs-lint の検出に追従) ## 順位 373 の実測データ (Rust exe の自動再ビルド) `.claude/*.exe` は gitignore された生成物で、`pnpm build:all` を明示実行しない限り古い バイナリが使われ続ける。2026-08-04 時点で `cli-fix-push-gate` (3/3 ファイル)・ `cli-autonomy-gate` (1/1)・`hooks-session-start` (1/8) の 3 パッケージが古い状態だった。 | 操作 | 小パッケージ | 大パッケージ (30 ファイル) | |---|---|---| | `cargo build --release` (変更あり) | 4.3 秒 | 9.9 秒 | | `cargo check` | 0.39 秒 | 0.70 秒 | この差から、PostToolUse には `cargo check` を、Stop hook には `build --release` + deploy を 割り当てる 2 層構成を採る。PostToolUse で build しない理由 (編集ごとの 4〜10 秒、中間状態の compile error がノイズになる、deploy が毎回走る) も todo エントリに記録した。 ## 自動起動経路への懸念 (新規記録) 段 1 で `coderabbitai[bot]` の permission が `none` と実測され `pull_request_review` 経路が 恒久 deny になるため、Phase B の起動は `issue_comment` (walkthrough) 経路だけになる。この 経路は初回 1 回きりで、その時点では CodeRabbit の実レビューがまだ無いことが多い。「findings がある状態で Phase B が自動起動する窓」が実質的に無い可能性がある。段 2 は `workflow_dispatch` による手動起動だったため**自動起動経路は未検証**である。WP-18 着手時に bot allowlist の要否と併せて実測する (ADR-067 § 検証記録に記録)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
aloekun
added a commit
that referenced
this pull request
Aug 5, 2026
WP-17 (イベント駆動バックボーン完成) で唯一残っていた受け入れ基準 — 実走スモーク段 2 = Phase B allow 経路の完走 — が 2026-08-04 に充足したことを記帳し、#350〜#357 の post-merge feedback 採否とセッション発案のハーネス改善 1 件を todo へ確定する。 コード変更は含まない。 ## 段 2 の結果 (ADR-067 § 検証記録) `workflow_dispatch` を 4 回実行し、4 回目で 13 step 完走に至った。 | 回 | 検出した欠陥 | 対処 | |---|---|---| | 1 | `gh api` は `--slurp` と `--jq` を併用できない | PR #356 | | 2 | findings agent の出力がコードフェンスで囲まれ `jq` が失敗 | PR #357 | | 3 | `Apply fixes` が findings ファイルを読めず空 diff | PR #358 | | 4 | なし (完走) | — | 4 回目の実測: findings 3 件 / `Apply fixes` は `permission_denials_count=0`・`num_turns=6` / `Gate fix push` が `[FIX_PUSH_ALLOW] autonomy=allowed branch=isolated content=docs-only scope=in-scope(1 files)` / `Push fix` が `ee9557a..86f424c` を push / `Report degrade to Phase A` は skip (= degrade しなかった証拠)。 無人 fix が書いた内容も実測検証し、仕込んだ不整合 3 点を過不足なく修正・範囲外の編集 ゼロ (1 ファイル / 3 insertions / 3 deletions) であることを確認した。 `AUTONOMY_ENABLED` を削除した状態での dispatch では fix job 自体が skip され、ADR-066 の 「欠損 → 安全状態」が実 Actions ランタイムで機能することも確認した。 ## ADR-067 § 残課題 1 の方針を訂正 同節に書いていた修正方針「`allowedTools` を `Read(findings-input/**)` にする」は**誤り** だった。同ディレクトリには未要約の raw な CodeRabbit テキスト (`comments.json` / `reviews.json`) があり、glob を与えると write 権限を持つ fix agent がそれを直接読める。 findings agent と fix agent を分離した § 決定 2 / ADR-054 の設計目的が崩れる。実装時の pre-push security review が REJECT で指摘し、単一ファイル指定に改めて land した (#358)。 **静的検査を通らないのはコードだけではない — ADR に書かれた修正方針そのものが誤って いることがある**。この一般化を dev-conventions へ convention として追加した。 ## 主な変更 - `docs/adr/adr-067-*.md`: 段 2 完走の検証記録、残課題 1〜4 を「段 2 で閉じた課題」へ移し 方針訂正を明記、ruleset の実体 (`~ALL` 対象 / `claude/**` 除外 / admin bypass) を残課題へ、 `coderabbitai[bot]` allowlist の follow-up 判断 (追加しない = WP-18 で再判断) を追記 - `docs/adr/adr-066-*.md`: bounded lifetime の実走観測 1 run 目を記録 (trigger (a)(c) 充足、 (b) は variable 側のみ充足で config 側の実走観測は未実施) - `docs/adr/adr-068-*.md`: Phase B 1 run 目で docs-only fix の事実性誤りが観測されなかった ことを記録 (追加機構の再検討条件は未充足のまま) - `docs/harness-improvement-plan.md`: 引き継ぎ節を実施記録へ書き換え、WP-17 受け入れ基準の 段 0〜2 を充足済みへ更新 - `docs/dev-conventions.md` + `CLAUDE.md`: convention「LLM を含む自動化経路は実走でしか 検証できない」を追加 - `docs/todo20.md` (新規) + `docs/todo-summary2.md`: 順位 365-373 の 9 エントリを登録。 内訳は post-merge feedback 採用 19 件を実装時の PR 粒度で 8 エントリへまとめたもの (365-372) と、Rust exe の自動再ビルド 2 層案 (373)。却下 5 件も理由付きで記録 - `docs/todo.md` / `docs/todo14.md` / `docs/todo3-11.md`: todo14.md が約 70KB に達したため 新規追加先を todo20.md へ。preamble 数詞を 22 へ更新 (cli-docs-lint の検出に追従) ## 順位 373 の実測データ (Rust exe の自動再ビルド) `.claude/*.exe` は gitignore された生成物で、`pnpm build:all` を明示実行しない限り古い バイナリが使われ続ける。2026-08-04 時点で `cli-fix-push-gate` (3/3 ファイル)・ `cli-autonomy-gate` (1/1)・`hooks-session-start` (1/8) の 3 パッケージが古い状態だった。 | 操作 | 小パッケージ | 大パッケージ (30 ファイル) | |---|---|---| | `cargo build --release` (変更あり) | 4.3 秒 | 9.9 秒 | | `cargo check` | 0.39 秒 | 0.70 秒 | この差から、PostToolUse には `cargo check` を、Stop hook には `build --release` + deploy を 割り当てる 2 層構成を採る。PostToolUse で build しない理由 (編集ごとの 4〜10 秒、中間状態の compile error がノイズになる、deploy が毎回走る) も todo エントリに記録した。 ## 自動起動経路への懸念 (新規記録) 段 1 で `coderabbitai[bot]` の permission が `none` と実測され `pull_request_review` 経路が 恒久 deny になるため、Phase B の起動は `issue_comment` (walkthrough) 経路だけになる。この 経路は初回 1 回きりで、その時点では CodeRabbit の実レビューがまだ無いことが多い。「findings がある状態で Phase B が自動起動する窓」が実質的に無い可能性がある。段 2 は `workflow_dispatch` による手動起動だったため**自動起動経路は未検証**である。WP-18 着手時に bot allowlist の要否と併せて実測する (ADR-067 § 検証記録に記録)。 Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
問題
Phase B 実走スモーク段 2 の 3 回目 (2026-08-04) で
Apply fixesが 1 ファイルも編集せず空 diff になり、4 軸ゲートがreason=empty-fix-diffで deny した。原因は findings ファイルの置き場所である。fix agent の参照先が
$RUNNER_TEMP/findings.json=/home/runner/work/_temp/findings.jsonで、agent の作業ディレクトリ (ワークスペース直下) の外にある。Claude Code は既定で作業ディレクトリ外のファイルアクセスを制限するため、--allowedToolsに絶対パスを列挙してもディレクトリサンドボックスが別レイヤで遮る。根拠は同一 run 内の対照であり、仮説ではない:
findings-input/**(ワークスペース内)/home/runner/work/_temp/findings.json(外)変更
Extract findings JSONの出力先をfindings-input/findings.jsonへ移す (raw ファイルは agent が読まないので$RUNNER_TEMPのまま)Apply fixesの--allowedToolsへRead(findings-input/findings.json)を与えるGate fix pushの--findings-fileは step output 経由で同じ相対パスになる。run:の cwd が$GITHUB_WORKSPACEであるという前提を gate step のコメントに明記したfindings-input/はワークスペースルート直下でpr/にもmaster-ref/にも含まれない素のディレクトリなので、git -C pr add -Aには混入しない。ディレクトリの存在は step のif連鎖 (Extract → findings → cr_input) が保証するため mkdir を重ねていない。allowedTools を単一ファイルに絞る理由 (pre-push security review の指摘を反映)
ADR-067 § 残課題 1 の当初方針は
Read(findings-input/**)だったが、これは誤りである。同ディレクトリにはcomments.json/reviews.json= 著者フィルタ済みだが未要約の raw な CodeRabbit テキストがあり、glob を与えると write 権限を持つ fix agent がそれを直接読める。これは findings agent (read-only) と fix agent (write 可) を別プロセスに分けた ADR-054 の設計目的そのものを崩す。4 軸ゲートは path ベースの検査しか行わず (
lib-docs-policyの拡張子判定とlib-scope-guardの allowlist 突き合わせ)、in-scope な docs ファイルへ何が書かれたかは検査しないため、injection が成立しても下流では捕まらない。よって単一ファイル指定に絞る。ADR-067 の方針記述は後続の docs バッチで訂正する。検証
$RUNNER_TEMP/findings.jsonの実参照が残っていないことを確認 (残る 1 件は根拠を書いたコメント文中の記述)workflow_dispatchで行う (ADR-067 § 残課題 2 に従いマージ前に確認する)。単一ファイル指定のRead(...)が fix agent に効くことはこの実走で初めて確認できる。万一効かなければ findings.json を専用ディレクトリへ分離しRead(<dir>/**)を与える (raw テキストを含まないので security の指摘とも両立する)Push fixの先回り監査 (ADR-067 § 残課題 3)一度も実走していない
Push fixstep を静的に監査した。コードを変える必要のある欠陥は見つからなかったため本 PR では変更していない。git -C pr config user.name/email: リポジトリローカル config への書き込みでpr/.gitが存在するため有効add -A→ commit のステージ維持: 間に挟まるGate fix pushはmaster-ref/の exe を実行するだけでpr/に触れないため index は維持される。commit 直前にadd -Aを再実行しないことで「gate が評価した内容そのものを commit する」保証を保つpersist-credentials: false+ token URL push:ref: <branch>指定の checkout はローカルブランチを作るのでHEAD:refs/heads/<branch>は fast-forward になる。ただしfetch-depth: 1の shallow clone からの push は実走未検証で、ここが残る最大の不確実性マージ方針
この PR はすぐにマージしない。
workflow_dispatchは ref を選べるため、本ブランチ ref に対して直接 dispatch しPush fixまで通ることを確認してから 1 回だけマージする (ADR-067 § 残課題 2)。段 2 の過去 3 サイクルは毎回マージしており、これは不要な手戻りだった。🤖 Generated with Claude Code
Summary by CodeRabbit