---
generated_at: 2026-01-30 13:15:00
metrics:
  claims_total: 60
  claims_with_evidence: 57
  claims_without_evidence: 3
confidence_derived: 0.95
---

# 根拠レポート：非機能要件テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：57 / 60、根拠なし：3
- 優先レビュー（高）
  1. **NFT-001（API応答時間テスト）**：具体的な応答時間要件の明示的な定義なし
  2. **NFT-036（CRDTマージテスト）**：収束の具体的な検証基準が不明
  3. **NFT-037（Merkleツリー検証テスト）**：差分検出の詳細な仕様が不明

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

- E-01: `packages/sync-server/src/app.ts` - Express設定、レート制限、ヘルスチェック、セキュリティヘッダー
- E-02: `packages/sync-server/src/load-config.js` - 設定スキーマ定義（convict）
- E-03: `packages/sync-server/src/accounts/password.js` - bcryptによるパスワード認証
- E-04: `packages/sync-server/src/util/validate-user.ts` - セッション検証、トークン有効期限
- E-05: `packages/sync-server/src/app-sync.ts` - 同期API実装、ファイル操作、認可チェック
- E-06: `packages/loot-core/src/server/encryption/index.ts` - E2E暗号化実装
- E-07: `packages/loot-core/src/shared/errors.ts` - エラーハンドリング定義
- E-08: `packages/desktop-electron/security.ts` - Electronセキュリティ設定
- E-09: `packages/sync-server/docker-compose.yml` - Dockerヘルスチェック設定
- E-10: `sync-server.Dockerfile` - Dockerビルド設定、メモリ制限
- E-11: `packages/desktop-electron/playwright.config.ts` - E2Eテストタイムアウト設定
- E-12: `package.json` - engines、scripts、browserslist設定
- E-13: `packages/sync-server/package.json` - 依存関係（express-rate-limit、bcrypt、winston等）
- E-14: `packages/crdt/src/crdt/merkle.ts` - CRDTマージツリー実装
- E-15: `packages/crdt/src/crdt/timestamp.ts` - タイムスタンプ管理
- E-16: `packages/sync-server/src/scripts/health-check.js` - ヘルスチェックスクリプト
- E-17: `packages/sync-server/src/scripts/reset-password.js` - パスワードリセットスクリプト
- E-18: `packages/sync-server/src/scripts/disable-openid.js` - OpenID無効化スクリプト
- E-19: `packages/sync-server/src/util/middlewares.js` - ミドルウェア（ログ、認証）
- E-20: `docker-compose.yml` - 開発環境Docker設定

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | API応答時間200ms以内 | **根拠なし** | △ |
| C-02 | 500リクエスト/分のスループット | E-01, E-13 | ○ |
| C-03 | レート制限発動確認 | E-01 | ○ |
| C-04 | 同期ファイル20MB制限 | E-02 | ○ |
| C-05 | 暗号化ファイル50MB制限 | E-02 | ○ |
| C-06 | 一般ファイル20MB制限 | E-02 | ○ |
| C-07 | ビルド時メモリ8GB制限 | E-10 | ○ |
| C-08 | E2Eテスト60秒タイムアウト | E-11 | ○ |
| C-09 | ヘルスエンドポイント応答 | E-01 | ○ |
| C-10 | Dockerヘルスチェック動作 | E-09 | ○ |
| C-11 | ヘルスチェックリトライ3回 | E-09 | ○ |
| C-12 | コンテナ自動再起動 | E-09 | ○ |
| C-13 | メトリクスエンドポイント | E-01 | ○ |
| C-14 | パスワード認証 | E-03 | ○ |
| C-15 | bcryptハッシュ化（cost=12） | E-03 | ○ |
| C-16 | トークン有効期限検証 | E-04 | ○ |
| C-17 | OpenID認証 | E-02, E-05 | ○ |
| C-18 | ヘッダー認証（プロキシ認証） | E-04 | ○ |
| C-19 | セッション検証 | E-04 | ○ |
| C-20 | ファイル削除権限チェック | E-05 | ○ |
| C-21 | 管理者権限チェック | E-07 | ○ |
| C-22 | E2E暗号化 | E-06 | ○ |
| C-23 | 暗号化キー管理 | E-06 | ○ |
| C-24 | パストラバーサル防止 | E-05 | ○ |
| C-25 | HTTPS通信 | E-01 | ○ |
| C-26 | CORSヘッダー | E-01 | ○ |
| C-27 | X-Powered-By無効化 | E-01 | ○ |
| C-28 | Cross-Origin-Opener-Policy | E-01 | ○ |
| C-29 | Cross-Origin-Embedder-Policy | E-01 | ○ |
| C-30 | nodeIntegration無効化 | E-08 | ○ |
| C-31 | webSecurity有効化 | E-08 | ○ |
| C-32 | allowRunningInsecureContent無効化 | E-08 | ○ |
| C-33 | ナビゲーション防止 | E-08 | ○ |
| C-34 | パーミッション制限 | E-08 | ○ |
| C-35 | sinceパラメータ検証 | E-05 | ○ |
| C-36 | CRDTマージによる収束 | E-14, E-15 | △ |
| C-37 | Merkleツリー差分検出 | E-14 | △ |
| C-38 | 同期エラー復旧 | E-07 | ○ |
| C-39 | 暗号化エラー復旧 | E-07 | ○ |
| C-40 | ファイルアップロードエラー処理 | E-05 | ○ |
| C-41 | ユーザーファイルリセット | E-05 | ○ |
| C-42 | リクエストログ出力 | E-19, E-13 | ○ |
| C-43 | デバッグログ出力 | E-02 | ○ |
| C-44 | 環境変数設定 | E-02 | ○ |
| C-45 | 設定ファイル読み込み | E-02 | ○ |
| C-46 | 設定値バリデーション | E-02 | ○ |
| C-47 | バージョン情報取得 | E-01 | ○ |
| C-48 | パスワードリセットスクリプト | E-17 | ○ |
| C-49 | OpenID無効化スクリプト | E-18 | ○ |
| C-50 | マイグレーション実行 | E-13 | ○ |
| C-51 | CORSプロキシ有効化 | E-01, E-02 | ○ |
| C-52 | 複数認証方式切替 | E-02 | ○ |
| C-53 | 信頼済みプロキシ設定 | E-01, E-02 | ○ |
| C-54 | Electron v35以上対応 | E-12 | ○ |
| C-55 | Node.js v22以上対応 | E-12 | ○ |
| C-56 | Dockerイメージビルド | E-10 | ○ |
| C-57 | モバイルブラウザ対応 | E-11 | ○ |
| C-58 | Lintチェック | E-12 | ○ |
| C-59 | TypeScript型チェック | E-12 | ○ |
| C-60 | 単体テスト実行 | E-12, E-13 | ○ |

