fix(docs-policy): 夜間ループの台帳を docs-only 除外パスへ追加する (順位 378、ADR-035) - #368
Conversation
台帳 (docs/claude-code-web-tasks.md) だけを変える PR が docs-only の緩い評価経路に 乗る状態を塞ぐ。ADR-072 決定 6 は同じ理由で台帳を Guard step の禁止リストへ入れて いるのに、**PR 評価ポリシー側には同じ手当てが無い**という非対称が残っていた。 その状態では対策そのものを迂回する台帳 PR が通りうる。 ## 穴の本体は決定論層にあった todo の作業計画は ADR-035 の表と facet instructions しか挙げていなかったが、実際に 評価経路を決めているのは `lib-docs-policy` の `is_docs_only_path` だった。同関数は `.takt/` と `.claude/` しか除外しておらず、**台帳は docs/ 配下なので docs-only と 判定されていた**。同 crate は「ADR-035 path 基準の単一実装」を名乗り、 cli-push-runner の docs_only_routing と cli-pr-monitor の auto-push 前 gate の 両方から呼ばれるため、ここを直せば両経路が同時に閉じる。 ## 同期した 4 箇所 - src/lib-docs-policy/src/lib.rs — 決定論層。NIGHTLY_TASK_LEDGER 定数を追加 - docs/adr/adr-035-doc-evaluation-policy.md — 除外パス表 + 理由 - .takt/facets/instructions/review-security.md — 除外パス列挙 (複製) - .takt/facets/instructions/analyze-coderabbit.md — 除外パス列挙 (複製) ADR-035 は「判定ロジックは本 ADR を single source of truth として引用する」と書いて いるが、実際には facet 2 件が表を複製していた。今回は複製を解消せず同期に留める — 解消は instruction の構造変更で、本エントリの範囲を超えるため。 ## 前方一致ではなく完全一致 `docs/claude-code-web-tasks` で始まる別ファイル (メモ・アーカイブ等) まで巻き込むと、 逆に正当な docs PR が重い経路へ落ちる。unit test で good/bad の対を固定した (`-notes.md` / `.md.bak` / `archive/` 配下は docs-only のまま)。 ## 検証 cargo test -p lib-docs-policy: 12 passed (新規 4 件 — 台帳単独 / 他 docs との混在 / Windows バックスラッシュ / 前方一致の非巻き込み)。 なお **本 PR 自身は docs-only にならない** — .takt/facets/instructions/** を触るため ADR-035 の除外パスに自分で該当する。意図どおり。 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 (5)
📝 WalkthroughWalkthrough
Changesdocs-only判定ポリシー
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 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 |
🤖 PR Monitor 分析 (GitHub Actions バックストップ)
Applicable Findings (Critical / High / Major)該当なし Applicable Findings (Medium 以下)該当なし Filtered (not applicable)該当なし (レビュー指摘自体がまだ 0 件) 差分概要 (軽量サマリー)台帳 (
次のアクション
|
Summary
docs/claude-code-web-tasks.mdを ADR-035 の docs-only 除外パスへ追加し、code-equivalent として扱うlib-docs-policyにあった — 台帳はdocs/配下なのでis_docs_only_pathが docs-only と判定していたContext
Why: 台帳だけを変える PR が docs-only の緩い評価経路に乗る状態だった。ADR-072 決定 6 は同じ理由で台帳を Guard step の禁止リスト(自律 actor が書き換えてはならないファイル)へ入れているのに、PR 評価ポリシー側には同じ手当てが無いという非対称が残っていた。その状態では対策そのものを迂回する台帳 PR が通りうる。
台帳は拡張子が
.mdだが、無人可マークの付いた行がcli-nightly-task-selectに読まれ、その内容がそのまま無人 agent のプロンプトへ入る実行入力である。拡張子と危険度は無関係。Trigger: #363 の post-merge feedback が Tier 1 として挙げた 4 件のうちの 1 件目(順位 378)。他 3 件(379-381)の前提にあたる。
Scope decision — todo の作業計画に無かった層を直した: todo は「ADR-035 の表」と「facet instructions」の 2 層しか挙げていなかったが、実際に評価経路を決めているのは
lib-docs-policyのis_docs_only_pathだった。ここを直さずに ADR と instruction だけ更新すると「対処済み」と報告しつつ穴は開いたままになる。同 crate は「ADR-035 path 基準の単一実装」を名乗り、cli-push-runnerの docs_only_routing とcli-pr-monitorの auto-push 前 gate の両方から呼ばれるため、1 箇所の修正で両経路が閉じる。ADR-035 は「判定ロジックは本 ADR を single source of truth として引用する」と書いているが、実際には facet 2 件が除外パス表を複製していた。今回は複製の解消はせず同期に留める — 解消は instruction の構造変更で、本エントリの範囲を超えるため。
前方一致ではなく完全一致にした。
docs/claude-code-web-tasksで始まる別ファイル(メモ・アーカイブ等)まで巻き込むと、逆に正当な docs PR が重い経路へ落ちる。Validation
cargo test -p lib-docs-policy: 12 passed(新規 4 件 — 台帳単独 / 他 docs との混在 / Windows バックスラッシュ / 前方一致の非巻き込み)pnpm pushpre-push review: verdict=APPROVE(simplicity / security 両 facet、warning なし)lintPASS (2.1s) /testPASS (3.9s) /buildPASS (1.2s) /rust-lint-testPASS (64.5s)docs_only_routingが「code 変更あり、全 group を実行」と判定(本 PR 自身が.takt/facets/instructions/**を触るため docs-only にならない = 意図どおり)References
lib-docs-policyの呼び出し元)Summary by CodeRabbit
改善
ドキュメント
テスト