---
generated_at: 2026-02-24 12:00: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. **稼働率要件**: コードから明示的な定義が見つからない
  2. **RTO/RPO要件**: 明示的な障害復旧目標の定義なし
  3. **レートリミット設定**: プロバイダー依存であり内部定義なし

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

- E-01: `packages/opencode/src/tool/bash.ts` - Bashツールのタイムアウト設定
- E-02: `packages/opencode/src/tool/webfetch.ts` - WebFetchツールの制限設定
- E-03: `packages/opencode/src/mcp/index.ts` - MCPサーバーの接続タイムアウト
- E-04: `packages/opencode/src/provider/provider.ts` - プロバイダーのタイムアウト設定
- E-05: `packages/opencode/src/server/server.ts` - サーバー設定、CORS、認証
- E-06: `packages/opencode/src/session/retry.ts` - リトライ戦略の定数
- E-07: `packages/opencode/src/auth/index.ts` - 認証情報管理
- E-08: `packages/opencode/src/config/config.ts` - 設定階層、MCP設定スキーマ
- E-09: `packages/opencode/src/util/log.ts` - ログ管理設定
- E-10: `packages/opencode/src/storage/db.ts` - データベースPRAGMA設定
- E-11: `packages/opencode/src/flag/flag.ts` - 環境変数フラグ
- E-12: `packages/opencode/src/session/compaction.ts` - コンパクション設定
- E-13: `sst.config.ts` - インフラ構成
- E-14: `infra/app.ts` - Cloudflare Workers設定
- E-15: `infra/enterprise.ts` - エンタープライズ構成
- E-16: `packages/opencode/src/util/timeout.ts` - タイムアウトユーティリティ
- E-17: `package.json` - プロジェクト依存関係、ランタイム設定

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Bashコマンドのデフォルトタイムアウトは2分 | E-01 (`DEFAULT_TIMEOUT = Flag.OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS \|\| 2 * 60 * 1000`) | ○ |
| C-02 | WebFetchのデフォルトタイムアウトは30秒 | E-02 (`DEFAULT_TIMEOUT = 30 * 1000`) | ○ |
| C-03 | WebFetchの最大タイムアウトは120秒 | E-02 (`MAX_TIMEOUT = 120 * 1000`) | ○ |
| C-04 | MCPサーバー接続タイムアウトは30秒 | E-03 (`DEFAULT_TIMEOUT = 30_000`) | ○ |
| C-05 | プロバイダーAPIのデフォルトタイムアウトは5分 | E-04, E-08 (config.ts: `timeout: z.number()...Default is 300000`) | ○ |
| C-06 | SSEハートビートは10秒間隔 | E-05 (`setInterval(() => {...}, 10_000)`) | ○ |
| C-07 | WebFetchレスポンスサイズ上限は5MB | E-02 (`MAX_RESPONSE_SIZE = 5 * 1024 * 1024`) | ○ |
| C-08 | Bashメタデータ出力は30,000文字以内 | E-01 (`MAX_METADATA_LENGTH = 30_000`) | ○ |
| C-09 | ログファイルは10ファイル保持 | E-09 (`if (files.length <= 5) return; filesToDelete = files.slice(0, -10)`) | ○ |
| C-10 | コンパクションバッファは20,000トークン | E-12 (`COMPACTION_BUFFER = 20_000`) | ○ |
| C-11 | プルーニング最小閾値は20,000トークン | E-12 (`PRUNE_MINIMUM = 20_000`) | ○ |
| C-12 | プルーニング保護閾値は40,000トークン | E-12 (`PRUNE_PROTECT = 40_000`) | ○ |
| C-13 | リトライ初期遅延は2,000ms | E-06 (`RETRY_INITIAL_DELAY = 2000`) | ○ |
| C-14 | リトライバックオフ係数は2倍 | E-06 (`RETRY_BACKOFF_FACTOR = 2`) | ○ |
| C-15 | ヘッダーなし時の最大リトライ遅延は30秒 | E-06 (`RETRY_MAX_DELAY_NO_HEADERS = 30_000`) | ○ |
| C-16 | 最大リトライ遅延は32bit最大値 | E-06 (`RETRY_MAX_DELAY = 2_147_483_647`) | ○ |
| C-17 | サーバーはBasic認証をサポート | E-05 (`basicAuth({ username, password })`) | ○ |
| C-18 | MCPはOAuth認証をサポート | E-03 (`McpOAuthProvider`) | ○ |
| C-19 | 認証ファイルの権限は0o600 | E-07 (`await Filesystem.writeJson(filepath, data, 0o600)`) | ○ |
| C-20 | CORSでlocalhost許可 | E-05 (`if (input.startsWith("http://localhost:")) return input`) | ○ |
| C-21 | CORSでopencode.aiドメイン許可 | E-05 (`/^https:\/\/([a-z0-9-]+\.)*opencode\.ai$/`) | ○ |
| C-22 | CSPでwasm-unsafe-eval許可 | E-05 (`script-src 'self' 'wasm-unsafe-eval'`) | ○ |
| C-23 | macOSの管理設定ディレクトリ | E-08 (`"/Library/Application Support/opencode"`) | ○ |
| C-24 | Windowsの管理設定ディレクトリ | E-08 (`path.join(process.env.ProgramData \|\| "C:\\ProgramData", "opencode")`) | ○ |
| C-25 | Linuxの管理設定ディレクトリ | E-08 (`"/etc/opencode"`) | ○ |
| C-26 | 18種類のバンドルプロバイダー | E-04 (`BUNDLED_PROVIDERS`オブジェクト) | ○ |
| C-27 | npmによるカスタムプロバイダーロード | E-04 (`BunProc.install(model.api.npm, "latest")`) | ○ |
| C-28 | 設定の7段階優先度 | E-08 (コード内のコメントとロード順序) | ○ |
| C-29 | SQLiteのWALモード | E-10 (`sqlite.run("PRAGMA journal_mode = WAL")`) | ○ |
| C-30 | SQLiteのbusy_timeout=5000 | E-10 (`sqlite.run("PRAGMA busy_timeout = 5000")`) | ○ |
| C-31 | SQLiteのcache_size=64MB | E-10 (`sqlite.run("PRAGMA cache_size = -64000")`) | ○ |
| C-32 | ログレベル4種類 | E-09 (`z.enum(["DEBUG", "INFO", "WARN", "ERROR"])`) | ○ |
| C-33 | Drizzle ORM使用 | E-10 (`import { drizzle } from "drizzle-orm/bun-sqlite"`) | ○ |
| C-34 | JSONCサポート | E-08 (`parseJsonc`) | ○ |
| C-35 | 環境変数置換対応 | E-08 (`text.replace(/\{env:([^}]+)\}/g, ...)`) | ○ |
| C-36 | ファイル参照対応 | E-08 (`text.match(/\{file:[^}]+\}/g)`) | ○ |
| C-37 | Cloudflare Workers使用 | E-13, E-14 (`sst.cloudflare.Worker`) | ○ |
| C-38 | PlanetScale使用 | E-13 (`providers: { planetscale: "0.4.1" }`) | ○ |
| C-39 | Stripe使用 | E-13 (`stripe: { apiKey: process.env.STRIPE_SECRET_KEY }`) | ○ |
| C-40 | Bun 1.3.9使用 | E-17 (`"packageManager": "bun@1.3.9"`) | ○ |
| C-41 | mDNSサービスディスカバリ対応 | E-05 (`MDNS.publish(server.port!, opts.mdnsDomain)`) | ○ |
| C-42 | idleTimeout=0で無制限接続 | E-05 (`idleTimeout: 0`) | ○ |
| C-43 | 稼働率の明示的定義 | **根拠なし** | △ |
| C-44 | RTO/RPOの明示的定義 | **根拠なし** | △ |
| C-45 | 内部レートリミット設定 | **根拠なし** | △ |

