---
generated_at: 2026-02-27 12:00:00
metrics:
  claims_total: 212
  claims_with_evidence: 208
  claims_without_evidence: 4
confidence_derived: 0.98
---

# 根拠レポート：server-renderer 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：208 / 212、根拠なし：4
- 優先レビュー（高）
  1. **C-052 (UT-SRR-052)**: renderTeleportVNodeのdisabled=''処理 - `disabled || disabled === ''` の条件式の正確な評価結果要確認
  2. **C-096 (UT-SRR-096)**: pipeToWebWritableのCloudFlare Workers互換 - writer.readyのtry-catch判定がランタイム固有の挙動に依存
  3. **C-106 (UT-SRR-106)**: ssrCompileのキャッシュキー差異 - JSON.stringifyによる関数シリアライズ挙動が環境依存の可能性
  4. **C-115 (UT-SRR-115)**: ssrInterpolateのnull値処理 - toDisplayStringの内部挙動に依存し期待結果が実装によって異なる可能性

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `packages/server-renderer/src/render.ts` - createBuffer, renderComponentVNode, renderVNode, renderVNodeChildren, renderElementVNode, applySSRDirectives, renderTeleportVNode, renderComponentSubTree
- E-02: `packages/server-renderer/src/renderToString.ts` - renderToString, unrollBuffer, nestedUnrollBuffer, unrollBufferSync, resolveTeleports
- E-03: `packages/server-renderer/src/renderToStream.ts` - renderToSimpleStream, renderToNodeStream, pipeToNodeWritable, renderToWebStream, pipeToWebWritable, unrollBuffer(stream), unrollBufferSync(stream), renderToStream
- E-04: `packages/server-renderer/src/helpers/ssrCompile.ts` - ssrCompile, compileCache
- E-05: `packages/server-renderer/src/helpers/ssrGetDirectiveProps.ts` - ssrGetDirectiveProps
- E-06: `packages/server-renderer/src/helpers/ssrInterpolate.ts` - ssrInterpolate
- E-07: `packages/server-renderer/src/helpers/ssrRenderAttrs.ts` - ssrRenderAttrs, ssrRenderDynamicAttr, ssrRenderAttr, ssrRenderClass, ssrRenderStyle, ssrResetCssVars
- E-08: `packages/server-renderer/src/helpers/ssrRenderComponent.ts` - ssrRenderComponent
- E-09: `packages/server-renderer/src/helpers/ssrRenderList.ts` - ssrRenderList
- E-10: `packages/server-renderer/src/helpers/ssrRenderSlot.ts` - ssrRenderSlot, ssrRenderSlotInner, isComment
- E-11: `packages/server-renderer/src/helpers/ssrRenderSuspense.ts` - ssrRenderSuspense
- E-12: `packages/server-renderer/src/helpers/ssrRenderTeleport.ts` - ssrRenderTeleport
- E-13: `packages/server-renderer/src/helpers/ssrVModelHelpers.ts` - ssrLooseContain, ssrRenderDynamicModel, ssrGetDynamicModelProps
- E-14: `packages/server-renderer/src/index.ts` - エクスポート定義
- E-15: `packages/server-renderer/src/internal.ts` - 内部ヘルパーエクスポート定義

## 3) Claims と根拠の対応（レビューの主戦場）

### render.ts - createBuffer
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | getBufferが空SSRBuffer配列を返却する | E-01 L66-73 | ○ |
| C-002 | pushで文字列がバッファに追加される | E-01 L74-81 | ○ |
| C-003 | 連続文字列がappendableにより結合される | E-01 L76-78 | ○ |
| C-004 | PromiseアイテムでhasAsyncがtrueになる | E-01 L82-85 | ○ |
| C-005 | 子バッファのhasAsyncが親に伝播する | E-01 L82-85 | ○ |
| C-006 | 非文字列後のpushでappendableがリセットされる | E-01 L76-81 | ○ |

