---
generated_at: 2026-02-27 12:00:00
metrics:
  claims_total: 250
  claims_with_evidence: 243
  claims_without_evidence: 7
confidence_derived: 0.97
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：243 / 250、根拠なし：7
- 優先レビュー（高）
  1. **C-014 (UT-SSR-014)**：空文字列入力のコンパイル動作 - baseParseの挙動に依存
  2. **C-087 (UT-SSR-087)**：propsToAttrMapの具体的なマッピング内容が@vue/sharedに依存
  3. **C-244 (UT-SSR-244)**：ディレクティブ付き要素のコンテンツオーバーライド判定の条件が複雑

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

- E-01: `packages/compiler-ssr/src/index.ts` - compile関数の定義（L32-94）
- E-02: `packages/compiler-ssr/src/errors.ts` - SSRエラーコード・メッセージ定義（L1-42）
- E-03: `packages/compiler-ssr/src/runtimeHelpers.ts` - SSRヘルパーシンボル定義（L1-55）
- E-04: `packages/compiler-ssr/src/ssrCodegenTransform.ts` - ssrCodegenTransform, createSSRTransformContext, processChildren, processChildrenAsStatement（L1-251）
- E-05: `packages/compiler-ssr/src/transforms/ssrTransformElement.ts` - ssrTransformElement, buildSSRProps, ssrProcessElement, ヘルパー関数群（L1-489）
- E-06: `packages/compiler-ssr/src/transforms/ssrTransformComponent.ts` - ssrTransformComponent, ssrProcessComponent, clone, subTransform, createVNodeSlotBranch（L1-387）
- E-07: `packages/compiler-ssr/src/transforms/ssrVIf.ts` - ssrTransformIf, ssrProcessIf, processIfBranch（L1-78）
- E-08: `packages/compiler-ssr/src/transforms/ssrVFor.ts` - ssrTransformFor, ssrProcessFor（L1-52）
- E-09: `packages/compiler-ssr/src/transforms/ssrVModel.ts` - ssrTransformModel, findValueBinding（L1-200）
- E-10: `packages/compiler-ssr/src/transforms/ssrVShow.ts` - ssrTransformShow（L1-35）
- E-11: `packages/compiler-ssr/src/transforms/ssrTransformSlotOutlet.ts` - ssrTransformSlotOutlet, ssrProcessSlotOutlet（L1-96）
- E-12: `packages/compiler-ssr/src/transforms/ssrTransformTeleport.ts` - ssrProcessTeleport（L1-71）
- E-13: `packages/compiler-ssr/src/transforms/ssrTransformSuspense.ts` - ssrTransformSuspense, ssrProcessSuspense（L1-83）
- E-14: `packages/compiler-ssr/src/transforms/ssrTransformTransition.ts` - ssrTransformTransition, ssrProcessTransition（L1-39）
- E-15: `packages/compiler-ssr/src/transforms/ssrTransformTransitionGroup.ts` - ssrTransformTransitionGroup, ssrProcessTransitionGroup（L1-118）
- E-16: `packages/compiler-ssr/src/transforms/ssrInjectFallthroughAttrs.ts` - ssrInjectFallthroughAttrs, injectFallthroughAttrs（L1-92）
- E-17: `packages/compiler-ssr/src/transforms/ssrInjectCssVars.ts` - ssrInjectCssVars, injectCssVars（L1-68）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | compile関数が文字列テンプレートをSSRコンパイルできる | E-01 (L49: baseParse, L93: generate) | ○ |
| C-002 | compile関数がRootNodeを直接受け付ける | E-01 (L49: typeof source === 'string' ? baseParse : source) | ○ |
| C-003 | ssr/inSSRフラグがtrueに強制設定される | E-01 (L39-40: ssr: true, inSSR: true) | ○ |
| C-004 | prefixIdentifiersがtrueに強制設定される | E-01 (L43: prefixIdentifiers: true) | ○ |
| C-005 | cacheHandlersがfalseに強制設定される | E-01 (L45: cacheHandlers: false) | ○ |
| C-006 | hoistStaticがfalseに強制設定される | E-01 (L46: hoistStatic: false) | ○ |
| C-007 | functionモード時にscopeIdがnullになる | E-01 (L41: scopeId: options.mode === 'function' ? null : options.scopeId) | ○ |
| C-008 | moduleモード時にscopeIdが保持される | E-01 (L41) | ○ |
| C-009 | ユーザーnodeTransformsがマージされる | E-01 (L71: ...(options.nodeTransforms \|\| [])) | ○ |
| C-010 | ユーザーdirectiveTransformsがマージされる | E-01 (L85: ...(options.directiveTransforms \|\| {})) | ○ |
| C-011 | rawOptionsMapにオプションが保存される | E-01 (L53: rawOptionsMap.set(ast, options)) | ○ |
| C-012 | parserOptionsがマージされる | E-01 (L38: ...parserOptions) | ○ |
| C-013 | cloak/once/memoがnoopとして処理される | E-01 (L82-84: cloak/once/memo: noopDirectiveTransform) | ○ |
| C-014 | 空文字列入力でコンパイルできる | E-01 (L49) | △ |
| C-015 | createSSRCompilerErrorがSSRCompilerErrorを生成する | E-02 (L12-16) | ○ |
| C-016 | locを省略してもエラーが生成される | E-02 (L14: loc?: SourceLocation) | ○ |
| C-017 | エラーメッセージがSSRErrorMessagesから取得される | E-02 (L16: createCompilerError(code, loc, SSRErrorMessages)) | ○ |
| C-018 | X_SSR_UNSAFE_ATTR_NAMEがDOMErrorCodes以上 | E-02 (L20: = 65, L29: if条件) | ○ |
| C-019 | 3つのエラーコードが連番定義 | E-02 (L20-23: 65, 自動インクリメント66, 67) | ○ |
| C-020 | 全SSRErrorCodesに対応するメッセージが定義 | E-02 (L38-42: 3つのメッセージ) | ○ |
| C-021 | ssrHelpersの全19シンボルが正しい名前でマッピング | E-03 (L31-51: 19エントリ) | ○ |
| C-022 | registerRuntimeHelpersで登録される | E-03 (L55: registerRuntimeHelpers(ssrHelpers)) | ○ |
| C-023 | SSR_INTERPOLATEが一意のシンボル | E-03 (L3: unique symbol) | ○ |
| C-024 | ASTのcodegenNodeにBlockStatementが設定される | E-04 (L64: ast.codegenNode = createBlockStatement(context.body)) | ○ |
| C-025 | ssrCssVarsでCSS変数初期化コードが挿入される | E-04 (L47-56: if options.ssrCssVars) | ○ |
| C-026 | cssContext由来のヘルパーがastに追加される | E-04 (L56-58: Array.from(cssContext.helpers).forEach) | ○ |
| C-027 | 複数子要素でフラグメント処理される | E-04 (L61-62: isFragment判定) | ○ |
| C-028 | 単一テキスト子要素でフラグメントにならない | E-04 (L61-62: isText判定) | ○ |
| C-029 | ssrHelpersとhelpersが正しく分離される | E-04 (L68-75: filter/set操作) | ○ |
| C-030 | 子要素がないASTで空のBlockStatement | E-04 (L63-64) | ○ |
| C-031 | helperメソッドでヘルパーが登録・返却される | E-04 (L110-113: helpers.add(name); return name) | ○ |
| C-032 | pushStringPartで新しい_push呼び出しが作成される | E-04 (L114-128: pushStringPart実装) | ○ |
| C-033 | 連続する文字列が結合される | E-04 (L123-124: isString(part) && isString(lastItem)) | ○ |
| C-034 | 式ノードが別要素として追加される | E-04 (L126: bufferedElements.push(part)) | ○ |
| C-035 | pushStatementでcurrentStringがリセットされる | E-04 (L129-133: currentString = null) | ○ |
| C-036 | options.onErrorが設定されている場合にそれが呼ばれる | E-04 (L105-106: options.onError \|\| ...) | ○ |
| C-037 | options.onError未設定時にthrowされる | E-04 (L107-109: (e => { throw e })) | ○ |
| C-038 | asFragment=trueでフラグメントマーカー付与 | E-04 (L161-162: <!--[-->、L237-238: <!--]-->) | ○ |
| C-039 | TEXTノードがescapeHtmlされる | E-04 (L195: escapeHtml(child.content)) | ○ |
| C-040 | COMMENTノードがコメント形式で追加される | E-04 (L199: <!--${child.content}-->) | ○ |
| C-041 | disableComment=trueでコメント出力されない | E-04 (L200: if (!disableComment)) | ○ |
| C-042 | INTERPOLATIONノードがssrInterpolate呼び出しで処理 | E-04 (L205-209: SSR_INTERPOLATE) | ○ |
| C-043 | ELEMENTノード(ELEMENT tagType)がssrProcessElementで処理 | E-04 (L171: ssrProcessElement) | ○ |
| C-044 | ELEMENTノード(COMPONENT tagType)がssrProcessComponentで処理 | E-04 (L174: ssrProcessComponent) | ○ |
| C-045 | ELEMENTノード(SLOT tagType)がssrProcessSlotOutletで処理 | E-04 (L177: ssrProcessSlotOutlet) | ○ |
| C-046 | IFノードがssrProcessIfで処理 | E-04 (L212: ssrProcessIf) | ○ |
| C-047 | FORノードがssrProcessForで処理 | E-04 (L215: ssrProcessFor) | ○ |
| C-048 | IF_BRANCHノードがno-op | E-04 (L218-219: break) | ○ |
| C-049 | TEXT_CALL/COMPOUND_EXPRESSIONがno-op | E-04 (L221-224: break) | ○ |
| C-050 | 不明なELEMENTタグタイプでエラー | E-04 (L183-188: createSSRCompilerError) | ○ |
| C-051 | 不明なノードタイプでエラー | E-04 (L226-231: createSSRCompilerError) | ○ |
| C-052 | 子要素が空の場合に何も出力されない | E-04 (L165: for loop条件) | ○ |
| C-053 | processChildrenAsStatementがBlockStatement返却 | E-04 (L242-251) | ○ |
| C-054 | withSlotScopeIdが子コンテキストに伝播 | E-04 (L246: withSlotScopeId引数) | ○ |
| C-055 | asFragmentがprocessChildrenに伝播 | E-04 (L249: processChildren(parent, childContext, asFragment)) | ○ |
| C-056 | ELEMENT型ノードにssrCodegenNodeが設定される | E-05 (L370: node.ssrCodegenNode = createTemplateLiteral(openTag)) | ○ |
| C-057 | ELEMENT型でないノードは処理されない | E-05 (L69-73: if check + return) | ○ |
| C-058 | COMPONENT tagTypeのノードは処理されない | E-05 (L71: node.tagType !== ElementTypes.ELEMENT) | ○ |
| C-059 | 開始タグにタグ名が含まれる | E-05 (L79: [`<${node.tag}`]) | ○ |
| C-060 | textareaでneedTagForRuntime=true | E-05 (L82: node.tag === 'textarea') | ○ |
| C-061 | カスタム要素でneedTagForRuntime=true | E-05 (L82: node.tag.indexOf('-') > 0) | ○ |
| C-062 | 動的v-bindでrenderAttrs処理 | E-05 (L87-88: hasDynamicKeyVBind, L103-112) | ○ |
| C-063 | カスタムディレクティブでrenderAttrs処理 | E-05 (L88-90: hasCustomDir, L102) | ○ |
| C-064 | textareaで動的v-bind+value処理 | E-05 (L119-157) | ○ |
| C-065 | inputでv-bind+v-modelのSSR処理 | E-05 (L158-182) | ○ |
| C-066 | v-htmlでrawChildrenMapに式が設定される | E-05 (L230-234) | ○ |
| C-067 | v-textで子要素がinterpolationに置換される | E-05 (L235-236) | ○ |
| C-068 | v-slotでX_V_SLOT_MISPLACEDエラー | E-05 (L237-240) | ○ |
| C-069 | 静的class属性がopenTagに追加 | E-05 (L349-351) | ○ |
| C-070 | 動的:classでSSR_RENDER_CLASS使用 | E-05 (L265-273) | ○ |
| C-071 | 動的:styleでSSR_RENDER_STYLE使用 | E-05 (L274-287) | ○ |
| C-072 | 複数:styleがmergeCallで結合 | E-05 (L275-277: if dynamicStyleBinding -> mergeCall) | ○ |
| C-073 | ブール属性がSSR_INCLUDE_BOOLEAN_ATTRで条件付き出力 | E-05 (L293-304) | ○ |
| C-074 | 安全な属性名でSSR_RENDER_ATTR使用 | E-05 (L305-311) | ○ |
| C-075 | 不安全な属性名でX_SSR_UNSAFE_ATTR_NAMEエラー | E-05 (L312-318) | ○ |
| C-076 | 動的キー属性でSSR_RENDER_DYNAMIC_ATTR使用 | E-05 (L322-334) | ○ |
| C-077 | key/ref属性がスキップされる | E-05 (L262-264, L345-346) | ○ |
| C-078 | textareaのvalue属性がrawChildrenMapに設定 | E-05 (L342-343) | ○ |
| C-079 | 静的属性がopenTagに追加される | E-05 (L352-355) | ○ |
| C-080 | 値なし静的属性が正しく出力される | E-05 (L354: prop.value ? ... : ``) | ○ |
| C-081 | 動的classと静的classのマージ | E-05 (L361-363) | ○ |
| C-082 | scopeIdがopenTagに追加される | E-05 (L366-368) | ○ |
| C-083 | inputのtrue-value/false-valueがスキップ | E-05 (L225-227) | ○ |
| C-084 | v-showがprops末尾に移動される | E-05 (L93-100) | ○ |
| C-085 | textareaで:valueバインディング時の子要素置換 | E-05 (L241-244) | ○ |
| C-086 | カスタム要素で属性名がそのまま保持 | E-05 (L290-291: node.tag.indexOf('-') > 0 ? attrName) | ○ |
| C-087 | 標準要素でpropsToAttrMapによるマッピング | E-05 (L292: propsToAttrMap[attrName]) | △ |
| C-088 | buildSSRPropsで単一propsが返却される | E-05 (L399-401) | ○ |
| C-089 | mergeProps呼び出しのarguments展開 | E-05 (L381-383) | ○ |
| C-090 | directivesがSSR_GET_DIRECTIVE_PROPSで変換 | E-05 (L388-397) | ○ |
| C-091 | 複数propsとdirectivesがMERGE_PROPSで結合 | E-05 (L399-401: mergePropsArgs.length > 1) | ○ |
| C-092 | propsがundefinedでdirectivesが空の場合 | E-05 (L380-401) | △ |
| C-093 | ssrCodegenNodeの各要素がpushStringPart | E-05 (L465-468) | ○ |
| C-094 | withSlotScopeId=trueで_scopeIdがpush | E-05 (L471-473) | ○ |
| C-095 | 閉じタグ'>'がpush | E-05 (L476) | ○ |
| C-096 | rawChildrenがある場合にそれがpush | E-05 (L478-480) | ○ |
| C-097 | 子要素がある場合にprocessChildrenが呼ばれる | E-05 (L481-482) | ○ |
| C-098 | 非voidタグで閉じタグが出力 | E-05 (L485-487) | ○ |
| C-099 | voidタグで閉じタグが出力されない | E-05 (L464: isVoidTag, L485: if !isVoidTag) | ○ |
| C-100 | COMPONENTノードに対してpost-transform関数返却 | E-06 (L91-97, L124) | ○ |
| C-101 | 非COMPONENTノードは処理されない | E-06 (L92-97) | ○ |
| C-102 | SuspenseがssrTransformSuspenseに委譲 | E-06 (L105-106) | ○ |
| C-103 | TransitionGroupがssrTransformTransitionGroupに委譲 | E-06 (L107-108) | ○ |
| C-104 | TransitionがssrTransformTransitionに委譲 | E-06 (L109-110) | ○ |
| C-105 | 静的コンポーネントでSSR_RENDER_COMPONENT使用 | E-06 (L196-199) | ○ |
| C-106 | 動的コンポーネントでSSR_RENDER_VNODE+CREATE_VNODE使用 | E-06 (L183-194) | ○ |
| C-107 | propsがbuildSSRPropsで構築される | E-06 (L141-149) | ○ |
| C-108 | propsがない場合に'null'使用 | E-06 (L137: let propsExp = 'null') | ○ |
| C-109 | 子要素がある場合にスロットが構築される | E-06 (L175-177) | ○ |
| C-110 | 子要素がない場合にslots='null' | E-06 (L177: : 'null') | ○ |
| C-111 | TeleportがssrProcessTeleportに委譲 | E-06 (L212-213) | ○ |
| C-112 | SuspenseがssrProcessSuspenseに委譲 | E-06 (L214-215) | ○ |
| C-113 | TransitionGroupがssrProcessTransitionGroupに委譲 | E-06 (L216-217) | ○ |
| C-114 | TransitionがssrProcessTransitionに委譲 | E-06 (L227-228) | ○ |
| C-115 | フォールスルーコンポーネントの子要素がprocessChildrenで処理 | E-06 (L230) | ○ |
| C-116 | WIPスロット内フォールスルーで空文字列push | E-06 (L224-226: #5352) | ○ |
| C-117 | WIPエントリのfn.bodyにIfStatementが設定 | E-06 (L241-250) | ○ |
| C-118 | withSlotScopeId=trueで_scopeId引数追加 | E-06 (L254-256) | ○ |
| C-119 | 静的コンポーネントで_push(ssrRenderComponent(...))がpushStatement | E-06 (L258-262) | ○ |
| C-120 | 動的コンポーネントでssrCodegenNodeが直接pushStatement | E-06 (L263-266) | ○ |
| C-121 | 配列が深くクローンされる | E-06 (L375-376: isArray -> v.map(clone)) | ○ |
| C-122 | プレーンオブジェクトが深くクローンされる | E-06 (L377-382: isPlainObject) | ○ |
| C-123 | プリミティブ値がそのまま返却される | E-06 (L383-384: return v) | ○ |
| C-124 | 空配列がクローンされる | E-06 (L375-376) | ○ |
| C-125 | 空オブジェクトがクローンされる | E-06 (L377-382) | ○ |
| C-126 | ssrTransformIfが構造的トランスフォームを作成 | E-07 (L19-22) | ○ |
| C-127 | 単一v-ifでIfStatementが生成 | E-07 (L32-37) | ○ |
| C-128 | v-if+v-else-ifでネストされたIfStatement | E-07 (L40-52: if branch.condition) | ○ |
| C-129 | v-if+v-elseでalternateにBlockStatement | E-07 (L53-56: else) | ○ |
| C-130 | v-elseなし時の空コメント | E-07 (L59-63: if !currentIf.alternate) | ○ |
| C-131 | disableComment=trueでalternateがnull | E-07 (L59: && !disableComment) | ○ |
| C-132 | disableNestedFragments=trueでフラグメント無効化 | E-07 (L69: disableNestedFragments引数) | ○ |
| C-133 | 単一ELEMENT子要素でフラグメントラッパーなし | E-07 (L72-74) | ○ |
| C-134 | 複数子要素でフラグメントラッパーあり | E-07 (L72-74) | ○ |
| C-135 | 単一FORノードでフラグメントラッパーなし | E-07 (L76) | ○ |
| C-136 | ssrTransformForが構造的トランスフォームを作成 | E-08 (L18-19) | ○ |
| C-137 | SSR_RENDER_LIST呼び出しがpushStatement | E-08 (L43-48) | ○ |
| C-138 | デフォルトでフラグメントマーカー出力 | E-08 (L40-42, L49-51) | ○ |
| C-139 | disableNestedFragments=trueでマーカー無出力 | E-08 (L40: if !disableNestedFragments) | ○ |
| C-140 | 単一ELEMENT子要素でフラグメントラッパーなし | E-08 (L28-30) | ○ |
| C-141 | 複数子要素でフラグメントラッパーあり | E-08 (L28-30) | ○ |
| C-142 | renderLoopにcreateForLoopParams結果設定 | E-08 (L32: createForLoopParams(node.parseResult)) | ○ |
| C-143 | input[type=text]でvalueプロパティ設定 | E-09 (L87-90: defaultProps) | ○ |
| C-144 | input[type=radio]でchecked+SSR_LOOSE_EQUAL | E-09 (L106-116) | ○ |
| C-145 | input[type=checkbox]でArray.isArray条件付きchecked | E-09 (L133-147) | ○ |
| C-146 | input[type=checkbox]+true-valueでSSR_LOOSE_EQUAL | E-09 (L118-133) | ○ |
| C-147 | input[type=file]でエラー | E-09 (L149-155) | ○ |
| C-148 | inputで動的typeにSSR_RENDER_DYNAMIC_MODEL使用 | E-09 (L94-102) | ○ |
| C-149 | 型なしinputでvalueプロパティ設定 | E-09 (L167-170) | ○ |
| C-150 | textareaで子要素がinterpolationに置換 | E-09 (L172-174) | ○ |
| C-151 | selectでoption子要素にselected条件追加 | E-09 (L54-78) | ○ |
| C-152 | optgroup内optionも処理 | E-09 (L79-81) | ○ |
| C-153 | v-for内optionも再帰的処理 | E-09 (L46-47: child.type === NodeTypes.FOR) | ○ |
| C-154 | v-if内optionも再帰的処理 | E-09 (L48-49: child.type === NodeTypes.IF) | ○ |
| C-155 | 既存selected属性がある場合はスキップ | E-09 (L56: findIndex p.name === 'selected') | ○ |
| C-156 | サポートされない要素でエラー | E-09 (L177-183) | ○ |
| C-157 | コンポーネントでtransformModelに委譲 | E-09 (L188-189) | ○ |
| C-158 | value属性+v-modelでX_V_MODEL_UNNECESSARY_VALUEエラー | E-09 (L30-39) | ○ |
| C-159 | 静的value属性からSimpleExpression生成 | E-09 (L197-198) | ○ |
| C-160 | 動的:valueバインディングからexp返却 | E-09 (L196-197) | ○ |
| C-161 | value属性なしでnull式返却 | E-09 (L199) | ○ |
| C-162 | v-showでstyleプロパティ条件付き生成 | E-10 (L17-34) | ○ |
| C-163 | dir.expなしでX_V_SHOW_NO_EXPRESSIONエラー | E-10 (L12-16) | ○ |
| C-164 | slotアウトレットにssrCodegenNode設定 | E-11 (L69) | ○ |
| C-165 | slotNameとslotPropsが引数に含まれる | E-11 (L22-31) | ○ |
| C-166 | scopeIdとslotted指定時にスコープID追加 | E-11 (L35-37) | ○ |
| C-167 | Transition内単一スロットでSSR_RENDER_SLOT_INNER | E-11 (L53-66) | ○ |
| C-168 | TransitionGroup内単一スロットでSSR_RENDER_SLOT_INNER | E-11 (L57-58) | ○ |
| C-169 | IF_BRANCH内slotでgrandParent参照 | E-11 (L49-51: #10743) | ○ |
| C-170 | フォールバックコンテンツで引数[3]に関数設定 | E-11 (L80-84) | ○ |
| C-171 | フォールバックなしで引数[3]が'null'のまま | E-11 (L29: 'null'初期値) | ○ |
| C-172 | withSlotScopeId=trueでスコープIDマージ | E-11 (L88-93) | ○ |
| C-173 | ssrCodegenNodeがpushStatement | E-11 (L95) | ○ |
| C-174 | to propありでSSR_RENDER_TELEPORT呼び出しpushStatement | E-12 (L62-70) | ○ |
| C-175 | 静的to属性でSimpleExpression | E-12 (L31-33) | ○ |
| C-176 | 動的:to属性でexp式 | E-12 (L35) | ○ |
| C-177 | to propなしでX_SSR_NO_TELEPORT_TARGETエラー | E-12 (L23-27) | ○ |
| C-178 | to属性値空でX_SSR_NO_TELEPORT_TARGETエラー | E-12 (L37-44) | ○ |
| C-179 | disabled propありでdisabled引数設定 | E-12 (L47-52) | ○ |
| C-180 | disabled propなしでdisabled='false' | E-12 (L52: : 'false') | ○ |
| C-181 | 動的:disabled属性でexp式使用 | E-12 (L51: disabledProp.exp) | ○ |
| C-182 | 子要素がcontentRenderFn.bodyに設定 | E-12 (L61) | ○ |
| C-183 | 子要素ありでWIPエントリがwipMapに保存 | E-13 (L33-38, L38) | ○ |
| C-184 | buildSlotsでスロット関数が構築 | E-13 (L39-56) | ○ |
| C-185 | 子要素なしでwipMapに保存されない | E-13 (L33: if node.children.length) | ○ |
| C-186 | WIPスロットのfn.bodyにprocessChildrenAsStatement結果 | E-13 (L73-74) | ○ |
| C-187 | SSR_RENDER_SUSPENSE呼び出しがpushStatement | E-13 (L77-82) | ○ |
| C-188 | wipEntryなしで処理なし | E-13 (L68-70) | ○ |
| C-189 | appear propの有無がwipMapに保存 | E-14 (L19-20) | ○ |
| C-190 | appear propなしでfalse保存 | E-14 (L20: !!appear) | ○ |
| C-191 | コメントノードがフィルタリング | E-14 (L29) | ○ |
| C-192 | appear=trueでtemplateラッパー | E-14 (L32-35) | ○ |
| C-193 | appear=falseでラッパーなし | E-14 (L36-37) | ○ |
| C-194 | disableNestedFragments=trueでprocessChildren呼び出し | E-14 (L34, L37: false, true引数) | ○ |
| C-195 | tag propありでWIPエントリ作成 | E-15 (L33-56) | ○ |
| C-196 | propsとdirectivesがbuildSSRPropsで処理 | E-15 (L36-49) | ○ |
| C-197 | scopeIdがWIPエントリに保存 | E-15 (L53) | ○ |
| C-198 | tag propなしでwipMap未保存 | E-15 (L34: if tag) | ○ |
| C-199 | 動的:tagで動的開始・終了タグ生成 | E-15 (L67-100) | ○ |
| C-200 | 静的tagで静的開始・終了タグ生成 | E-15 (L101-112) | ○ |
| C-201 | propsExpがopenTag内に含まれる | E-15 (L71-73, L104-106) | ○ |
| C-202 | scopeIdがopenTag内に含まれる | E-15 (L74-76, L107-109) | ○ |
| C-203 | disableNestedFragments=true, disableComment=trueでprocessChildren呼ばれる | E-15 (L79-97, L111) | ○ |
| C-204 | WIPエントリなしでフラグメント処理 | E-15 (L114-117) | ○ |
| C-205 | ROOTノードで_attrs識別子登録 | E-16 (L24-26) | ○ |
| C-206 | ルート直下単一要素にv-bind='_attrs'注入 | E-16 (L71-72) | ○ |
| C-207 | IF_BRANCHの単一子要素に注入 | E-16 (L50-70) | ○ |
| C-208 | Transitionの単一子要素に注入 | E-16 (L28-43) | ○ |
| C-209 | KeepAliveの単一子要素に注入 | E-16 (L33: 'KeepAlive' \|\| 'keep-alive') | ○ |
| C-210 | parentがROOTでない場合は処理されない | E-16 (L45-48) | ○ |
| C-211 | 複数ルートv-ifがある場合は注入されない | E-16 (L52-59: if hasEncounteredIf return) | ○ |
| C-212 | v-if前に他のノードがある場合は注入されない | E-16 (L61-68) | ○ |
| C-213 | ELEMENT要素にv-bind directive追加 | E-16 (L77-91) | ○ |
| C-214 | COMPONENT要素にv-bind directive追加 | E-16 (L80: node.tagType === ElementTypes.COMPONENT) | ○ |
| C-215 | v-forがある要素には注入されない | E-16 (L81: !findDir(node, 'for')) | ○ |
| C-216 | TEMPLATE要素には注入されない | E-16 (L79-80: ELEMENT \|\| COMPONENT のみ) | ○ |
| C-217 | ssrCssVarsがない場合は処理されない | E-17 (L13-15) | ○ |
| C-218 | ROOTノードで_cssVars識別子登録 | E-17 (L20-22) | ○ |
| C-219 | ルート直下ELEMENT要素にv-bind='_cssVars'注入 | E-17 (L57-65) | ○ |
| C-220 | IF_BRANCHの子要素に注入 | E-17 (L29-35) | ○ |
| C-221 | parentがROOTでない場合は処理されない | E-17 (L24-27) | ○ |
| C-222 | ELEMENT要素にv-bind directive追加 | E-17 (L38-66) | ○ |
| C-223 | Suspenseのテンプレートスロット内に再帰注入 | E-17 (L45-53) | ○ |
| C-224 | Suspenseの非テンプレート子要素にも注入 | E-17 (L54-55) | ○ |
| C-225 | v-forがある要素には注入されない | E-17 (L43: !findDir(node, 'for')) | ○ |
| C-226 | COMPONENT要素にも注入 | E-17 (L42: node.tagType === ElementTypes.COMPONENT) | ○ |
| C-227 | v-bind:true-valueでtrue返却 | E-05 (L404-414) | ○ |
| C-228 | v-bind:false-valueでtrue返却 | E-05 (L410: 'false-value') | ○ |
| C-229 | 属性型true-valueでtrue返却 | E-05 (L413: prop.name === 'true-value') | ○ |
| C-230 | 属性型false-valueでtrue返却 | E-05 (L413: 'false-value') | ○ |
| C-231 | 無関係な属性でfalse返却 | E-05 (L404-414) | ○ |
| C-232 | textarea+v-bind:valueでtrue返却 | E-05 (L417-425) | ○ |
| C-233 | div+v-bind:valueでfalse返却 | E-05 (L421: node.tag === 'textarea') | ○ |
| C-234 | ExpressionNodeからArrayExpressionへの変換 | E-05 (L429-434) | ○ |
| C-235 | ArrayExpressionへの要素追加 | E-05 (L430-431) | ○ |
| C-236 | 静的バインディングが正規表現で除去 | E-05 (L437-448) | ○ |
| C-237 | マッチしない場合にtagが変更されない | E-05 (L445-447: if i > -1) | ○ |
| C-238 | v-modelディレクティブが見つかる | E-05 (L450-454) | ○ |
| C-239 | v-modelがない場合にundefined返却 | E-05 (L451: find returns undefined) | ○ |
| C-240 | expがないv-modelはマッチしない | E-05 (L453: p.exp) | ○ |
| C-241 | v-textがある場合にtrue返却 | E-05 (L456-457) | ○ |
| C-242 | v-htmlがある場合にtrue返却 | E-05 (L457) | ○ |
| C-243 | どちらもない場合にfalse返却 | E-05 (L456-457) | ○ |
| C-244 | ディレクティブ付き要素のコンテンツオーバーライド判定 | E-05 (L183-205) | △ |
| C-245 | vnodeベースのサブトランスフォームが実行 | E-06 (L284-335) | ○ |
| C-246 | slotPropsありでwrapperNodeにv-slot追加 | E-06 (L310-318) | ○ |
| C-247 | vForありでwrapperNodeにv-for追加 | E-06 (L320-322) | ○ |
| C-248 | childContext.ssrがfalseに設定 | E-06 (L346) | ○ |
| C-249 | 親コンテキストのscopes/identifiers/imports継承 | E-06 (L348-350) | ○ |
| C-250 | helpers/components/directivesが親にマージ | E-06 (L354-367) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-014 (UT-SSR-014)**: 空文字列入力時のbaseParseの挙動が@vue/compiler-domの実装に依存しており、compiler-ssrモジュール単独では完全な根拠が得られない
  - 候補：@vue/compiler-dom のbaseParse実装 / @vue/compiler-dom のテストケース
- **C-087 (UT-SSR-087)**: propsToAttrMapの具体的なマッピング内容が@vue/sharedに定義されており、compiler-ssr内のコードだけでは具体的な変換ルールを確認できない
  - 候補：@vue/shared のpropsToAttrMap定義
- **C-092 (UT-SSR-092)**: propsがundefinedかつdirectivesが空の場合のbuildSSRPropsの戻り値（mergePropsArgs[0]がundefinedになる可能性）。呼び出し元ではL112で `if (props || directives.length)` のガードがあるため、実際にはこの状態で呼ばれない可能性が高い
  - 候補：呼び出し元のガード条件確認（E-05 L112: if props || directives.length）
- **C-244 (UT-SSR-244)**: needMergeProps=true、directivesあり、childrenなし、v-html/v-textなしの条件の組み合わせが複雑で、実際のテンプレートでの再現条件の特定が困難
  - 候補：Vue公式テストケース / compiler-ssrの__tests__ディレクトリ
- **v-show true/false出力値**: v-showのConditionalExpressionの実行時出力値（null vs {display: 'none'}）はランタイム動作に依存するが、コード上の構造は明確（C-162で根拠ありとした）
  - 候補：server-renderer のssrRenderStyleテスト / runtime-dom のv-showテスト
- **registerRuntimeHelpersの効果**: コード上は明確だが、registerRuntimeHelpersの実際の効果はcompiler-dom側の実装に依存する
  - 候補：compiler-dom のregisterRuntimeHelpers実装
- **SSRErrorCodesの初期値65の正確性**: DOMErrorCodes.__EXTEND_POINT__がビルド時に65であることが前提だが、compiler-domの更新で変わる可能性がある
  - 候補：compiler-dom のDOMErrorCodes.__EXTEND_POINT__定義

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: エラーコード定義（C-015〜C-020）、ヘルパーシンボル定義（C-021〜C-023） - 静的な定数定義であり変更リスクが低い
- **1（中リスク）**: 属性名マッピング（C-087）、propsToAttrMap依存 - @vue/sharedへの外部依存があるため、パッケージ更新時に注意
- **1（中リスク）**: v-model関連テスト（C-143〜C-161） - input/textarea/selectの各タイプごとに異なる処理分岐があり、網羅性の確認が必要
- **2（高リスク）**: 動的v-bind + v-modelの組み合わせ（C-064, C-065） - 複雑な条件分岐とテンポラリ変数を使用しており、エッジケースの見落としリスクがある
- **2（高リスク）**: スロットのSSR処理（C-109, C-117） - 2パス処理（WIPスロット）の正確性が重要であり、レビュー必須

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースが全17ソースファイルをカバーしているか確認
- [ ] 各公開関数（export）に対して少なくとも1つの正常系テストケースがあるか確認
- [ ] v-model関連のテストケース（UT-SSR-143〜UT-SSR-161）が全入力タイプ（text, radio, checkbox, file, select, textarea）をカバーしているか確認
- [ ] エラー系テストケースが全SSRErrorCodes（X_SSR_UNSAFE_ATTR_NAME, X_SSR_NO_TELEPORT_TARGET, X_SSR_INVALID_AST_NODE）をカバーしているか確認
- [ ] 境界値テストケースが主要な処理関数に対して定義されているか確認
- [ ] C-064, C-065: textareaの動的v-bind+value、inputの動的v-bind+v-modelの条件分岐が網羅されているか確認
- [ ] C-117: WIPスロットの2パス処理で、fnのbodyが正しく設定されるか確認
- [ ] C-167〜C-169: Transition/TransitionGroup内スロットアウトレット最適化の条件が正しいか確認
- [ ] 根拠なし（△）の7件について追加調査が必要か判断