## 4) 不足情報（Unknown / Missing）
- **API応答時間の具体的要件（C-01）**：コード内に具体的なレスポンス時間の要件定義がない。パフォーマンス要件は運用環境に依存するため、別途定義が必要
  - 候補：SLA定義書 / パフォーマンステスト結果 / 運用要件定義書
- **CRDT収束の検証基準（C-36）**：CRDTの実装は存在するが、収束の具体的な検証基準や許容時間が明示されていない
  - 候補：CRDT設計書 / 同期仕様書 / 収束テスト定義
- **Merkleツリー差分検出仕様（C-37）**：Merkleツリーの実装はあるが、差分検出の詳細な仕様・境界条件が不明
  - 候補：同期プロトコル仕様書 / Merkleツリー設計書

## 5) リスクフラグ（レビュー観点）
- **1（中リスク）**：API応答時間テスト（NFT-001）- 具体的な基準値の根拠がないため、実運用での妥当性を要確認
- **1（中リスク）**：CRDT関連テスト（NFT-036、NFT-037）- 分散システムの収束性は複雑なため、追加検証が推奨
- **0（低リスク）**：セキュリティ関連テスト - コードから明確な根拠あり
- **0（低リスク）**：設定・運用性テスト - 設定スキーマから明確な根拠あり

## 6) レビュアーチェックリスト（最小）
- [ ] API応答時間の基準値（200ms）は運用要件と整合しているか確認
- [ ] レート制限値（500リクエスト/分）は想定トラフィックに対して適切か確認
- [ ] ファイルサイズ制限（20MB/50MB）は実際のユースケースに対して十分か確認
- [ ] bcryptのコストパラメータ（12）はセキュリティ要件を満たしているか確認
- [ ] Dockerヘルスチェックのタイミング（60秒間隔、10秒タイムアウト）は適切か確認
- [ ] E2Eテストのタイムアウト（60秒）は全テストシナリオをカバーできるか確認
- [ ] CRDT収束性テストの検証基準を明確化する必要があるか検討
- [ ] 本番環境向けのパフォーマンス基準値を別途定義する必要があるか検討
