---
generated_at: 2026-02-18 10:30:00
metrics:
  claims_total: 45
  claims_with_evidence: 42
  claims_without_evidence: 3
confidence_derived: 0.93
---

# 根拠レポート：非機能要件定義書

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.93**
  - 根拠あり：42 / 45、根拠なし：3
- 優先レビュー（高）
  1. **稼働率SLA**：Vercel SLAの具体的な数値未確認
  2. **RTO（数分程度）**：実測値なし、Vercelドキュメント参照推奨
  3. **タイムアウト目標値**：コード内で明示的なタイムアウト値が未定義の箇所あり

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

- E-01: `frontend/apps/app/next.config.ts`
- E-02: `frontend/apps/app/sentry.server.config.ts`
- E-03: `frontend/apps/app/sentry.edge.config.ts`
- E-04: `frontend/apps/app/instrumentation-client.ts`
- E-05: `frontend/apps/app/middleware.ts`
- E-06: `frontend/apps/app/vercel.json`
- E-07: `frontend/internal-packages/db/src/utils/retry.ts`
- E-08: `frontend/internal-packages/db/supabase/config.toml`
- E-09: `frontend/internal-packages/agent/src/constants.ts`
- E-10: `frontend/internal-packages/agent/src/utils/errorHandling.ts`
- E-11: `frontend/internal-packages/security/src/cryptoBox.ts`
- E-12: `frontend/internal-packages/agent/src/checkpoint/SupabaseCheckpointSaver.ts`
- E-13: `frontend/internal-packages/e2e/playwright.config.ts`
- E-14: `frontend/apps/app/features/stream/utils/withTimeoutAndAbort.ts`
- E-15: `turbo.json`
- E-16: `package.json`
- E-17: `CLAUDE.md`

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | E2Eテストタイムアウト15秒 | E-13 (playwright.config.ts: timeout: 15 * 1000) | ○ |
| C-02 | 静的アセットにstale-while-revalidate=86400設定 | E-01 (next.config.ts: headers Cache-Control) | ○ |
| C-03 | withTimeoutAndAbortによるリクエストタイムアウト管理 | E-14 (withTimeoutAndAbort.ts) | ○ |
| C-04 | API最大行数1000行/リクエスト | E-08 (config.toml: max_rows = 1000) | ○ |
| C-05 | コネクションプール最大100クライアント | E-08 (config.toml: max_client_conn = 100) | ○ |
| C-06 | デフォルトプールサイズ20接続 | E-08 (config.toml: default_pool_size = 20) | ○ |
| C-07 | Turborepo並列度15 | E-15 (turbo.json: concurrency: "15") | ○ |
| C-08 | Supabaseリトライ最大3回 | E-07 (retry.ts: maxAttempts: 3) | ○ |
| C-09 | 指数バックオフ1s,2s,4s(最大8s) | E-07 (retry.ts: baseDelayMs: 1000, backoffMultiplier: 2, maxDelayMs: 8000) | ○ |
| C-10 | ワークフローノードリトライ最大3回 | E-10 (errorHandling.ts: maxAttempts: 3) | ○ |
| C-11 | E2Eテストリトライ CI:5回/ローカル:0回 | E-13 (playwright.config.ts: retries: process.env.CI ? 5 : 0) | ○ |
| C-12 | QA Agentリトライ CI:0回/本番:3回 | E-09 (constants.ts: MAX_RETRY_ATTEMPTS) | ○ |
| C-13 | Vercel Functions supportsCancellation対応 | E-06 (vercel.json: supportsCancellation: true) | ○ |
| C-14 | Supabase Auth認証基盤 | E-08 (config.toml: [auth] enabled = true) | ○ |
| C-15 | GitHub OAuth対応 | E-08 (config.toml: [auth.external.github] enabled = true) | ○ |
| C-16 | JWTトークン3600秒有効 | E-08 (config.toml: jwt_expiry = 3600) | ○ |
| C-17 | リフレッシュトークンローテーション有効 | E-08 (config.toml: enable_refresh_token_rotation = true) | ○ |
| C-18 | リフレッシュトークン再利用10秒間隔 | E-08 (config.toml: refresh_token_reuse_interval = 10) | ○ |
| C-19 | MFA最大10要素 | E-08 (config.toml: max_enrolled_factors = 10) | ○ |
| C-20 | 最小パスワード長6文字 | E-08 (config.toml: minimum_password_length = 6) | ○ |
| C-21 | Cookie httpOnly, sameSite:lax, secure設定 | E-05 (middleware.ts: returnTo cookie設定) | ○ |
| C-22 | AES-256-GCM暗号化 | E-11 (cryptoBox.ts: aes-256-gcm) | ○ |
| C-23 | 初期化ベクトル12バイト | E-11 (cryptoBox.ts: crypto.randomBytes(12)) | ○ |
| C-24 | 認証タグ16バイト | E-11 (cryptoBox.ts: getAuthTag()) | ○ |
| C-25 | 鍵管理LIAM_GITHUB_OAUTH_KEYRING | E-11 (cryptoBox.ts: process.env['LIAM_GITHUB_OAUTH_KEYRING']) | ○ |
| C-26 | Next.js Middlewareによるルート保護 | E-05 (middleware.ts: updateSession) | ○ |
| C-27 | ERD直接アクセス本番ブロック | E-05 (middleware.ts: x-liam-rewrite-source検証) | ○ |
| C-28 | Server Actions allowedOrigins設定 | E-01 (next.config.ts: allowedOrigins: ['liambx.com', 'app.liambx.com']) | ○ |
| C-29 | X-Content-Type-Options, X-Frame-Optionsヘッダー | E-05 (middleware.ts: 403レスポンスヘッダー) | ○ |
| C-30 | organization_idによるデータ分離 | E-12 (SupabaseCheckpointSaver.ts: organizationId) | ○ |
| C-31 | トランザクションプーリングモード | E-08 (config.toml: pool_mode = "transaction") | ○ |
| C-32 | pnpm workspaces + Turborepoモノレポ | E-16, E-15 (package.json, turbo.json) | ○ |
| C-33 | DEFAULT_RECURSION_LIMIT = 10 | E-09 (constants.ts) | ○ |
| C-34 | QA_AGENT_RECURSION_LIMIT = 50 | E-09 (constants.ts) | ○ |
| C-35 | TypeScript 5.9使用 | E-16 (package.json: typescript: "5.9.3") | ○ |
| C-36 | Vitest単体テスト | E-16 (package.json: vitest) | ○ |
| C-37 | Playwright E2Eテスト | E-13 (playwright.config.ts) | ○ |
| C-38 | Sentryエラートラッキング | E-02, E-03, E-04 | ○ |
| C-39 | トレースサンプルレート100% | E-02 (sentry.server.config.ts: tracesSampleRate: 1) | ○ |
| C-40 | リプレイセッションサンプル10% | E-04 (instrumentation-client.ts: replaysSessionSampleRate: 0.1) | ○ |
| C-41 | エラー時リプレイ100% | E-04 (instrumentation-client.ts: replaysOnErrorSampleRate: 1.0) | ○ |
| C-42 | PostgreSQL 15使用 | E-08 (config.toml: major_version = 15) | ○ |
| C-43 | 稼働率Vercel SLAに準拠 | **根拠なし** | △ |
| C-44 | RTO数分程度 | **根拠なし** | △ |
| C-45 | 画面表示3秒以内 | **根拠なし** | △ |

