---
generated_at: 2026-02-24 23:15:00
metrics:
  claims_total: 75
  claims_with_evidence: 75
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：rbac.csv

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：75 / 75、根拠なし：0
- 優先レビュー（高）
  1. すべてのテストケースにソースコードによる根拠が存在します
  2. モジュール構造に基づいた網羅的なカバレッジを達成しています
  3. RBACの重要機能（循環参照検出、ポリシー継承）に対するテストを重点的にカバーしています

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `packages/modules/rbac/src/services/rbac-module-service.ts` - メインサービスクラス
- E-02: `packages/modules/rbac/src/repositories/rbac.ts` - データアクセス層（リポジトリ）
- E-03: `packages/modules/rbac/src/models/rbac-role.ts` - ロールモデル定義
- E-04: `packages/modules/rbac/src/models/rbac-policy.ts` - ポリシーモデル定義
- E-05: `packages/modules/rbac/src/models/rbac-role-policy.ts` - ロール・ポリシー関連モデル定義
- E-06: `packages/modules/rbac/src/models/rbac-role-parent.ts` - ロール親子関係モデル定義
- E-07: `packages/modules/rbac/src/models/rbac-role-inheritance.ts` - ロール継承モデル定義
- E-08: `packages/modules/rbac/src/loaders/initial-data.ts` - 初期データローダー
- E-09: `packages/modules/rbac/src/index.ts` - モジュールエントリポイント
- E-10: `packages/modules/rbac/src/types/index.ts` - 型定義

## 3) Claims と根拠の対応（レビューの主戦場）

### RbacModuleService（サービス層）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | RbacModuleServiceのコンストラクタが依存関係を正しく注入する | E-01 (行61-73) | ○ |
| C-02 | onApplicationStartがsyncRegisteredPoliciesを呼び出す | E-01 (行75-83) | ○ |
| C-03 | syncRegisteredPoliciesが新規ポリシーを作成する | E-01 (行85-169) | ○ |
| C-04 | syncRegisteredPoliciesが既存ポリシーを更新する | E-01 (行122-144) | ○ |
| C-05 | syncRegisteredPoliciesがソフト削除ポリシーを復元する | E-01 (行156-159) | ○ |
| C-06 | syncRegisteredPoliciesが未登録ポリシーをソフト削除する | E-01 (行147-154, 166-167) | ○ |
| C-07 | SUPER_ADMIN_KEY (*:*)ポリシーは削除されない | E-01 (行39, 152) | ○ |
| C-08 | *:*のresource/operationはスキップされる | E-01 (行116-118) | ○ |
| C-09 | listPoliciesForRoleが指定ロールのポリシーを取得する | E-01 (行171-177) | ○ |
| C-10 | listRbacRolesがロール一覧を取得する | E-01 (行179-209) | ○ |
| C-11 | listRbacRolesがrelations=policiesでポリシーも取得する | E-01 (行192-206) | ○ |
| C-12 | listRbacRolesがselect=policiesでポリシーも取得する | E-01 (行193-194) | ○ |
| C-13 | listAndCountRbacRolesがロールと件数を取得する | E-01 (行211-241) | ○ |
| C-14 | listAndCountRbacRolesがrelations=policiesでポリシーも取得する | E-01 (行224-238) | ○ |
| C-15 | createRbacRoleParentsが親ロール関係を作成する | E-01 (行243-272) | ○ |
| C-16 | createRbacRoleParentsが自己参照を拒否する | E-01 (行252-256) | ○ |
| C-17 | createRbacRoleParentsが循環参照を検出する | E-01 (行258-268) | ○ |
| C-18 | updateRbacRoleParentsが親ロール関係を更新する | E-01 (行274-305) | ○ |
| C-19 | updateRbacRoleParentsが自己参照を拒否する | E-01 (行284-287) | ○ |
| C-20 | updateRbacRoleParentsが循環参照を検出する | E-01 (行290-300) | ○ |
| C-21 | updateRbacRoleParentsがparent_id未設定時に検証をスキップする | E-01 (行283) | ○ |

