DRP ID 規約と L1〜L4 変更影響分類
役割: DRP(意思決定 審査パイプライン)ドキュメントの ID 体系 8 種・参照規約(Covers / Verified-by / Constrains)・L1〜L4 変更影響分類の正典。根拠決定は ADR-0117、調査根拠は RQ-095 synthesis。 適用範囲:
docs/_internal/03_decisions/decision_pipeline/配下のドキュメントに限定(ADR への Covers:/Constrains: 追加のみ ADR 全体に横展開)。ID 体系の他コンポーネントへの非公式流用は ADR-0117 違反(将来の全社展開時はスコープ修飾子DRP-BR-001形式を別 ADR で導入)。 初見の読者へ: 用語集 → 本書 → 文書カタログ の順で読む(読解所要 0.5〜1.0 人日の想定)。
1. ID 体系(8 種)
| 種別 | 接頭辞 | 層 | 採番 | 定義場所 |
|---|---|---|---|---|
| ビジネス要求 | BR- | 1. ビジネス要求層 | 3 桁ゼロ詰め連番(BR-001〜) | business_requirements.md |
| システム要件 | SR- | 2. システム要件層 | 3 桁ゼロ詰め連番 | system_requirements.md |
| 非機能要件 | NFR- | 2. システム要件層 | 3 桁ゼロ詰め連番 | 非機能要件定義書(Phase 2 新設予定) |
| ユースケース | UC- | 2. システム要件層 | 既存採番を流用(UC-{N} / UC-{N}-S{NN}) | ユースケース一覧(Phase 2 新設予定) |
| 外部設計 | EDD- | 3. 外部設計層 | 3 桁ゼロ詰め連番 | 外部設計 4 分冊(Phase 2 新設予定) |
| 内部設計 | IDD- | 4. 内部設計層 | 3 桁ゼロ詰め連番 | ゲート内部設計書(Phase 3 移行予定) |
| テストケース | TC- | 7. 検証層 | 既存採番を流用(TC-01〜 / TC-S / TC-C 系) | test_cases.md ほか |
| 決定 | ADR- | 6. 決定層 | 既存採番を流用(4 桁ゼロ詰め) | docs/adr/ |
採番ルール:
- ID は発行後に再利用・欠番埋め・改番しない(参照の安定性が体系の存在理由)。廃止する場合は定義場所で
status: retiredを宣言し、ID 自体は予約済みのまま残す。 - 新規 ID の発行前に定義場所ファイルを grep し衝突がないことを確認する(案件 ID 採番と同じ運用)。
1.1 文書レベル ID(frontmatter id:)
上記 8 種は文書「内」のトレーサビリティ要素の ID である。これとは別に、decision_pipeline/ 配下の各ドキュメント自体の frontmatter id: は drp-<slug>(kebab-case・ファイル名由来のスラッグ)とする。例: system_requirements.md → id: drp-system-requirements。
drp-接頭辞は DRP 文書 id 専用。DRP-(大文字)接頭辞は将来の全社展開時のスコープ修飾子(DRP-BR-001形式)用に予約しており、文書 id には用いない。- 新規 DRP 文書追加時は
id: drp-<slug>を frontmatter 先頭キーに置き、既存 id との重複を grep で確認する。 - 根拠: ADR-0123 §8(Corrigendum 1)が本規約に委譲。
2. 参照規約(トレーサビリティ)
参照は次の 3 種・一方向のみ。双方向リンクや下方向参照は書かない(トレーサビリティマトリクスは CI が Covers: を走査して生成するため、逆方向は自動で得られる)。
| フィールド | 方向 | 意味 | 記入者 |
|---|---|---|---|
covers | 下層 → 上層 | この要素は上層のどの要求を充足するか(例: SR → BR) | 下層文書 |
verified-by | 対象 → テスト | この要素はどのテストで検証されるか(例: SR → TC) | 対象文書 |
Constrains: | ADR → 下層 | この決定はどの要素を制約するか(例: ADR → SR / EDD) | ADR |
2.1 記載場所は frontmatter 限定(散文中の ID 参照禁止)
ID 参照は必ず frontmatter(ADR はメタデータブロック)に記載し、散文中への記載を参照として扱わない。 CI lint は frontmatter の covers / verified-by フィールド(ADR は - **Covers**: / - **Constrains**: 行)のみを検出する。散文・コードブロック・表の中の ID 文字列は検出対象外であり、lint をすり抜けて陳腐化するため規範的参照として書いてはならない(読みやすさのための見出しへの ID 併記は可。§2.2 参照)。
2.2 層別ドキュメントの frontmatter スキーマ
ID を定義する文書は frontmatter の defines 配列で宣言する。frontmatter が SSoTで、本文見出しの ID 併記(### BR-001: …)は人間可読性のための写しに過ぎない(drift したら frontmatter が正)。
---
id: drp-system-requirements
type: spec
audience: both
status: active
layer: "2"
defines:
- id: SR-001
title: 起案の記録価値判定と審査モード決定
covers: [BR-002]
verified-by: [TC-01, TC-02, TC-03, TC-04, TC-05]
---
layer: 文書カタログの層番号("0"〜"8"、文字列)。defines[].covers/defines[].verified-by: 省略可(最上層の BR はcoversを持たない)。空配列は書かず省略する。- YAML の重複キーは禁止(gray-matter がビルドを停止させる既知の地雷)。
2.3 ADR のメタデータブロック(Covers: / Constrains:)
ADR は YAML frontmatter を持たないため、冒頭のメタデータブロック(- **Status**: … の並び)に追記する:
- **Covers**: SR-004, SR-005
- **Constrains**: EDD-002
- DRP スコープの ID のみ記入可。DRP に関係しない ADR はフィールドごと省略する(空欄禁止)。
- 既存 ADR への付与は追記のみ(本文書き換え禁止・イミュータブル原則の範囲内)。Phase 3 で被参照上位 20 本に後付けする。
- 新規 ADR(DRP スコープ)は
Covers:付与 100% が完了条件(ADR-0117 §決定 7)。
2.4 CI lint の保証範囲(main 実装・仕様の正典はここ)
- 検出対象: 層別文書の frontmatter
defines/covers/verified-by+ ADR の- **Covers**:/- **Constrains**:行。grep でなく YAML/Markdown パーサーベースで実装する(コードブロック内 ID・複数行 YAML・全角文字の境界値をユニットテストに含める)。 - 検出内容: orphan ID(参照先が未定義)・リンク切れ。severity は 既存 ADR = warning(別ファイル出力)/ 新規 ADR・層別文書 = error の段階化(警告慣れによる見逃し防止)。
- lint が保証するのは構文的存在確認のみ(参照先が現役で適切かの意味的整合は保証しない = 必要条件であって十分条件でない)。意味的整合は四半期サンプリング監査(Covers 10 件無作為抽出)と半年毎棚卸しで担保する。
- 対象外 ADR(DRP スコープ外)に DRP 固有 ID パターンが現れた場合は warning 出力(非公式流用の検知)。
- トレーサビリティマトリクスは CI 生成のみ。手書き・コミット禁止(matrix rot が最頻失敗モード)。
3. L1〜L4 変更影響分類
「この改修はどのレベルまで影響するか?」を改修前に判定する枠組み。decision_pipeline 配下の docs 変更を含む PR で記入必須(PR テンプレートのチェックは main 実装。それ以外の PR は記入不要)。分類はエージェントが diff から自動提案し、人間は承認のみ行う。
| Level | 何が変わる改修か | 必須更新 | ADR | 再実行するテスト層 |
|---|---|---|---|---|
| L1 | ビジネス要件(目的・対象者・ROI) | BR + 配下の SR/設計を全数再検証 | 推奨 | 受入(Confirmation KPI) |
| L2 | システム要件(機能・非機能) | SR/NFR + 配下の外部・内部設計 | 推奨 | システムテスト(TC 系) |
| L3 | 外部設計(API・プロンプト I/O 契約・スキーマ) | 外部設計 + 破壊的変更判定 + 利用側追従 | 必須 | 契約テスト(golden eval / OpenAPI diff) |
| L4 | 内部設計のみ(外から観測可能な契約は不変) | 契約テスト pass の確認のみ | 任意 | 単体(vitest) |
判定ルール:
- 外部 / 内部の境界 = 「外から観測可能な契約か」。API・プロンプト I/O 契約・queue 封筒・状態機械・エラーモデル = 外部設計(L3)。リトライ曲線・ルーティング・ロック = 内部設計(L4)。
- 迷ったら L3 扱いにして ADR を書く(コストは md 1 枚・監査痕跡が残る)。
- L4 自動判定の除外リスト(該当 PR は記入をスキップ可能):
*.test.tsのみの変更 / docs 誤字修正 / コメント行のみの変更。 - DRP Triage(Light / Standard / Critical)とは直交: Triage = 審査の厳しさ、L1〜L4 = 更新すべき文書層。相互に推定しない。
3.1 分類の練習例(初見読者の自己チェック用)
| 改修例 | 分類 | 理由 |
|---|---|---|
| Gate 4 の採点閾値を Standard 40 → 42 に変更 | L2 | 機能要件(差戻し基準)が変わる。プロンプト I/O 契約は不変 |
/chat/status/:sessionId のレスポンスに新フィールド追加 | L3 | 外から観測可能な API 契約の変更。利用側(chat.html / polling)の追従判定が必要 |
| consistency ノードの ADR 取得を REST → GraphQL に変更(出力不変) | L4 | 外部契約は不変・内部実装のみ |
| 「最終承認は人間のみ」の原則を変える提案 | L1 | 設計原則 = ビジネス要件レベル。配下全層の再検証が必要 |
4. 運用(エージェント前提)
- 本規約の適用主体は Claude Code エージェント(main/sub)。人間(代表取締役)は PR レビューでの承認のみ(ADR-0117 §1.4 運用主体の前提)。
- エージェントはセッションごとに本書 + 文書カタログを読み込んで機械的に適用する。
- 形骸化検知: 四半期ごとの Covers サンプリング監査 + 「L3 宣言のうち実際に ADR が作成された比率」計測(詳細は ADR-0117 §Confirmation)。
変更履歴
| 日時 | 変更 |
|---|---|
| 2026-06-04 | 初版(ADR-0117 Phase 1) |
| 2026-06-08 | §1.1 文書レベル ID(id: drp-<slug>)を明文化(ADR-0123 §8 Corrigendum 1 からの委譲・DRP id backfill 30 件と同時) |