### render.ts - renderComponentVNode / renderComponentSubTree
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-007 | 同期セットアップでSSRBufferが返却される | E-01 L91-122 | ○ |
| C-008 | 非同期セットアップでPromise<SSRBuffer>が返却される | E-01 L104-119 | ○ |
| C-009 | serverPrefetchが実行される | E-01 L105-115 | ○ |
| C-010 | slotScopeIdがサブツリーに伝達される | E-01 L119 | ○ |
| C-011 | 関数型コンポーネントがrenderVNodeで処理される | E-01 L132-143 | ○ |
| C-012 | 関数型コンポーネントでdata-v-スコープIDが伝播する | E-01 L136-141 | ○ |
| C-013 | ssrRender関数がある場合最適化パスで処理される | E-01 L154-205 | ○ |
| C-014 | テンプレートからssrRenderがコンパイルされる | E-01 L144-152 | ○ |
| C-015 | render関数のみの場合renderVNodeで描画される | E-01 L206-211 | ○ |
| C-016 | template/render未定義で警告と空コメントが出力される | E-01 L212-217 | ○ |
| C-017 | inheritAttrs=falseでattrsが継承されない | E-01 L158 | ○ |
| C-018 | 親コンポーネントのscopeIdが継承される | E-01 L161-179 | ○ |
| C-019 | slotScopeIdがattrsに追加される | E-01 L181-187 | ○ |

### render.ts - renderVNode
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-020 | TextタイプがescapeHtmlで出力される | E-01 L235-236 | ○ |
| C-021 | Commentタイプがコメントとして出力される | E-01 L238-243 | ○ |
| C-022 | children=nullで空コメントが出力される | E-01 L239-243 | ○ |
| C-023 | Staticタイプがそのまま出力される | E-01 L245-246 | ○ |
| C-024 | Fragmentタイプがマーカーで囲まれる | E-01 L248-261 | ○ |
| C-025 | Fragment slotScopeIdsが結合される | E-01 L249-252 | ○ |
| C-026 | ELEMENT shapeFlagでrenderElementVNode呼ばれる | E-01 L263-264 | ○ |
| C-027 | COMPONENT shapeFlagでrenderComponentVNode呼ばれる | E-01 L265-266 | ○ |
| C-028 | TELEPORT shapeFlagでrenderTeleportVNode呼ばれる | E-01 L267-268 | ○ |
| C-029 | SUSPENSE shapeFlagでssContentがレンダリングされる | E-01 L269-270 | ○ |
| C-030 | 不正タイプで警告が出力される | E-01 L271-277 | ○ |
| C-031 | ディレクティブ付きvnodeでapplySSRDirectivesが呼ばれる | E-01 L230-232 | ○ |

### render.ts - renderVNodeChildren / renderElementVNode / applySSRDirectives / renderTeleportVNode
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-032 | 子ノードが順番にレンダリングされる | E-01 L281-290 | ○ |
| C-033 | 空子配列で何もpushされない | E-01 L287-289 | ○ |
| C-034 | props付き要素がレンダリングされる | E-01 L292-304 | ○ |
| C-035 | void要素で閉じタグが出力されない | E-01 L324 | ○ |
| C-036 | innerHTMLがそのまま出力される | E-01 L327-329 | ○ |
| C-037 | textContentがエスケープされて出力される | E-01 L330-332 | ○ |
| C-038 | textarea valueがエスケープされて出力される | E-01 L333-335 | ○ |
| C-039 | テキスト子ノードがエスケープされて出力される | E-01 L339-340 | ○ |
| C-040 | 配列子ノードがrenderVNodeChildrenで出力される | E-01 L341-347 | ○ |
| C-041 | scopeIdがopenTagに含まれる | E-01 L306-308 | ○ |
| C-042 | 親scopeIDが継承される | E-01 L310-318 | ○ |
| C-043 | slotScopeIdが付与される | E-01 L319-321 | ○ |
| C-044 | getSSRPropsを持つディレクティブのpropsがマージされる | E-01 L354-371 | ○ |
| C-045 | getSSRPropsがないディレクティブがスキップされる | E-01 L365-367 | ○ |
| C-046 | rawProps=nullで空オブジェクトでマージされる | E-01 L370 | ○ |
| C-047 | getSSRPropsがnull返却時toMergeに追加されない | E-01 L367 | ○ |
| C-048 | 有効ターゲットでテレポートレンダリング | E-01 L373-407 | ○ |
| C-049 | ターゲット未指定で警告と空配列 | E-01 L380-386 | ○ |
| C-050 | ターゲット非文字列で警告と空配列 | E-01 L387-392 | ○ |
| C-051 | disabledでインラインレンダリング | E-01 L393-406 | ○ |
| C-052 | disabled=''でもdisabledとして扱われる | E-01 L404 | △ |

