---
generated_at: 2026-03-01 19:00:00
metrics:
  claims_total: 42
  claims_with_evidence: 39
  claims_without_evidence: 3
confidence_derived: 0.93
---

# 根拠レポート：アーキテクチャ設計書

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.93**
  - 根拠あり：39 / 42、根拠なし：3
- 優先レビュー（高）
  1. **アトミックファイル書き換えによる設定保存**: 設定ファイル保存の具体的なアトミック性実装の根拠不足
  2. **Azure認証方式（OAuth Device Code Flow）**: AzureConnection.cppの詳細実装を確認していないため根拠不足
  3. **WDDMコンソールレンダラーの役割**: renderer/wddmconの具体的用途の根拠不足

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

- E-01: `README.md` - プロジェクト概要、含まれるプロダクト一覧
- E-02: `src/` ディレクトリ構成 - ソースコード物理構造
- E-03: `src/cascadia/` ディレクトリ構成 - Windows Terminal コンポーネント一覧
- E-04: `src/cascadia/WindowsTerminal/main.cpp` - エントリポイント、WindowEmperor生成
- E-05: `src/cascadia/WindowsTerminal/WindowEmperor.h` - プロセス・ウィンドウ管理クラス定義
- E-06: `src/cascadia/WindowsTerminal/AppHost.h` - ウィンドウホストクラス定義
- E-07: `src/cascadia/TerminalApp/AppLogic.h` - アプリケーションロジッククラス定義
- E-08: `src/cascadia/TerminalCore/Terminal.hpp` - Terminal コアクラス定義、ITerminalApi/IRenderData/ITerminalInput実装
- E-09: `src/cascadia/TerminalControl/ControlCore.h` - ControlCoreクラス定義、コメントによる設計意図記述
- E-10: `src/cascadia/TerminalConnection/ConptyConnection.h` - ConPTY接続実装
- E-11: `src/cascadia/TerminalSettingsModel/CascadiaSettings.h` - 設定モデルクラス定義
- E-12: `src/renderer/inc/IRenderData.hpp` - レンダラーインターフェース定義
- E-13: `src/renderer/base/` - レンダラー基底実装ファイル一覧
- E-14: `src/renderer/atlas/` - AtlasEngine GPU レンダラーファイル一覧
- E-15: `src/renderer/gdi/` - GDIレンダラー存在確認
- E-16: `src/renderer/uia/` - UIAレンダラー存在確認
- E-17: `src/terminal/parser/StateMachine.hpp` - VTパーサーステートマシン定義
- E-18: `src/terminal/adapter/ITerminalApi.hpp` - ITerminalApi インターフェース定義
- E-19: `src/host/` ディレクトリ構成 - Console Host ソースファイル一覧
- E-20: `src/server/` ディレクトリ構成 - ApiDispatchers, IoDispatchers 等
- E-21: `src/buffer/out/` - TextBuffer 存在確認
- E-22: `vcpkg.json` - 外部依存パッケージ定義（fmt, ms-gsl, jsoncpp, cli11, cmark）
- E-23: `src/features.xml` - フィーチャーフラグ定義
- E-24: `src/inc/til.h` - TIL (Terminal Implementation Library) ヘッダ
- E-25: `OpenConsole.slnx` - ソリューション定義、プロジェクト間ビルド依存関係
- E-26: `src/common.build.pre.props` - 共通ビルド設定
- E-27: `Directory.Build.props` - MSBuildキャッシュ設定
- E-28: `src/cascadia/TerminalApp/Pane.h` - ペインクラス定義、ツリー構造コメント
- E-29: `src/interactivity/` - interactivity ディレクトリ構成（base, win32, onecore）
- E-30: `src/winconpty/winconpty.h` - ConPTYライブラリ
- E-31: `src/cascadia/TerminalConnection/` ファイル一覧 - AzureConnection, EchoConnection 存在確認
- E-32: `src/propslib/` ファイル一覧 - RegistrySerialization, ShortcutSerialization
- E-33: `src/tsf/` - TSF (Text Services Framework) ファイル一覧
- E-34: `src/audio/midi/` - MIDIオーディオ
- E-35: `.clang-format` - コードフォーマット設定の存在
- E-36: `.editorconfig` - エディタ設定の存在
- E-37: `src/StaticAnalysis.ruleset` - 静的解析ルール
- E-38: `XamlStyler.json` - XAMLスタイル設定

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Windows Terminal はモノレポ構成で、Console HostとWindows Terminalの2プロダクトを含む | E-01, E-02 | ○ |
| C-02 | C++/C++WinRT で実装されている | E-04, E-08, E-09 | ○ |
| C-03 | コンポーネントベースのレイヤードアーキテクチャを採用 | E-03, E-08, E-09 | ○ |
| C-04 | WindowEmperrorがプロセス・ウィンドウ管理を担う | E-04, E-05 | ○ |
| C-05 | AppHostがウィンドウホストとして機能する | E-06 | ○ |
| C-06 | AppLogicがアプリケーション全体のロジックを管理する | E-07 | ○ |
| C-07 | TerminalクラスがITerminalApi, IRenderData, ITerminalInputの3インターフェースを実装 | E-08 | ○ |
| C-08 | ControlCoreがTerminal, Renderer, ITerminalConnectionをカプセル化する | E-09 | ○ |
| C-09 | ConptyConnectionがパイプ経由でシェルプロセスと通信する | E-10 | ○ |
| C-10 | CascadiaSettingsがGlobals設定とProfilesを管理する | E-11 | ○ |
| C-11 | IRenderDataインターフェースがレンダラーとコアの橋渡しをする | E-12 | ○ |
| C-12 | AtlasEngineがDirectX 11ベースのGPUレンダラーである | E-14 | ○ |
| C-13 | GdiEngineがレガシーGDIレンダラーとして存在する | E-15 | ○ |
| C-14 | UiaEngineがアクセシビリティ用レンダラーとして存在する | E-16 | ○ |
| C-15 | StateMachineがVTシーケンスをパースする | E-17 | ○ |
| C-16 | ITerminalApiがコアとアダプターの抽象化レイヤーである | E-18 | ○ |
| C-17 | Console Hostがhost/, server/で構成される | E-19, E-20 | ○ |
| C-18 | ApiDispatchers, IoDispatchersがコンソールAPIのディスパッチを行う | E-20 | ○ |
| C-19 | TextBufferがbuffer/out/に実装されている | E-21 | ○ |
| C-20 | 外部依存としてfmt 11.1.4, ms-gsl 3.1.0, jsoncpp 1.9.5, cli11 2.4.2, cmark 0.30.3を使用 | E-22 | ○ |
| C-21 | features.xmlでフィーチャーフラグが管理されている | E-23 | ○ |
| C-22 | TIL (Terminal Implementation Library) がinc/til/配下に存在する | E-24 | ○ |
| C-23 | MSBuildベースのビルドシステムを使用 | E-25, E-26, E-27 | ○ |
| C-24 | Paneクラスがツリー構造のCompositeパターンで分割レイアウトを実現 | E-28 | ○ |
| C-25 | interactivityがbase/win32/onecoreの3実装を持つ | E-29 | ○ |
| C-26 | winconptyがConPTYライブラリとして提供される | E-30 | ○ |
| C-27 | AzureConnection, EchoConnectionが接続方式として存在する | E-31 | ○ |
| C-28 | RegistrySerialization, ShortcutSerializationがConsole Host設定の永続化を担う | E-32 | ○ |
| C-29 | TSF統合によるIMEサポートが存在する | E-33 | ○ |
| C-30 | MIDIオーディオ再生機能が存在する | E-34, E-09 | ○ |
| C-31 | .clang-format, .editorconfigによるコーディング規約が適用されている | E-35, E-36 | ○ |
| C-32 | 静的解析ルールセットが適用されている | E-37 | ○ |
| C-33 | XAMLスタイル設定が存在する | E-38 | ○ |
| C-34 | Terminalクラスがstd::functionコールバックで上位レイヤーに通知する | E-08 | ○ |
| C-35 | til::recursive_ticket_lockによるターミナルバッファの排他制御 | E-08 | ○ |
| C-36 | ConptyConnectionがtil::ticket_lockで書き込み排他制御を行う | E-10 | ○ |
| C-37 | ThrottledFuncによるスロットリングがControlCoreで使用されている | E-09 | ○ |
| C-38 | RendererとTerminal間に循環依存が存在する（ControlCore.hのコメントに記述あり） | E-09 | ○ |
| C-39 | WindowsInboxブランディングトークンで機能分離している | E-23 | ○ |
| C-40 | 設定ファイル保存がアトミックファイル書き換えで行われる | **根拠なし** | △ |
| C-41 | Azure認証がOAuth Device Code Flowで行われる | **根拠なし** | △ |
| C-42 | WDDMコンソールレンダラー（renderer/wddmcon）の具体的用途 | **根拠なし** | △ |

