Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/adr/adr-054-prompt-injection-trust-boundary-defense.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,12 @@ whole-tree security facet ([.takt/facets/instructions/review-security-whole.md](

decision trigger は `pr-monitor-config.toml` の `[fix.scope_guard]` section コメントと `scope_guard.rs` の module doc に永続記録する (ephemeral 計画書のみへの記載は retire 時に dead pointer 化するため不可)。

**dogfood 記録**:

- observe 期間 (2026-07-12 有効化〜2026-08-01): post-pr-review 実行 30 回、うち fix step 実行 5 回。violation (OBSERVE ログ) の観測 0 件 = 誤検知ゼロ。
- 2026-08-01: `mode = "enforce"` へ昇格。以降が decision trigger (enforce で 3-5 PR) の計測期間。fix step の発生頻度が低下しているため (直近 2 週間は 0 回)、判定材料の蓄積は fix 発生ベースで待つ。
- 観測ギャップ: violation 記録は monitor の stderr のみで永続化されない (ADR-055 telemetry は cli-pr-monitor 未計装)。採否判定を機械化する必要が生じた場合は lib-telemetry 計装が候補。

## ADR-043 との線引き

- **決定論層 (層 3)**: ゲート = fail-closed。判定不能はすべて block 側 (ADR-043 準拠)。ただし enabled = false のとき (未有効化) は「何もしない = push 続行」であり、これは「ゲートが存在しない」状態であって fail-open ではない。
Expand Down
8 changes: 4 additions & 4 deletions docs/harness-improvement-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ Anthropic 公式のハーネスエンジニアリング指針(決定論的基
| WP-08 | 1-B | incident→eval 回帰スイート | S | なし | 完了([ADR-049](adr/adr-049-incident-eval-regression-suite.md)) |
| WP-09 | 1-C | PR 監視の GitHub Actions 化 Phase A | M | なし | 完了([ADR-022](adr/adr-022-automation-responsibility-separation.md) 原則 6。無人分析コメント + wakeup 取りこぼしゼロを観測済) |
| WP-10 | 1-C | 自律境界ポリシー ADR | S | なし | 完了([ADR-052](adr/adr-052-autonomy-execution-boundary-classes.md)。Rust 分類関数は WP-17/18 着手時に実装 = ADR-052 記載) |
| WP-11 | 2 | prompt injection 信頼境界の 3 層防御 | M-L | WP-08 | 観測中([ADR-054](adr/adr-054-prompt-injection-trust-boundary-defense.md)。scope_guard observe 運用中 → § 残作業) |
| WP-11 | 2 | prompt injection 信頼境界の 3 層防御 | M-L | WP-08 | 観測中([ADR-054](adr/adr-054-prompt-injection-trust-boundary-defense.md)。2026-08-01 enforce 昇格済 → § 残作業) |
| WP-12 | 2 | 発火テレメトリ + ハーネス ROI 棚卸し | M | なし | 完了([ADR-055](adr/adr-055-firing-telemetry-collection.md) + [ADR-062](adr/adr-062-monthly-harness-roi-review.md)。初回月次レビュー〔2026-08-12 以降〕は ADR-062 の機構が管理) |
| WP-13 | 3 | EXE_SUFFIX 抽象化 | M | なし | 完了([ADR-005](adr/adr-005-hooks-path-resolution-with-template.md) amendment。launcher 経路の実走確認済) |
| WP-14 | 3 | PowerShell 3 本の Rust 化 | S-M ×2 | なし | 完了(新規 ADR 不要判断 = 決定は各 crate doc + commit message に記録。実走確認済) |
Expand All @@ -82,10 +82,10 @@ Anthropic 公式のハーネスエンジニアリング指針(決定論的基

## 5. 残作業(観測継続)

### WP-11 残: scope_guard の enforce 昇格判定
### WP-11 残: scope_guard の本採用判定

- 現状: `pr-monitor-config.toml` の `[fix.scope_guard]` を `mode = "observe"` で dogfood 中(ADR-054 の決定論層)。
- 残作業: 誤検知ゼロを確認したら `mode = "enforce"` へ昇格し、3〜5 PR で採否判定(bounded lifetime)。判定基準・kill-switch は ADR-054 を参照。
- 現状: observe 期間(2026-07-12〜08-01、fix step 実行 5 回)で誤検知ゼロを確認し、2026-08-01 に `mode = "enforce"` へ昇格済(ADR-054 の dogfood 記録参照)。
- 残作業: enforce3〜5 PR(fix step 発生ベース)誤検知ゼロを確認したら本採用(ADR-054 の status 更新)。判定基準・kill-switch は ADR-054 を参照。

### WP-15 追補残: レート制限 park の実観測

Expand Down
4 changes: 3 additions & 1 deletion docs/todo-summary2.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
| 255 | 💎 Tier 3 | **ADR-040 の実測値を新 GPU (RTX PRO 5000 48GB) で再 calibration (ADR-046 WP-01 スパイクで陳腐化を観測)** | todo15.md | S | なし (ADR-038/040 が前提とする RTX 3070 8GB は RTX PRO 5000 Blackwell 48GB に更新済み。27-31B Q4 モデルが 100% GPU で動き VRAM が制約でなくなったため、ADR-040 の VRAM/latency trade-off 表と「VRAM scarcity → model swap 制約」framing が陳腐化。ADR-046 で mistral:7b / gemma4 / qwen3-coder の VRAM・latency を実測済 → ADR-040 amendment に反映、num_ctx 選定 flow の memory 軸を latency 軸へ再重み付け) |
| 256 | ⏳ Tier 5 | **classifier FP 検出強化プロンプトで格上げ候補を再評価 (WP-04 見送りの follow-up、ADR-038 amendment 由来)** | todo15.md | M | なし (WP-04 実測で全候補が FP 検出未達 = 能力限界か `classify.txt` の mistral 向け tune 不適合かが未分離。FP 検出強化プロンプト版で qwen3-coder:30b 等を再測し、能力限界と確認できれば恒久見送り、プロンプト不適合なら該当モデル + 専用プロンプトで格上げ。eval 手法・gold セットは scratchpad WP-04 資産を再利用。materially better な新モデル出現時も再評価トリガー) |
| 257 | ⏳ Tier 5 | **push pipeline の `cargo test` を cargo-nextest 化 (WP-05 で Stop hook には無効と判明、push 側 follow-up)** | todo15.md | S-M | なし (WP-05 実測: Stop hook は cargo test 不在で nextest 非適用、真因は逐次実行→並列化で解決済。ただし push pipeline (cli-push-runner quality_gate) の `cargo test -- --ignored` は実測 ~80s で nextest 高速化の余地あり。ツール依存追加 = ADR-017 pinning + 派生プロジェクト配布のコスト、push が Stop より低頻度な点を踏まえた費用対効果を評価。doctest は nextest 非実行のため `cargo test --doc` 併走が必要) |
| 272 | 🚀 Tier 1 | **cli-docs-lint に ADR 重複採番 + CLAUDE.md 索引整合チェック追加 (PR #261 post-merge-feedback T1-#2 採用)** | todo15.md | S | なし (PR #261 で ADR-052/053 採番衝突が実発生、既存 cli-docs-lint の check-mode 骨格流用。順位 135 placeholder policy は todo entry 側の「ルール」で本 entry は land 済ファイルの「仕組み」検知、相補で重複ではない) |
| 272 | 🚀 Tier 1 | **cli-docs-lint に ADR 重複採番 + CLAUDE.md 索引整合チェック追加 (PR #261 post-merge-feedback T1-#2 採用)** | todo15.md | S | なし (PR #261 で ADR-052/053 採番衝突が実発生、既存 cli-docs-lint の check-mode 骨格流用。順位 135 placeholder policy は todo entry 側の「ルール」で本 entry は land 済ファイルの「仕組み」検知、相補で重複ではない。責務は採番重複/索引存在/番号一致のみでステータスタグ整合は順位 357、実装は同一 module 同居可) |
| 275 | 🔧 Tier 2 | **層別テストテンプレート (StubOllama パターン・integration 独立性) の共有化 (PR #265 post-merge-feedback T2-1 採用)** | todo15.md | M | なし (WP-11/ADR-054 の多層防御実装で「空 StubOllama による LLM 未呼び出し証明」「tempdir+jj init+CwdRestore の integration 独立性」を都度設計。WP-17 の classifier/scope guard 拡張で同種判断が再発見込み。shared crate 化の境界は ADR-044 で判定、WP-17 着手前の実施が効果的) |
| 276 | 💎 Tier 3 | **ADR-007 に「コメント配置の意思決定フロー」を追加 (PR #265 post-merge-feedback T3-2 採用)** | todo15.md | S | なし (PR #265 で非 doc コメントの Bundle Z block が 2 回発生 = doc コメント/識別子名/マーカー付き Why の配置判断が未文書化。linter 自動化は NLP 必要で却下済み、既存 Q1-Q3 形式で人間/AI の判断補助を doc 化。バッチ PR で消化可) |
| 277 | 💎 Tier 3 | **PR body 配置タイミング規約を dev-conventions に明記 (PR #265 post-merge-feedback T3-3 採用)** | todo15.md | XS | なし (push パイプライン実行中の working copy に `__pr-body.md` を作成し snapshot 混入をかろうじて回避したヒヤリハット実発生。「push 完了後に scratchpad で準備し --body-file に絶対パス」を規約化。バッチ PR 消化可、並列安全化 PR docs への相乗りも可) |
Expand Down Expand Up @@ -112,6 +112,8 @@
| 354 | 💎 Tier 3 | **todo ファイル削除・更新時のチェックリストを dev-conventions.md に追加 (#332 post-merge feedback T3-8 採用)** | todo14.md | XS | なし (PR #332 で todo16.md 複数セクション削除時に lint:md を 3 回以上再実行。段階削除+都度 lint:md+順位番号本文混入注意の checklist 化、専用スクリプト化 (Tier2 様子見) と独立の即応策。順位334 と相補) |
| 355 | 💎 Tier 3 | **新規スキル作成チェックリストを dev-conventions.md に追加 (#332 post-merge feedback T3-9 採用)** | todo14.md | XS | なし (PR #332 で monthly-review skill 作成時に weekly-review を都度参照する手戻り。SKILL.md/evals.json/trigger_eval.json の 3 点セット + Phase 構成 + deploy 前 sync check を checklist 化) |
| 356 | 🔧 Tier 2 | **weekly/monthly staleness 判定の共通 fixture parametrized test を追加 (#331 post-merge feedback T2-1 採用)** | todo14.md | S | なし (monthly_review.rs の staleness 判定が weekly_review.rs と逐語重複、片方修正で挙動乖離するリスク。同一 fixture〔threshold 境界/Missing/Stale/Unreadable/未来値/main-root canonical〕で両流路を検証、inline test module に配置) |
| 357 | 🔧 Tier 2 | **CLAUDE.md の ADR index ステータスタグと ADR 本体の整合チェックを追加 (#340 post-merge feedback T1-1 採用)** | todo14.md | M | なし (ADR-047 の index タグが `試験運用` のまま本体の `却下` と乖離した実害が残存。ADR-007 の 2 層は単一ファイル起点のため独立 doc-consistency チェックとして実装。責務はステータスタグ整合のみで採番/索引存在/番号一致は順位 272、実装は同一 module 同居可。着手時に ADR-047 タグ即修正を含む) |
| 358 | 💎 Tier 3 | **Cross-File Reference Lifecycle (ephemeral→permanent 移行手順) を dev-conventions.md に明文化 (#340 post-merge feedback T3-1 採用)** | todo14.md | S | なし (PR #340 で移管先未記載 3 件を CodeRabbit が指摘。順位 261 の見送り限定 convention を完了/委譲ケースへ拡張し、退役条件を含む 3 段階プロトコルを checklist 化) |

**戦略**: Tier 1 を 2〜3 セッションで片付け → Tier 2 で ADR-032 の前提 + rate-limit + convergence cost 削減を進める → Tier 3 で ADR-032 を land + ドキュメント整備。Tier 4-5 は cleanup / 外部展開で daily efficiency への直接効果は小さい。

Expand Down
44 changes: 44 additions & 0 deletions docs/todo14.md
Original file line number Diff line number Diff line change
Expand Up @@ -625,3 +625,47 @@
#### 完了基準

- weekly/monthly の staleness 判定が同一 fixture で検証され、片方のロジック変更による挙動乖離がテストで検知されること。

---

### CLAUDE.md の ADR index ステータスタグと ADR 本体ステータスの整合チェックを追加

> **動機**: PR #340 で CLAUDE.md の ADR-047 index タグが `*(試験運用)*` のまま、ADR-047 本体のステータス「却下 (2026-07-19 確定)」と乖離して残存していることを、pre-push simplicity review と post-merge 分析が独立に指摘した (実害継続を Read で確認済み)。index タグと本体ステータスの整合は手動更新に依存しており、ステータス遷移 (試験運用 → 採用/却下) のたびに再発しうる。#340 post-merge feedback Tier1 #1 で採用。
>
> **対処案**: CLAUDE.md の ADR index 行のステータスタグと、対応 ADR ファイル本体の「ステータス」見出しの一致を検証する doc-consistency チェックを pre-push 経路に追加する。[ADR-007](adr/adr-007-custom-linter-layer-boundary.md) の正規表現層/AST 層はいずれも単一ファイル起点設計のため、`custom-lint-rules.toml` への追加ではなく独立チェック (cli-docs-lint 拡張 or 専用スクリプト/test) として実装する。**責務分界 (PR #341 CodeRabbit 指摘で明文化)**: 本 entry はステータスタグ整合のみを扱い、採番重複/索引存在/番号一致は順位 272 の責務。実装は同一 validator module への同居が可能で相補。
>
> **参照**: `.claude/feedback-reports/340.md` Tier1 #1、[ADR-007](adr/adr-007-custom-linter-layer-boundary.md)、[ADR-047](adr/adr-047-prepush-refute-facet.md)、順位 272 (同居実装候補)。
>
> **実行優先度**: 🔧 Tier 2 — Severity Medium / Frequency Medium / Effort M / Adoption Risk None。

#### 作業計画

- [ ] CLAUDE.md の ADR-047 タグを `*(試験運用)*` → `*(却下)*` に修正 (実残存の不整合解消、着手時の即修正)
- [ ] ADR index タグと ADR 本体「ステータス」見出しの整合チェックを実装 (cli-docs-lint 拡張 or 独立スクリプト、順位 272 と同居検討)
- [ ] pre-push 経路 (lint:docs) への組込みと、不整合 fixture での検知確認
- [ ] 本エントリ削除 + todo-summary2.md 行削除

#### 完了基準

- CLAUDE.md の ADR index タグと ADR 本体ステータスの乖離が pre-push で機械検知されること (採番/索引存在/番号一致の検知は順位 272 の完了基準で扱い、本 entry の対象外)。

---

### Cross-File Reference Lifecycle (ephemeral→permanent 移行手順) を dev-conventions.md に明文化

> **動機**: PR #340 の計画書スリム化で、CodeRabbit から「WP-14 の永続移管先未記載」「外部 SaaS 事実の移管方針」「WP-02 の todo 移管先未記録」の 3 件が指摘された。ephemeral 計画文書から permanent 成果物への知識移行の手順は「見送り」ケース限定の順位 261 convention にしか存在せず、完了/委譲ケースの移管先明記が規約の空白だったことが構造要因。#340 post-merge feedback Tier3 #1 で採用。
>
> **対処案**: `docs/dev-conventions.md` の順位 261 convention (spike 見送り 3 点セット) を拡張し、Cross-File Reference Lifecycle として明文化する: (1) permanent 成果物を先に作成・validate、(2) permanent→ephemeral 方向の参照を除去し、移管先 (ADR / todo 順位 / crate doc 等) を ephemeral 側の状態列に明記 (完了/委譲/見送りの全ケース対象)、(3) 計画文書の退役条件 (全状態確定 + 永続成果物からの参照ゼロ + 残タスクの lifecycle 整合) を含める。
>
> **参照**: `.claude/feedback-reports/340.md` Tier3 #1、`docs/dev-conventions.md` (順位 261 convention)、`docs/harness-improvement-plan.md` (退役手順の実例)。
>
> **実行優先度**: 💎 Tier 3 — Severity Medium / Frequency Medium / Effort S / Adoption Risk None。

#### 作業計画

- [ ] `docs/dev-conventions.md` に Cross-File Reference Lifecycle の checklist を追加 (順位 261 convention の拡張として整理)
- [ ] 本エントリ削除 + todo-summary2.md 行削除

#### 完了基準

- ephemeral 計画文書の完了/委譲/見送りいずれのケースでも、永続移管先の明記と参照方向の規律が checklist で確認できること。
4 changes: 2 additions & 2 deletions docs/todo15.md
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@
>
> **参照**: `.claude/feedback-reports/261.md` Tier 1 #2、`src/cli-docs-lint/src/main.rs` (CheckMode 拡張、preamble / cross-ref / priority-inversion の既存 check-mode dispatch と kill-switch 骨格を流用)、ADR-007 (層の線引き)、ADR-039。
>
> **関連 (重複ではない)**: 順位 135 (todo8.md、ADR-NNN placeholder policy) は todo entry 側の採番 hardcode を防ぐ「ルール」であり、本 entry は land 済みファイル群の衝突を検知する「仕組み」(ADR-042 の役割分担で相補)。feedback report Tier 2 #2 (ADR sanity テスト新設) は本 entry と目的重複のため却下済み。
> **関連 (重複ではない)**: 順位 135 (todo8.md、ADR-NNN placeholder policy) は todo entry 側の採番 hardcode を防ぐ「ルール」であり、本 entry は land 済みファイル群の衝突を検知する「仕組み」(ADR-042 の役割分担で相補)。feedback report Tier 2 #2 (ADR sanity テスト新設) は本 entry と目的重複のため却下済み。順位 357 (todo14.md、index ステータスタグ ⇔ ADR 本体ステータスの整合) はチェック対象が異なる別 entry — 本 entry の責務は a/b/c (採番重複/索引存在/番号一致) のみでステータスタグは扱わない。実装は同一 validator module への同居が可能 (PR #341 CodeRabbit 指摘で責務分界を明文化)。
>
> **実行優先度**: 🚀 **Tier 1** — Effort S。既存 cli-docs-lint 骨格の流用で新規 module 1 つ + fixture テスト。

Expand All @@ -240,7 +240,7 @@

#### 完了基準

- ADR 採番衝突・索引不整合・ファイル名/タイトル番号不一致が push 前に決定論的に検出され、PR #261 型の rebase 時大量置換が再発しない構造になっていること。
- ADR 採番衝突・索引不整合・ファイル名/タイトル番号不一致が push 前に決定論的に検出され、PR #261 型の rebase 時大量置換が再発しない構造になっていること (ステータスタグ整合は順位 357 の完了基準で扱い、本 entry の対象外)

---

Expand Down
7 changes: 4 additions & 3 deletions pr-monitor-config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,13 @@ group = "rust-lint-test"
# templates 側のコメントアウトで default OFF が継承される)。
# mode: "observe" = violation を記録するが push は続行 (誤検知率の計測用)。
# "enforce" = violation で auto-push を中止し action_required に倒す (fail-closed)。
# bounded lifetime (ADR-054): dogfood 初期は observe で誤検知ゼロを確認し、その後 enforce に
# 上げる。enforce で 3-5 PR 誤検知ゼロなら本採用、誤検知頻発なら enabled = false で kill。
# bounded lifetime (ADR-054): observe 期間 (2026-07-12〜08-01、fix step 実行 5 回) で誤検知
# ゼロを確認し、2026-08-01 に enforce へ昇格。enforce で 3-5 PR 誤検知ゼロなら本採用、
# 誤検知頻発なら enabled = false で kill。
# 緊急バイパス (kill-switch): 環境変数 PR_MONITOR_SCOPE_GUARD_DISABLE=1
[fix.scope_guard]
enabled = true
mode = "observe"
mode = "enforce"
Comment on lines +56 to +62

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

rg -n -C4 \
  'PR_MONITOR_SCOPE_GUARD_DISABLE|evaluate_scope_guard|BlockedViolation|run_push|scope_guard' \
  src/cli-pr-monitor .takt pr-monitor-config.toml || true

Repository: aloekun/claude-code-hook-test

Length of output: 25212


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '--- Cargo features/runners ---\n'
git ls-files 'src/cli-pr-monitor/**' | sed -n '1,120p'
printf '\n--- tests mentions ---\n'
rg -n '#\[test\]|#\[module\]|#\[cfg\(test\)\]|mod tests|fn test_|scope_guard_disabled|observe|BlockedViolation|run_push\(' src/cli-pr-monitor -C 3 || true

printf '\n--- files with test dirs ---'
git ls-files | grep -E '(^|/)(tests?|test|spec)/' | sed -n '1,200p'

printf '\n--- scope_guard key tests ---\n'
sed -n '240,370p' src/cli-pr-monitor/src/stages/scope_guard.rs
sed -n '96,135p' src/cli-pr-monitor/src/stages/repush.rs
sed -n '185,215p' src/cli-pr-monitor/src/stages/scope_guard.rs

Repository: aloekun/claude-code-hook-test

Length of output: 258


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- Cargo features/runners ---'
git ls-files 'src/cli-pr-monitor/**' | sed -n '1,160p'

printf '%s\n' ''
printf '%s\n' '--- tests mentions ---'
rg -n -C3 '#\[test\]|#\[module\]|#\[cfg\(test\)\]|mod tests|fn test_|scope_guard_disabled|observe|BlockedViolation|run_push\(' src/cli-pr-monitor || true

printf '%s\n' ''
printf '%s\n' '--- test directories/files ---'
git ls-files | grep -E '(^|/)(tests?|test|spec)/' | sed -n '1,200p' || true

printf '%s\n' ''
printf '%s\n' '--- key source snippets ---'
sed -n '96,135p' src/cli-pr-monitor/src/stages/repush.rs
sed -n '185,245p' src/cli-pr-monitor/src/stages/scope_guard.rs
sed -n '240,368p' src/cli-pr-monitor/src/stages/scope_guard.rs

Repository: aloekun/claude-code-hook-test

Length of output: 50386


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- scope_guard relevant tests ---'
rg -n -C 4 '#\[test\]|scope_guard|evaluate_scope_guard|scope_guard_disabled|observe|BlockedViolation|run_push\(' src/cli-pr-monitor/src/stages/scope_guard.rs src/cli-pr-monitor/src/stages/repush.rs pr-monitor-config.toml || true

printf '%s\n' ''
printf '%s\n' '--- scope_guard config fields and parse ---'
sed -n '36,56p' src/cli-pr-monitor/src/stages/scope_guard.rs
rg -n -C 3 'fix\.scope_guard|scope_guard|enabled = true|mode = "enforce"' pr-monitor-config.toml || true

printf '%s\n' ''
printf '%s\n' '--- execute_repush_flow call around scope violation and run_push ---'
sed -n '93,132p' src/cli-pr-monitor/src/stages/repush.rs

Repository: aloekun/claude-code-hook-test

Length of output: 42550


scope guard の BlockedViolation 経路を統合的に固定してください。

execute_repush_flow 側では ScopeGuardOutcome::BlockedViolationrun_push 未実行になる構造です。このケースを execute_repush_flow(...) の test に固定し、kill-switch と observe での push 継続も含め、enforce 昇格の回帰網羅を補ってください。

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pr-monitor-config.toml` around lines 56 - 62, execute_repush_flow の
ScopeGuardOutcome::BlockedViolation 経路をテストで固定し、mode="enforce" では run_push
が実行されないことを検証してください。併せて、PR_MONITOR_SCOPE_GUARD_DISABLE=1 の kill-switch と
mode="observe" では push が継続されることを確認し、enforce 昇格時の回帰ケースを網羅してください。


# ---------------------------------------------------------------------------
# [classifier] — ADR-038 (採用、2026-05-15) 経由のローカル LLM finding classifier。
Expand Down
Loading