### renderToString.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-053 | Appが文字列にレンダリングされる | E-02 L70-97 | ○ |
| C-054 | VNodeがAppでラップされる | E-02 L74-77 | ○ |
| C-055 | SSRContextが提供される | E-02 L83 | ○ |
| C-056 | テレポートが解決される | E-02 L88 | ○ |
| C-057 | watcherハンドルがクリーンアップされる | E-02 L90-94 | ○ |
| C-058 | 同期バッファが文字列に展開される | E-02 L52-54, L56-68 | ○ |
| C-059 | 非同期バッファがPromiseとして展開される | E-02 L14-50 | ○ |
| C-060 | ネストされたバッファが再帰的に展開される | E-02 L38-46 | ○ |
| C-061 | 空バッファが空文字列に展開される | E-02 L52-54 | ○ |
| C-062 | hasAsync=falseでunrollBufferSyncにフォールバック | E-02 L19-21 | ○ |
| C-063 | 非同期アイテムがPromiseチェーンで展開される | E-02 L31-36 | ○ |
| C-064 | ネスト非同期子バッファがPromiseチェーンで展開される | E-02 L38-46 | ○ |
| C-065 | startIndexから処理が開始される | E-02 L24 | ○ |
| C-066 | 同期バッファの全文字列が結合される | E-02 L56-68 | ○ |
| C-067 | ネスト同期バッファが再帰的に結合される | E-02 L62-64 | ○ |
| C-068 | 空バッファが空文字列を返す(sync) | E-02 L56-68 | ○ |
| C-069 | テレポートバッファが解決されcontextに設定される | E-02 L99-110 | ○ |
| C-070 | __teleportBuffersがない場合何もしない | E-02 L100 | ○ |
| C-071 | 既存teleportsが保持される | E-02 L101 | ○ |

