GRP-001 トレーサビリティチェーン
要件 → 設計 → テスト計画のように、ID が複数のドキュメント段階を順に辿れることを検証します。各段階で参照されない ID が見つかると warning で報告されます。プロジェクトスコープ のルールで、include で読み込んだ全ドキュメントを横断して評価されます。
最初の段階(chain[0])の idColumn で ID を集め、それが次以降の段階の refColumn で参照されているかを順に確認していきます。
要件 → 設計 → テストのような流れでは、「要件 ID は設計に必ず引かれていて、設計に登場した ID はテストに必ず引かれている」 ことが整合性の最低条件です。しかし要件を 1 件追加して設計を書き忘れる、テスト計画を書き忘れる、といった抜けは、ファイルが分かれていると人間の目では追えません。このルールはチェーンの抜けを機械的に検出します。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
chain | object[] | ✓ | チェーンを構成する段階(最低 2 段階)。順序がそのまま検証順 |
idPattern | string | — | この正規表現にマッチする値だけを ID とみなす(マッチしない値は無視) |
chain の各段階
Section titled “chain の各段階”| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
stage | string | ✓ | 段階の名前(エラーメッセージに表示) |
files | string | ✓ | この段階のドキュメントを示す glob |
idColumn | string | — | この段階で ID が定義されているカラム名(最初の段階で必須) |
refColumn | string | — | この段階で前段の ID を参照しているカラム名(2 段階目以降で必須) |
最初の段階では idColumn を、2 段階目以降では refColumn を指定します。
docs/requirements.md:
| ID | Name || ------- | ------ || REQ-001 | Login || REQ-002 | Logout |
docs/design.md:
| Requirement | Detail || ----------- | ------------- || REQ-001 | Design login |REQ-002 が docs/design.md の Requirement カラムから参照されていないので違反になります。
docs/requirements.md line 4 warning REQ-002 defined in docs/requirements.md but not referenced in stage "Design" GRP-001docs/design.md:
| Requirement | Detail || ----------- | -------------- || REQ-001 | Design login || REQ-002 | Design logout |{ "rule": "grp001", "options": { "chain": [ { "stage": "Requirements", "files": "**/requirements.md", "idColumn": "ID" }, { "stage": "Design", "files": "**/design.md", "refColumn": "Requirement" }, { "stage": "Test", "files": "**/test-plan.md", "refColumn": "Covers" } ], "idPattern": "^REQ-\\d{3}$" }}3 段階以上のチェーンも chain 配列を伸ばすだけで表現できます。idPattern を指定すると、ヘッダー行のサンプルや表記ゆれ行を ID 集合から除外できます。
- TBL-006 ファイル間 ID 一意性 — そもそも ID がリポジトリ全体で一意かの検証
- REF-002 ID の定義と参照 — 2 ファイル間での ID 参照の検証(チェーンではなく 1 対 1)
- GRP-002 循環参照 — ドキュメント間リンクに循環がないかの検証
- GRP-003 孤立ドキュメント — どのドキュメントからも参照されていないファイルの検出