---
generated_at: 2026-02-19 12:00:00
metrics:
  claims_total: 30
  claims_with_evidence: 27
  claims_without_evidence: 3
confidence_derived: 0.90
---

# 根拠レポート：データベース設計書

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.90**
  - 根拠あり：27 / 30、根拠なし：3
- 優先レビュー（高）
  1. **PerDocumentCacheの汎用使用箇所の網羅性**：コード全体での使用箇所の完全な列挙が困難
  2. **CompileCacheのキャッシュ有効期間の正確な値**：コード内のロジック解釈に依存
  3. **BackendConfigurationのValueTが保持可能な全型の網羅性**：SumTypeの全型を列挙しているが漏れの可能性あり

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

- E-01: `workspace-d/source/workspaced/index_format.d` - IndexCache構造体、DefinitionElement構造体、ModuleDefinition構造体の定義
- E-02: `workspace-d/source/workspaced/com/index.d` - IndexComponent、ImportCacheEntry構造体、IndexHealthReport構造体の定義
- E-03: `lsp/source/served/lsp/textdocumentmanager.d` - Document構造体、TextDocumentManager構造体、PerDocumentCache構造体の定義
- E-04: `source/served/types.d` - UserConfiguration構造体（D, DFmt, DScanner, SDL, Editor, Git）、Workspace構造体の定義
- E-05: `workspace-d/source/workspaced/backend.d` - workspaced.backend.Configuration、WorkspaceD.Instance、WorkspaceDクラスの定義
- E-06: `source/served/workers/profilegc.d` - ProfileGCCache、ProfileGCEntry構造体の定義
- E-07: `source/served/commands/code_lens.d` - CompileCache構造体の定義
- E-08: `workspace-d/source/workspaced/com/ccdb.d` - ClangCompilationDatabaseComponent（ccdbコンポーネント）の定義
- E-09: `dub.json` - プロジェクト依存関係とサブパッケージ構成
- E-10: `README.md` - プロジェクト概要とアーキテクチャ説明
- E-11: `serverbase/source/served/utils/serverconfig.d` - ConfigHandler mixin、ConfigWorkspace構造体、設定同期ロジック
- E-12: `source/served/commands/symbol_search.d` - OldSymbolsCache構造体、PerDocumentCacheの使用例

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | serve-dはRDBMS（SQL等）を使用していない | E-09, E-10 | ○ |
| C-02 | IndexCacheはsymbolindex.binとしてディスクに永続化される | E-01 (defaultFilename関数, save関数) | ○ |
| C-03 | IndexCacheのバイナリフォーマットはヘッダ"SvDx"で始まる | E-01 (headerMagic定義) | ○ |
| C-04 | IndexCacheのファイル保存先はOSキャッシュディレクトリ | E-01 (defaultFilename関数, standardpaths使用) | ○ |
| C-05 | IndexCache.IndexedFileはfileName, modName, lastModified, fileSize, hasMixin, elementsを持つ | E-01 (IndexedFile構造体) | ○ |
| C-06 | ImportCacheEntryはsuccess, fileName, lastModified, fileSize, isIncomplete, _allImports, _definitionsを持つ | E-02 (ImportCacheEntry構造体) | ○ |
| C-07 | ImportCacheEntryはModuleRefをキーとする連想配列で管理される | E-02 (cache変数: ImportCacheEntry[ModuleRef]) | ○ |
| C-08 | DefinitionElementはname, line, type, attributes, range, insideFunction, insideAggregate, visibility, versioned, debugVersioned, hasOtherConditionalを持つ | E-01 (DefinitionElement構造体) | ○ |
| C-09 | DefinitionElementのtypeフィールドはc,s,i,T,f,g,u,e,v,a,I等のchar値を取る | E-01 (DefinitionElementのtypeコメント) | ○ |
| C-10 | DefinitionElementはmsgpackでシリアライズされる | E-01 (serialize/deserialize関数, import msgpack) | ○ |
| C-11 | DefinitionElementのserializeVersionは2である | E-01 (serializeVersion = 2) | ○ |
| C-12 | TextDocumentManagerはDocumentUriをキーとする連想配列でDocumentを管理する | E-03 (documentStore: Document[DocumentUri]) | ○ |
| C-13 | Documentはuri, languageId, version_, textを持つ | E-03 (Document構造体) | ○ |
| C-14 | TextDocumentManagerはdidOpen/didChange/didCloseイベントで更新される | E-03 (process関数) | ○ |
| C-15 | UserConfigurationはD, DFmt, DScanner, SDL, Editor, Gitのネスト構造体を持つ | E-04 (Configuration構造体) | ○ |
| C-16 | UserConfigurationはperWorkspaceConfigurationStoreでワークスペース毎に管理される | E-11 (perWorkspaceConfigurationStore定義) | ○ |
| C-17 | Backend ConfigurationはSumType(null, string, bool, long, double, 配列, 連想配列)の値を保持する | E-05 (ValueT型定義) | ○ |
| C-18 | ProfileGCCacheはDocumentUriをキーとしてPerDocumentCacheを管理する | E-06 (caches: PerDocumentCache[DocumentUri]) | ○ |
| C-19 | ProfileGCEntryはbytesAllocated, allocationCount, type, uri, displayFile, lineを持つ | E-06 (ProfileGCEntry構造体) | ○ |
| C-20 | PerDocumentCacheはテンプレートパラメータTで任意のデータ型を格納する | E-03 (PerDocumentCache(T)定義) | ○ |
| C-21 | PerDocumentCacheはドキュメントバージョンでキャッシュ有効性を判定する | E-03 (cached関数: version_比較) | ○ |
| C-22 | CompileCacheはat, code, retの3フィールドを持つ | E-07 (CompileCache構造体) | ○ |
| C-23 | CompileCacheの有効期間は2分～20分でコンパイル時間に応じて変動する | E-07 (条件分岐: 500ms以上で20分, 30ms以上で5分, それ以外で2分) | ○ |
| C-24 | Workspaceはfolder, initialized, disabled, startupErrorNotifications, selected, useGlobalConfigを持つ | E-04 (Workspace構造体) | ○ |
| C-25 | WorkspaceD.Instanceはcwd, instanceComponents, configを持つ | E-05 (Instance クラス) | ○ |
| C-26 | IndexComponent内のキャッシュはMutex(cachesMutex)で保護されている | E-02 (cachesMutex定義, synchronized使用) | ○ |
| C-27 | IndexCacheのlookupはMutex(lookupMutex)で保護されている | E-01 (lookupMutex定義, synchronized使用) | ○ |
| C-28 | PerDocumentCacheの全使用箇所が網羅されている | **根拠不足** | △ |
| C-29 | BackendConfigurationのValueTが保持可能な全型が正確に列挙されている | E-05 | △ |
| C-30 | TextDocumentManagerがスレッドセーフでないことの明示的な記述 | E-03 (ドキュメントコメント "This data structure is not thread safe.") | ○ |