### renderToStream.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-072 | Appがストリームにレンダリングされる | E-03 L56-92 | ○ |
| C-073 | VNodeがAppでラップされる | E-03 L61-68 | ○ |
| C-074 | エラー時にstream.destroyが呼ばれる | E-03 L87-89 | ○ |
| C-075 | watcherハンドルがクリーンアップされる | E-03 L80-84 | ○ |
| C-076 | 入力streamがそのまま返却される | E-03 L91 | ○ |
| C-077 | 非同期バッファがストリームに展開される | E-03 L21-42 | ○ |
| C-078 | 同期バッファがunrollBufferSyncで展開される | E-03 L37-41 | ○ |
| C-079 | ネスト非同期バッファが再帰的に展開される | E-03 L33-35 | ○ |
| C-080 | 同期バッファがストリームにpushされる | E-03 L44-54 | ○ |
| C-081 | ネスト同期バッファが再帰的にpushされる | E-03 L50-52 | ○ |
| C-082 | Node.js Readableストリームが返却される | E-03 L107-124 | ○ |
| C-083 | ESMビルドでエラーがスローされる | E-03 L115-121 | ○ |
| C-084 | Writableにコンテンツがwriteされる | E-03 L126-143 | ○ |
| C-085 | nullコンテンツでwritable.endが呼ばれる | E-03 L136 | ○ |
| C-086 | エラー時にwritable.destroyが呼ばれる | E-03 L139-141 | ○ |
| C-087 | ReadableStreamが返却される | E-03 L145-180 | ○ |
| C-088 | ReadableStream未定義でエラーがスローされる | E-03 L149-155 | ○ |
| C-089 | TextEncoderでエンコードされenqueueされる | E-03 L157, L166 | ○ |
| C-090 | nullコンテンツでcontroller.closeが呼ばれる | E-03 L168 | ○ |
| C-091 | cancelでpushが無視される | E-03 L158, L164, L176-178 | ○ |
| C-092 | エラー時にcontroller.errorが呼ばれる | E-03 L171-172 | ○ |
| C-093 | WritableStreamにエンコードコンテンツがwriteされる | E-03 L182-214 | ○ |
| C-094 | nullコンテンツでwriter.closeが呼ばれる | E-03 L204 | ○ |
| C-095 | writer.readyがPromiseの場合awaitされる | E-03 L198-199 | ○ |
| C-096 | writer.readyがPromiseでない場合スキップされる | E-03 L191-194 | △ |
| C-097 | エラー時にwriter.closeが呼ばれる | E-03 L207-212 | ○ |
| C-098 | 非推奨警告が出力されrenderToNodeStreamに委譲される | E-03 L97-105 | ○ |

### helpers/ssrCompile.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-099 | テンプレートがSSR render関数にコンパイルされる | E-04 L22-93 | ○ |
| C-100 | コンパイル結果がキャッシュされる | E-04 L65-68, L92 | ○ |
| C-101 | ESMビルドでエラーがスローされる | E-04 L27-33 | ○ |
| C-102 | compilerOptionsがマージされる | E-04 L40-53 | ○ |
| C-103 | isCustomElement/isNativeTagがNOに設定される | E-04 L51-53 | ○ |
| C-104 | DEVモードでコンパイルエラー時に警告が出力される | E-04 L70-81 | ○ |
| C-105 | 本番モードでコンパイルエラー時にエラーがスローされる | E-04 L82-83 | ○ |
| C-106 | 異なるcompilerOptionsで異なるキャッシュになる | E-04 L55-63 | △ |

### helpers/ssrGetDirectiveProps.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-107 | getSSRPropsを持つディレクティブからpropsが取得される | E-05 L3-26 | ○ |
| C-108 | 関数型ディレクティブで空オブジェクトが返却される | E-05 L10, L24 | ○ |
| C-109 | getSSRPropsなしで空オブジェクトが返却される | E-05 L10, L24 | ○ |
| C-110 | getSSRPropsがnull返却で空オブジェクトが返却される | E-05 L22 | ○ |
| C-111 | arg/modifiersがgetSSRPropsに伝達される | E-05 L13-19 | ○ |

### helpers/ssrInterpolate.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-112 | 文字列がHTMLエスケープされる | E-06 L3-5 | ○ |
| C-113 | 数値が文字列変換される | E-06 L3-5 | ○ |
| C-114 | オブジェクトがJSON文字列化される | E-06 L3-5 | ○ |
| C-115 | null値の処理 | E-06 L3-5 | △ |
| C-116 | undefined値が空文字列に変換される | E-06 L3-5 | ○ |
| C-117 | boolean値が文字列に変換される | E-06 L3-5 | ○ |

