Skip to content

fix(docs-policy): 夜間ループの台帳を docs-only 除外パスへ追加する (順位 378、ADR-035) - #368

Merged
aloekun merged 1 commit into
masterfrom
fix/ledger-docs-only-exclusion
Aug 8, 2026
Merged

fix(docs-policy): 夜間ループの台帳を docs-only 除外パスへ追加する (順位 378、ADR-035)#368
aloekun merged 1 commit into
masterfrom
fix/ledger-docs-only-exclusion

Conversation

@aloekun

@aloekun aloekun commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • 夜間ループのタスク台帳 docs/claude-code-web-tasks.md を ADR-035 の docs-only 除外パスへ追加し、code-equivalent として扱う
  • 穴の本体は決定論層 lib-docs-policy にあった — 台帳は docs/ 配下なので is_docs_only_path が docs-only と判定していた
  • ポリシー(ADR-035)/ instruction 2 件 / 決定論層の 4 箇所を同期し、unit test 4 件で固定

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-policyis_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 push pre-push review: verdict=APPROVE(simplicity / security 両 facet、warning なし)
  • quality gate: 4 グループ全実行 — lint PASS (2.1s) / test PASS (3.9s) / build PASS (1.2s) / rust-lint-test PASS (64.5s)
  • docs_only_routing が「code 変更あり、全 group を実行」と判定(本 PR 自身が .takt/facets/instructions/** を触るため docs-only にならない = 意図どおり)
  • PR size: 52 行

References

Summary by CodeRabbit

  • 改善

    • 夜間タスク台帳の変更が、通常のドキュメント変更向けの簡易評価ではなく、コード変更相当のセキュリティレビュー対象として正しく扱われるようになりました。
    • 完全一致による判定に対応し、類似パスや通常のドキュメント変更への意図しない影響を防止します。
  • ドキュメント

    • 判定ポリシーと運用計画を更新し、対応完了状況を反映しました。
  • テスト

    • 単独変更、混在、類似パス、Windows形式のパスを含む判定ケースを追加しました。

台帳 (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>
@coderabbitai

coderabbitai Bot commented Aug 8, 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: cda4fa29-80a2-4def-bcff-a5103c3ab0ec

📥 Commits

Reviewing files that changed from the base of the PR and between 02a6529 and 405201d.

📒 Files selected for processing (5)
  • .takt/facets/instructions/analyze-coderabbit.md
  • .takt/facets/instructions/review-security.md
  • docs/adr/adr-035-doc-evaluation-policy.md
  • docs/harness-improvement-plan.md
  • src/lib-docs-policy/src/lib.rs

📝 Walkthrough

Walkthrough

docs/claude-code-web-tasks.mdをdocs-only判定の除外対象に追加しました。完全一致、混在、類似パス、Windows形式パスをテストし、ADR、facet、改善計画を同期しました。

Changes

docs-only判定ポリシー

Layer / File(s) Summary
判定ルールと検証
docs/adr/adr-035-doc-evaluation-policy.md, src/lib-docs-policy/src/lib.rs
夜間タスク台帳をdocs-only判定の除外対象に追加しました。完全一致と境界条件をunit testで検証しました。
運用文書の同期
.takt/facets/instructions/*, docs/harness-improvement-plan.md
関連するレビュー規則と改善計画を更新しました。

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 タイトルは夜間ループの台帳をdocs-only除外パスへ追加する主変更を具体的かつ簡潔に示しています。
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 fix/ledger-docs-only-exclusion

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

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

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

  • トリガー: issue_comment (created) / 実行 run
  • CI: pending (rust ubuntu-latest / rust windows-latest とも実行中、結果未確定)
  • レビュー状況: CodeRabbit は "Currently processing new changes" (レビュー未着、actionable コメントなし)。人間レビューなし (reviews API 空)。インライン指摘なし。会話コメントは CodeRabbit の処理中通知のみ。
  • Verdict: user_decision (CodeRabbit / CI とも結果未確定のため、次サイクルでの再監視が前提。現時点で applicable な指摘はゼロ)

Applicable Findings (Critical / High / Major)

該当なし

Applicable Findings (Medium 以下)

該当なし

Filtered (not applicable)

該当なし (レビュー指摘自体がまだ 0 件)

差分概要 (軽量サマリー)

台帳 (docs/claude-code-web-tasks.md) を ADR-035 の docs-only 除外パス表へ追加する変更 (todo #378)。5 ファイル変更:

File 変更内容
.takt/facets/instructions/analyze-coderabbit.md docs-only 判定の除外パス列挙に台帳を追加 (1 行)
.takt/facets/instructions/review-security.md 同上、security review 側の除外パス列挙に追加 (1 行)
docs/adr/adr-035-doc-evaluation-policy.md 除外パス表へ台帳を追加 + 追加理由の説明段落
docs/harness-improvement-plan.md todo #378 のステータスを完了に更新
src/lib-docs-policy/src/lib.rs NIGHTLY_TASK_LEDGER 定数 + is_docs_only_path へ完全一致除外ロジックを追加 (実行コード変更)、unit test 4 件追加

src/lib-docs-policy/src/lib.rs に実行コード変更があるため本 PR 自体は docs-only ではない (これは PR の変更内容とも整合— ADR-035 自身が「決定論層 lib-docs-policy の穴」を今回埋めたと記述している)。ドキュメント側 3 ファイルの変更は ADR-035 が新設する除外ルールをその実装対象自身 (facet 指示書 2 件) に反映したもので、自己言及的だが記述内容と一致しており矛盾や設計逸脱は見当たらない。

次のアクション

  • CodeRabbit のレビュー結果と CI (rust ubuntu/windows) の完了を待ち、次サイクルで指摘の有無を再確認する。
  • 現時点で人間による追加対応は不要。

@aloekun
aloekun merged commit e8f4b7a into master Aug 8, 2026
3 checks passed
@aloekun
aloekun deleted the fix/ledger-docs-only-exclusion branch August 8, 2026 06:47
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.

1 participant