Status: v1(PBI-116-04 で初版確立、Phase 2 / PBI-116) 関連:
core-contract.md/model-profiles.md/responsibility-boundary.md
PlanGate の 機械判定向け成果物 を、自然文プロンプト(出力形式の冗長指定)ではなく Structured Outputs / JSON Schema に形式保証を任せる。これにより:
| 成果物 / 判定結果 | 用途 | 新規 schema |
|---|---|---|
| mode classification result | classify phase の mode 判定 | mode-classification.schema.json |
| C-1 self review result | C-1 17 項目セルフレビュー結果 | review-result.schema.json(共通基底) |
| C-2 external review result | Codex 等の外部 AI レビュー | 同上(phase 識別) |
| V-1 acceptance result | test-cases 突合の受入結果 | acceptance-result.schema.json |
| V-3 design review result | exec 後の外部モデルレビュー | review-result.schema.json(phase 識別) |
| handoff summary | WF-05 完了時の引き継ぎ要約 | handoff-summary.schema.json |
4 新規 schema(合計):
review-result.schema.json — C-1 / C-2 / V-1 / V-3 共通基底(phase で識別)acceptance-result.schema.json — V-1 専用、test-cases 突合mode-classification.schema.json — mode 判定 + 根拠handoff-summary.schema.json — handoff 必須 6 要素のメタ| 成果物 | 理由 |
|---|---|
pbi-input.md |
自然言語の要件記述 |
plan.md |
設計判断・思考プロセスの記録 |
todo.md |
チェックボックス + 構造化(人間が確認) |
test-cases.md |
テスト記述(自然言語 + 構造) |
status.md |
フェーズ履歴(時系列) |
current-state.md |
スナップショット(人間が判読) |
handoff.md 本文 |
必須 6 要素の自然言語記述 |
evidence/*.md |
検証ログ(再現可能性) |
| 成果物 | 理由 |
|---|---|
approvals/c3.json |
gate 判定の機械検証(既存) |
approvals/c4-approval.json |
同上(既存) |
| C-1 / C-2 / V-1 / V-3 review result | スコア・ findings の機械集計 |
| handoff summary(メタ) | 完了判定・eval 入力 |
| mode classification | 自動 mode 判定の機械検証 |
handoff.md 本文(Markdown) + handoff.summary.json(schema 準拠メタ)review-self.md(Markdown 詳細) + review-result.json(C-1 phase スコア)以下の 巨大な出力形式説明 をプロンプトから削減し、schema 側に寄せる:
旧: プロンプト内に「以下の形式で出力してください」と JSON 例を 30 行記載
新: schema 側で形式強制、プロンプトは「review-result.schema.json に従って出力」と一行参照
旧: プロンプトに「必須 6 要素はこちら…」と詳細テンプレ 新: schema + handoff template への参照のみ
旧: プロンプトに 5×複数項目の mode 分類表
新: schema の enum + .claude/rules/mode-classification.md への参照
schemas/ との互換性(C-2 EX-04-01 対応)既存 12 schema(c3-approval / c4-approval / handoff / pbi-input / plan / review-external / review-self / run-event / status / test-cases / todo + README)は 本 PBI で変更しない。
| schema | 用途 |
|---|---|
review-self.schema.json(既存) |
C-1 セルフレビューの Markdown 成果物全体 に対する frontmatter / メタ schema(17 項目チェックの記録方式) |
review-external.schema.json(既存) |
C-2 外部 AI レビューの Markdown 成果物全体 の frontmatter / メタ schema |
review-result.schema.json(新規) |
C-1 / C-2 / V-1 / V-3 の 判定結果のみ を機械集計用に構造化(phase / decision / findings / gateRecommendation) |
→ 既存 schema は Markdown 全体の構造を、新規 schema は判定結果のみを扱う。重複なし、共存。
PBI-116-05 (Model migration Eval cases) で以下を機械検証:
→ モデル変更時に schema 準拠率 < 95% で release blocker とする。
統一: 2020-12(既存 c3-approval.schema.json 等と整合)
.github/workflows/schema-validate.yml が PR の docs/working/**/*.json を対象に schema validate を実行する。違反時は CI FAIL(後方互換のため、対象 JSON が一切なければ skip)。
実装の中核:
scripts/validate-schemas.py(Python + jsonschema)— 単一ファイル / --dir / --files-from の 3 入力bin/plangate validate-schemas(POSIX sh wrapper)— TASK ID / --dir / --files-from / 直接ファイル指定FILENAME_TO_SCHEMA(scripts/validate-schemas.py)に集約# 単一ファイル
sh bin/plangate validate-schemas docs/working/TASK-XXXX/approvals/c3.json
# TASK ディレクトリ全体
sh bin/plangate validate-schemas TASK-XXXX
# git diff 経由
git diff --name-only main...HEAD | grep -E '\.json$' >.changed.txt
sh bin/plangate validate-schemas --files-from .changed.txt
依存: pip install 'jsonschema>=4,<5'(CI は workflow で自動インストール、ローカルは手動)。
docs/working/TASK-XXXX/<artifact>.json(basename がマッピングキー)eval-plan.md § 6)schemas/ 配下の schema 自体を変更する PR は push: branches: [main] トリガで全 working JSON を再検証docs/working/PBI-116/parent-plan.mddocs/working/TASK-0042/ / docs/working/TASK-0047/(CI 統合)core-contract.md