### helpers/ssrRenderAttrs.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-118 | class属性がレンダリングされる | E-07 L45-46 | ○ |
| C-119 | classNameがclass属性に変換される | E-07 L45 | ○ |
| C-120 | style属性がレンダリングされる | E-07 L47-48 | ○ |
| C-121 | 動的属性がレンダリングされる | E-07 L49-51 | ○ |
| C-122 | key, ref属性が無視される | E-07 L23-25, L34 | ○ |
| C-123 | innerHTML, textContent属性が無視される | E-07 L23-25 | ○ |
| C-124 | イベントハンドラが無視される | E-07 L35 | ○ |
| C-125 | textarea valueが無視される | E-07 L36 | ○ |
| C-126 | '.'プレフィックスが無視される | E-07 L38 | ○ |
| C-127 | '^'プレフィックスがスライスされる | E-07 L44 | ○ |
| C-128 | 空propsで空文字列が返却される | E-07 L27-53 | ○ |
| C-129 | 通常属性がエスケープされる | E-07 L57-79 | ○ |
| C-130 | boolean属性が正しくレンダリングされる | E-07 L69-70 | ○ |
| C-131 | boolean属性falseで空文字列 | E-07 L70 | ○ |
| C-132 | カスタム要素のキーが保持される | E-07 L65-67 | ○ |
| C-133 | SVG要素のキーが保持される | E-07 L66 | ○ |
| C-134 | 通常要素のキーが変換される | E-07 L68 | ○ |
| C-135 | レンダリング不可能値で空文字列 | E-07 L62-64 | ○ |
| C-136 | 安全でない属性名で警告 | E-07 L73-78 | ○ |
| C-137 | 空文字列値で値なし属性 | E-07 L72 | ○ |
| C-138 | 静的キー属性がエスケープされる | E-07 L83-88 | ○ |
| C-139 | ssrRenderAttrのレンダリング不可能値処理 | E-07 L84-86 | ○ |
| C-140 | 文字列クラスがエスケープされる | E-07 L90-92 | ○ |
| C-141 | 配列クラスが正規化される | E-07 L91 | ○ |
| C-142 | オブジェクトクラスが正規化される | E-07 L91 | ○ |
| C-143 | null/undefinedクラスで空文字列 | E-07 L91 | ○ |
| C-144 | 文字列スタイルがエスケープされる | E-07 L94-103 | ○ |
| C-145 | オブジェクトスタイルがstringifyされる | E-07 L101-102 | ○ |
| C-146 | 配列スタイルが正規化される | E-07 L101 | ○ |
| C-147 | falsyスタイルで空文字列 | E-07 L95-97 | ○ |
| C-148 | CSS変数プレフィックスが変換される | E-07 L105-119 | ○ |
| C-149 | 配列値がパススルーされる | E-07 L106, L118 | ○ |
| C-150 | 非CSS変数キーが保持される | E-07 L113 | ○ |

### helpers/ssrRenderComponent.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-151 | コンポーネントがVNodeに変換されレンダリングされる | E-08 L10-22 | ○ |
| C-152 | 子スロットがVNodeに設定される | E-08 L18 | ○ |
| C-153 | propsがnullでもレンダリングされる | E-08 L12 | ○ |
| C-154 | parentComponentが伝達される | E-08 L17-20 | ○ |
| C-155 | slotScopeIdが伝達される | E-08 L15, L20 | ○ |

### helpers/ssrRenderList.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-156 | 配列イテレーション | E-09 L8-11 | ○ |
| C-157 | 文字列イテレーション | E-09 L8-11 | ○ |
| C-158 | 数値レンジイテレーション | E-09 L12-19 | ○ |
| C-159 | オブジェクトイテレーション | E-09 L26-31 | ○ |
| C-160 | イテラブルイテレーション | E-09 L21-25 | ○ |
| C-161 | 非整数警告(DEV) | E-09 L13-16 | ○ |
| C-162 | 空配列で呼ばれない | E-09 L9 | ○ |
| C-163 | 数値0で呼ばれない | E-09 L17 | ○ |
| C-164 | 空文字列で呼ばれない | E-09 L9 | ○ |
| C-165 | null/undefinedで何も起きない | E-09 L8-33 | ○ |