## 4) 不足情報（Unknown / Missing）
- **稼働率要件（C-43）**: SLAに関する明示的な定義がコードに存在しない
  - 候補: 運用ドキュメント / SLA契約書 / 監視設定ファイル
- **RTO/RPO要件（C-44）**: 障害復旧に関する明示的な定義がコードに存在しない
  - 候補: DR計画書 / バックアップポリシー / 運用手順書
- **レートリミット（C-45）**: 内部的なレートリミット実装が存在しない（プロバイダー依存）
  - 候補: プロバイダー仕様書 / API制限ドキュメント

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 性能要件（タイムアウト、バッファサイズ） - ソースコードに明確な定数定義あり
- **0 (低リスク)**: セキュリティ要件（認証、CORS、CSP） - 実装が確認可能
- **1 (中リスク)**: 可用性要件 - SLA/SLOの定義がコードレベルでは確認できない
- **1 (中リスク)**: レートリミット - 外部プロバイダー依存のため内部制御が限定的

## 6) レビュアーチェックリスト（最小）
- [ ] 性能要件のタイムアウト値が運用要件と一致しているか確認
- [ ] 可用性要件（稼働率、RTO/RPO）について別途定義が必要か判断
- [ ] セキュリティ要件のCSP設定が組織のセキュリティポリシーと整合しているか確認
- [ ] 認証ファイルの権限設定（0o600）が適切か確認
- [ ] ログローテーションの保持数（10ファイル）が運用要件を満たすか確認
- [ ] コンパクション/プルーニングの閾値が実際のユースケースに適合するか確認
- [ ] エンタープライズ向け管理設定ディレクトリのパスが組織の標準と一致しているか確認