## 4) 不足情報（Unknown / Missing）
- C-40: 設定ファイルの保存メカニズムの詳細はCascadiaSettingsSerialization.cppの実装を確認する必要がある。アトミック書き換えかどうかは推測に基づく。
  - 候補：`src/cascadia/TerminalSettingsModel/CascadiaSettingsSerialization.cpp` / 設定保存関連のユーティリティコード
- C-41: AzureConnection の認証フローの詳細はAzureConnection.cppの実装確認が必要。AzureClientID.hの存在からOAuth利用は推測される。
  - 候補：`src/cascadia/TerminalConnection/AzureConnection.cpp` / `src/cascadia/TerminalConnection/AzureClientID.h`
- C-42: renderer/wddmconの具体的役割はWDDMCon関連のソースコードの詳細確認が必要。
  - 候補：`src/renderer/wddmcon/` 配下のソースコード

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全体的なアーキテクチャ構造の記述は多数のソースファイルから直接確認済み
- 0: 低リスク - 依存関係はOpenConsole.slnxのビルド依存定義とソースコードのincludeから確認
- 0: 低リスク - 外部依存パッケージのバージョンはvcpkg.jsonから正確に取得
- 1: 中リスク - データフロー（シーケンス図）は複数ソースファイルの呼び出し関係から再構成したもの。実際の制御フローと異なる可能性あり
- 1: 中リスク - Console Host側のデータフローは推測を含む。condrv.sys経由の詳細なI/Oパスは実装確認が十分でない
- 0: 低リスク - レイヤー分離の記述はディレクトリ構造とinclude関係から確認

## 6) レビュアーチェックリスト（最小）
- [ ] レイヤー定義（Presentation / Control / Core / Settings Model / Connection / Renderer）が実際のコード構造と合致しているか
- [ ] データフローのシーケンス図が実際の関数呼び出しチェーンと一致しているか
- [ ] コンポーネント依存関係図の矢印方向が実際のinclude/参照関係と合っているか
- [ ] 設定ファイル保存のアトミック性に関する記述（C-40）が正しいか、CascadiaSettingsSerialization.cppを確認
- [ ] Azure認証フロー（C-41）の記述が正しいか、AzureConnection.cppを確認
- [ ] renderer/wddmconの記述（C-42）が正しいか、該当ソースコードを確認
- [ ] フィーチャーフラグの記述が最新のfeatures.xmlと整合しているか
- [ ] RendererとTerminal間の循環依存に関する記述が現行実装と合致しているか