### helpers/ssrRenderSlot.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-166 | スロットがフラグメントマーカーで囲まれる | E-10 L20-41 | ○ |
| C-167 | VNode配列スロットがrenderVNodeChildrenで描画される | E-10 L65-74 | ○ |
| C-168 | SSRスロットのバッファ内容がpushされる | E-10 L80-121 | ○ |
| C-169 | スロット未定義でfallbackRenderFnが呼ばれる | E-10 L124-125 | ○ |
| C-170 | スロット/フォールバック両方なしで何もpushされない | E-10 L124-128 | ○ |
| C-171 | 空VNode配列でfallbackが呼ばれる | E-10 L66-76 | ○ |
| C-172 | コメントのみスロットでfallbackが呼ばれる | E-10 L83-97 | ○ |
| C-173 | transition=trueで空スロットでコメントpush | E-10 L126-128 | ○ |
| C-174 | transitionでフラグメントマーカーが除去される | E-10 L106-113 | ○ |
| C-175 | transition付きでstart==endでコメントpush | E-10 L115-121 | ○ |
| C-176 | slotScopeIdが伝達される | E-10 L63 | ○ |
| C-177 | HTMLコメントがtrueを返す | E-10 L131-138 | ○ |
| C-178 | 空コメントがtrueを返す | E-10 L136 | ○ |
| C-179 | フラグメントマーカーがtrueを返す | E-10 L136 | ○ |
| C-180 | 通常文字列がfalseを返す | E-10 L134 | ○ |
| C-181 | 非文字列がfalseを返す | E-10 L134 | ○ |
| C-182 | 複合コメントがtrueを返す | E-10 L132, L137 | ○ |
| C-183 | コメント+テキストがfalseを返す | E-10 L137 | ○ |

### helpers/ssrRenderSuspense.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-184 | defaultスロットでrenderContentが呼ばれる | E-11 L7-8 | ○ |
| C-185 | defaultなしでコメントpush | E-11 L9-11 | ○ |

### helpers/ssrRenderTeleport.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-186 | テレポートコンテンツがターゲットバッファに追加される | E-12 L9-43 | ○ |
| C-187 | disabledでインラインレンダリング | E-12 L30-32 | ○ |
| C-188 | テレポートマーカーがpushされる | E-12 L16, L42 | ○ |
| C-189 | ネストテレポートでbufferIndexが管理される | E-12 L26, L41 | ○ |
| C-190 | disabledでアンカーコメントがバッファに追加される | E-12 L32 | ○ |
| C-191 | 有効テレポートのバッファにアンカーが含まれる | E-12 L34-38 | ○ |
| C-192 | __teleportBuffersが自動初期化される | E-12 L22 | ○ |

### helpers/ssrVModelHelpers.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-193 | ssrLooseContainで含まれる場合true | E-13 L6-8 | ○ |
| C-194 | ssrLooseContainで含まれない場合false | E-13 L6-8 | ○ |
| C-195 | 空配列でfalse | E-13 L6-8 | ○ |
| C-196 | radio一致で' checked' | E-13 L17-18 | ○ |
| C-197 | radio不一致で空文字列 | E-13 L18 | ○ |
| C-198 | checkbox配列一致で' checked' | E-13 L20 | ○ |
| C-199 | checkbox配列不一致で空文字列 | E-13 L20-21 | ○ |
| C-200 | checkbox boolean trueで' checked' | E-13 L20 | ○ |
| C-201 | checkbox boolean falseで空文字列 | E-13 L21 | ○ |
| C-202 | text型でssrRenderAttrのvalue | E-13 L24-25 | ○ |
| C-203 | type未指定でデフォルトvalue | E-13 L22-25 | ○ |
| C-204 | ssrGetDynamicModelProps radio一致で{checked:true} | E-13 L37 | ○ |
| C-205 | ssrGetDynamicModelProps radio不一致でnull | E-13 L37 | ○ |
| C-206 | ssrGetDynamicModelProps checkbox配列一致で{checked:true} | E-13 L39 | ○ |
| C-207 | ssrGetDynamicModelProps checkbox配列不一致でnull | E-13 L40 | ○ |
| C-208 | ssrGetDynamicModelProps checkbox trueで{checked:true} | E-13 L39 | ○ |
| C-209 | ssrGetDynamicModelProps checkbox falseでnull | E-13 L40 | ○ |
| C-210 | ssrGetDynamicModelProps text型で{value:model} | E-13 L43 | ○ |
| C-211 | ssrGetDynamicModelProps 空existingPropsでデフォルト | E-13 L31, L43 | ○ |
| C-212 | ssrGetDynamicModelProps undefined existingPropsでデフォルト | E-13 L31 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-052 (disabled=''処理)**: `disabled || disabled === ''` の論理演算について、空文字列はfalsyなので `disabled === ''` が評価され結果はtrueとなる。条件は正しいが、実際のVueテンプレートコンパイラの出力と組み合わせたE2Eテストでの検証が望ましい。
  - 候補：Vue compiler-ssrのテスト / Vue公式ドキュメント / disabled属性の仕様
