PlanGate

Responsibility Boundary — Prompt / Tool Policy / Hook / CLI validate

Status: v1(PBI-116-06 で初版確立、Phase 2 / PBI-116) 関連: docs/ai/core-contract.md / docs/ai/model-profiles.md / docs/ai/tool-policy.md / docs/ai/hook-enforcement.md Interface preflight: docs/working/PBI-116/interface-preflight.md

1. 目的

PlanGate ワークフローにおいて、モデルに判断させるべきものruntime で決定論的にブロックすべきもの を明確に分離する。プロンプトに不変制約を全部書き込むと再び肥大化するため、「ソフト」「ハード」の境界を 4 layer で整理する。

2. 4 Layer 責務マトリクス

Layer 強制力 責務 主な配置
Prompt ソフト(モデル判断) 目的、成功条件、判断基準、不明点の扱い、報告形式 core-contract.md / CLAUDE.md / AGENTS.md
Tool Policy ソフト + 制限 phase 別の利用可能ツールを限定 tool-policy.md(本 PBI)
Hook ハード(決定論ブロック) 不変条件を runtime で 100% 強制 hook-enforcement.md(本 PBI、定義のみ)+ .claude/settings.json の hooks(実装)
CLI / validate ハード(事後検証) 成果物・承認状態・plan_hash・検証証拠を検査 bin/plangate validate 等(本 PBI scope 外)

3. 判断基準(モデル判断 vs runtime 強制)

Prompt(モデル判断)に置くもの

Hook(runtime 強制)に置くもの

Tool Policy(ソフト + phase 制限)に置くもの

CLI / validate(事後検証)に置くもの

4. 重複時の解釈

複数 layer が同一事項に触れる場合(例: 「scope 外編集禁止」を Prompt にも Hook にも書く):

5. プロンプトで強制 vs runtime で強制(具体例)

制約 プロンプト Tool Policy Hook CLI
C-3 承認前は production code 編集禁止 Iron Law として明示 approve-wait phase で write 全禁止 runtime block approvals/c3.json なしなら fail
scope 外ファイル編集禁止 Iron Law として明示 allowed_files に制限 runtime block(forbidden_files 検出) diff の対象外チェック
検証証拠なし PR 禁止 Iron Law として明示 review phase で diff/test のみ runtime block(evidence なし PR) evidence ディレクトリ存在チェック
plan_hash 改竄禁止 Iron Law として明示 runtime block(hash 不一致検出) approvals/c3.json の plan_hash と現 plan.md SHA 比較
承認なし sub-issue 追加禁止 Iron Law として明示 runtime block

6. 本 PBI のスコープ境界

実装方法は hook-enforcement.md で「強制すべき不変条件」を定義し、別 PBI で実装する。

関連