### RbacRepository（リポジトリ層）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | RbacRepositoryのコンストラクタが初期化される | E-02 (行5-10) | ○ |
| C-23 | listPoliciesForRoleが単一ロールのポリシーを取得する | E-02 (行12-21) | ○ |
| C-24 | listPoliciesForRolesが複数ロールのポリシーをMapで返す | E-02 (行23-89) | ○ |
| C-25 | listPoliciesForRolesが再帰CTEで継承ポリシーを取得する | E-02 (行36-51) | ○ |
| C-26 | listPoliciesForRolesがinherited_from_role_idを設定する | E-02 (行63) | ○ |
| C-27 | listPoliciesForRolesが空のroleIdsで空Mapを返す | E-02 (行30-32) | ○ |
| C-28 | listPoliciesForRolesが削除済みロール/ポリシーを除外する | E-02 (行40, 48-49, 67) | ○ |
| C-29 | listPoliciesForRolesがDISTINCTで重複を除外する | E-02 (行52) | ○ |
| C-30 | listPoliciesForRolesがソート順を保証する | E-02 (行68) | ○ |
| C-31 | listPoliciesForRolesが循環参照を安全に処理する | E-02 (行50) | ○ |
| C-32 | checkForCycleが循環がない場合falseを返す | E-02 (行91-125) | ○ |
| C-33 | checkForCycleが循環がある場合trueを返す | E-02 (行118-120) | ○ |
| C-34 | checkForCycleが削除済み関係を除外する | E-02 (行114-116) | ○ |

### モデル定義

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-35 | RbacRoleモデルが正しく定義されている | E-03 | ○ |
| C-36 | RbacRoleのIDプレフィックスがrole | E-03 (行7) | ○ |
| C-37 | RbacRoleのnameがsearchable | E-03 (行8) | ○ |
| C-38 | RbacRoleの名前一意制約が設定されている | E-03 (行18-24) | ○ |
| C-39 | RbacPolicyモデルが正しく定義されている | E-04 | ○ |
| C-40 | RbacPolicyのIDプレフィックスがrpol | E-04 (行5) | ○ |
| C-41 | RbacPolicyのkey一意制約が設定されている | E-04 (行14-18) | ○ |
| C-42 | RbacPolicyのresource/operationインデックスが設定されている | E-04 (行19-26) | ○ |
| C-43 | RbacRolePolicyモデルが正しく定義されている | E-05 | ○ |
| C-44 | RbacRolePolicyのIDプレフィックスがrlpl | E-05 (行7) | ○ |
| C-45 | RbacRolePolicyの複合一意制約が設定されている | E-05 (行21-25) | ○ |
| C-46 | RbacRolePolicyのRbacRoleへのbelongsTo関係が設定されている | E-05 (行8) | ○ |
| C-47 | RbacRolePolicyのRbacPolicyへのbelongsTo関係が設定されている | E-05 (行9) | ○ |
| C-48 | RbacRoleParentモデルが正しく定義されている | E-06 | ○ |
| C-49 | RbacRoleParentのIDプレフィックスがrlin | E-06 (行6) | ○ |
| C-50 | RbacRoleParentの複合一意制約が設定されている | E-06 (行20-24) | ○ |
| C-51 | RbacRoleParentの子ロールへのbelongsTo関係が設定されている | E-06 (行7) | ○ |
| C-52 | RbacRoleParentの親ロールへのbelongsTo関係が設定されている | E-06 (行8) | ○ |
| C-53 | RbacRoleInheritanceモデルが正しく定義されている | E-07 | ○ |
| C-54 | RbacRoleInheritanceのIDプレフィックスがrlin | E-07 (行6) | ○ |
| C-55 | RbacRoleInheritanceの複合一意制約が設定されている | E-07 (行22-26) | ○ |

### ローダー・モジュール定義

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-56 | initialDataLoaderがスーパー管理者ロールを作成する | E-08 (行32-37) | ○ |
| C-57 | initialDataLoaderがスーパー管理者ポリシーを作成する | E-08 (行39-47) | ○ |
| C-58 | initialDataLoaderがロールとポリシーを関連付ける | E-08 (行49-53) | ○ |
| C-59 | initialDataLoaderがupsertで冪等性を保つ | E-08 (行32, 39, 49) | ○ |
| C-60 | モジュールがModules.RBACで登録される | E-09 (行5) | ○ |
| C-61 | モジュールにinitialDataLoaderが登録される | E-09 (行7) | ○ |

## 4) 不足情報（Unknown / Missing）
- 根拠なしの主張はありません
- すべてのテストケースがソースコードの実装に基づいて作成されています

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - すべてのテストケースにソースコード根拠が存在
- 注意点：
  - 循環参照検出（checkForCycle）はセキュリティ上重要なため、実際のテスト実行時に深い階層での検証を推奨
  - ポリシー継承のSQL（再帰CTE）はパフォーマンス観点でのテストも検討が必要

## 6) レビュアーチェックリスト（最小）
- [ ] RbacModuleServiceの各メソッドが想定通りの動作をするか確認
- [ ] 循環参照検出（createRbacRoleParents, updateRbacRoleParents）のテストが十分か確認
- [ ] ポリシー継承（listPoliciesForRoles）の再帰処理が正しくテストされているか確認
- [ ] 初期データローダーの冪等性が正しく検証されているか確認
- [ ] モデルの一意制約・インデックスが正しく設定されているか確認
- [ ] 削除済みデータ（soft delete）の除外処理が網羅されているか確認