- **C-096 (CloudFlare Workers互換)**: `isPromise(writer.ready)` の判定はCloudFlare Workersの実装に依存。try-catchで例外を握りつぶしている。実際のCloudFlare Workers環境でのテストが必要。
  - 候補：CloudFlare Workers公式ドキュメント / GitHub Issue #4287
- **C-106 (キャッシュキー差異)**: `JSON.stringify` で関数を `toString()` でシリアライズしているが、関数の文字列表現がランタイムによって異なる可能性がある。
  - 候補：各ランタイム（Node.js, Deno, Bun）での検証
- **C-115 (null値処理)**: `toDisplayString(null)` の返却値は `@vue/shared` 内部の実装に依存。server-rendererモジュール内のソースコードだけでは期待結果を確定できない。
  - 候補：`@vue/shared` の `toDisplayString` 実装

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - ヘルパー関数（ssrInterpolate, ssrRenderClass, ssrRenderStyle, ssrRenderAttr等）のテストケースは入出力が明確で信頼度が高い
- 0: 低リスク - v-modelヘルパー（ssrRenderDynamicModel, ssrGetDynamicModelProps）はswitch-caseの分岐が明確
- 0: 低リスク - ssrRenderComponent, ssrRenderSuspense は薄いラッパー関数でリスク低
- 1: 中リスク - renderComponentVNode/renderComponentSubTreeのテストケースはVue内部のssrUtilsに依存するため、モック設計が複雑になる可能性
- 1: 中リスク - renderToSimpleStreamのPromiseチェーンは非同期テストの設計に注意が必要
- 1: 中リスク - ssrCompileはコンパイラとの統合テストが必要で、単体テストではモック範囲が広くなる
- 1: 中リスク - ssrRenderSlotInnerのtransition/fragment除去ロジックの複雑さ
- 2: 高リスク - renderToWebStream/pipeToWebWritableはWeb Streams APIの環境依存性が高く、テスト環境の構築に注意が必要

## 6) レビュアーチェックリスト（最小）
- [ ] C-052 (UT-SRR-052): disabled=''の条件式評価が正しいか確認
- [ ] C-096 (UT-SRR-096): CloudFlare Workers環境でのwriter.ready挙動の確認
- [ ] C-106 (UT-SRR-106): JSON.stringifyによる関数シリアライズの環境差異確認
- [ ] C-115 (UT-SRR-115): toDisplayString(null)の返却値を@vue/shared実装で確認
- [ ] renderComponentSubTree関連テストケース(UT-SRR-011〜019): Vue ssrUtilsモック設計の妥当性確認
- [ ] Web Streams関連テストケース(UT-SRR-087〜097): テスト実行環境でWeb Streams APIが利用可能か確認
- [ ] ssrRenderSlotInner(UT-SRR-167〜176): transition/fragment除去ロジックのエッジケース網羅性確認
- [ ] 全212テストケースのテスト観点（正常系/異常系/境界値）の網羅性確認