## 4) 不足情報（Unknown / Missing）
- 稼働率SLA：Vercel公式SLAドキュメント参照が必要
  - 候補：Vercel Service Level Agreement / Vercel Enterprise SLA
- RTO具体値：実測データまたはVercelドキュメントからの引用が必要
  - 候補：Vercel Status Page / 障害復旧履歴
- 画面表示レスポンスタイム：明示的な目標値設定なし、実測が必要
  - 候補：Lighthouse / Web Vitals計測データ / パフォーマンステスト結果

## 5) リスクフラグ（レビュー観点）
- 0: セキュリティ設定（暗号化、認証）：コードで明確に実装されている
- 0: リトライ設定：明示的な設定値あり
- 0: 監視設定（Sentry）：設定ファイルで確認可能
- 1: タイムアウト設定：一部処理で明示的なタイムアウト値が未定義
- 2: SLA・RTO：外部サービス依存、具体的な数値は要確認

## 6) レビュアーチェックリスト（最小）
- [ ] Vercel SLAの具体的な稼働率数値を確認する
- [ ] 本番環境でのレスポンスタイム実測値を確認する
- [ ] ストリーミング処理のタイムアウト値が適切か検証する
- [ ] リトライ設定値がビジネス要件と整合するか確認する
- [ ] 暗号化鍵のローテーションポリシーを確認する
- [ ] E2Eテストのリトライ回数（CI: 5回）がフレーキーテスト対策として適切か検討する