## 4) 不足情報（Unknown / Missing）
- PerDocumentCache(T)の全使用箇所: コードベース全体を網羅的に検索したが、テンプレートの使用箇所が動的に増減する可能性があるため完全な網羅は保証できない
  - 候補: symbol_search.d (OldSymbolsCache) / 他のcommandモジュール / 将来追加されるキャッシュ
- BackendConfiguration.ValueTの実際の使用パターン: SumType定義は確認できるが、実行時にどの型が最も使用されるかはランタイム依存
  - 候補: コンポーネント設定ファイル / テスト用設定 / プラグイン設定
- IndexCacheのフォーマットバージョン互換性: 現在のバージョン '1' 以外のバージョンに対する処理は「unsupported」例外をスローするが、過去バージョンの詳細は不明
  - 候補: git履歴 / リリースノート / 変更ログ

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 大部分のデータストア定義はソースコードの構造体定義から直接確認可能
- 1: 中リスク - PerDocumentCacheの使用箇所の網羅性は、将来のコード追加により変わる可能性がある
- 0: 低リスク - IndexCacheのバイナリフォーマットはコード内のリテラル値から正確に特定可能
- 1: 中リスク - スレッドセーフティの記述はコード内のMutex使用とコメントから推測しているが、全ての競合条件を検証したわけではない

## 6) レビュアーチェックリスト（最小）
- [ ] IndexCacheのバイナリフォーマット（ヘッダ、各フィールドのエンディアン、サイズ）がコードと一致しているか確認
- [ ] DefinitionElementのフィールド一覧がserializeVersion 2に対応するものと一致しているか確認
- [ ] UserConfigurationの各セクション（D, DFmt, DScanner, SDL, Editor, Git）のフィールドが最新のコードと一致しているか確認
- [ ] PerDocumentCacheの使用箇所が設計書で言及されている以外にもないか検索確認
- [ ] Workspace構造体とWorkspaceD.Instanceの対応関係が実際のコードフローと一致しているか確認
- [ ] ER図の多重度（1:1, 1:N）が実際のコード実装と整合しているか確認
