---
generated_at: 2026-02-24 12:30:00
metrics:
  claims_total: 100
  claims_with_evidence: 98
  claims_without_evidence: 2
confidence_derived: 0.98
---

# 根拠レポート: web.csv

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：98 / 100、根拠なし：2
- 優先レビュー（高）
  1. **UT-WEB-040, UT-WEB-041（createOverflow）**：ResizeObserverのモック方法の詳細が不明
  2. **UT-WEB-098, UT-WEB-099（CopyButton）**：ブラウザAPIモックの詳細仕様要確認

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

- E-01: `packages/web/src/middleware.ts`（ミドルウェア処理: docsAlias, cookie, redirect, localeFromCookie, localeFromAcceptLanguage）
- E-02: `packages/web/src/i18n/locales.ts`（ロケール処理: exactLocale, matchLocale, localeAlias）
- E-03: `packages/web/src/components/share/common.tsx`（共通ユーティリティ: normalizeLocale, formatNumber, formatCurrency, formatCount, formatDuration, createOverflow, useShareMessages）
- E-04: `packages/web/src/components/Share.tsx`（メインコンポーネント: getStatusText, scrollToAnchor, fromV1）
- E-05: `packages/web/src/components/share/part.tsx`（パーツコンポーネント: stripWorkingDirectory, getShikiLang, getDiagnostics, formatErrorString, flattenToolArgs, getProvider）
- E-06: `packages/web/src/components/share/content-diff.tsx`（Diff表示: rows, mobileRows）
- E-07: `packages/web/src/components/share/content-markdown.tsx`（Markdown表示: strip関数）
- E-08: `packages/web/src/pages/[...slug].md.ts`（APIルート: notFoundText, GET）
- E-09: `packages/web/src/components/share/copy-button.tsx`（コピーボタン: CopyButton, handleCopyClick）
- E-10: `packages/web/src/components/share/content-text.tsx`（テキスト表示コンポーネント）
- E-11: `packages/web/src/components/share/content-error.tsx`（エラー表示コンポーネント）
- E-12: `packages/web/src/components/share/content-bash.tsx`（Bash出力表示コンポーネント）
- E-13: `packages/web/src/components/share/content-code.tsx`（コード表示コンポーネント）

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

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | docsAlias関数がロケール付きパスを正しく変換する | E-01 (L4-18) | ○ |
| C-02 | docsAlias関数がrootロケールを/docsパスに変換する | E-01 (L12-13) | ○ |
| C-03 | docsAlias関数が非docsパスでnullを返す | E-01 (L5-6) | ○ |
| C-04 | docsAlias関数が無効ロケールでnullを返す | E-01 (L10-11) | ○ |
| C-05 | cookie関数がrootロケールをenに変換する | E-01 (L21-24) | ○ |
| C-06 | redirect関数が302リダイレクトを生成する | E-01 (L26-37) | ○ |
| C-07 | localeFromCookie関数がクッキーからロケールを取得する | E-01 (L39-48) | ○ |
| C-08 | localeFromAcceptLanguage関数がAccept-Languageをパースする | E-01 (L50-78) | ○ |
| C-09 | exactLocale関数が完全一致ロケールを返す | E-02 (L85-93) | ○ |
| C-10 | matchLocale関数が前方一致でロケールを解決する | E-02 (L95-114) | ○ |
| C-11 | matchLocale関数がzh系ロケールを正しく処理する | E-02 (L99-104) | ○ |
| C-12 | normalizeLocale関数がrootをenに変換する | E-03 (L21-23) | ○ |
| C-13 | formatNumber関数が数値をロケールに応じてフォーマットする | E-03 (L25-27) | ○ |
| C-14 | formatCurrency関数がUSD形式でフォーマットする | E-03 (L29-36) | ○ |
| C-15 | formatCount関数が単数/複数形を使い分ける | E-03 (L38-41) | ○ |
| C-16 | formatDuration関数が時間単位を適切に選択する | E-03 (L101-130) | ○ |
| C-17 | createOverflow関数がオーバーフローを検出する | E-03 (L79-99) | ○ |
| C-18 | useShareMessages関数がProvider外でエラーをスローする | E-03 (L13-19) | ○ |
| C-19 | getStatusText関数が状態に応じたテキストを返す | E-04 (L24-39) | ○ |
| C-20 | scrollToAnchor関数が要素にスクロールする | E-04 (L17-22) | ○ |
| C-21 | fromV1関数がassistantメッセージを変換する | E-04 (L510-606) | ○ |
| C-22 | fromV1関数がuserメッセージを変換する | E-04 (L608-650) | ○ |
| C-23 | stripWorkingDirectory関数がプレフィックスを除去する | E-05 (L315-329) | ○ |
| C-24 | getShikiLang関数が言語を検出する | E-05 (L331-341) | ○ |
| C-25 | getDiagnostics関数がseverity=1の診断を返す | E-05 (L343-372) | ○ |
| C-26 | formatErrorString関数がError:プレフィックスを処理する | E-05 (L374-390) | ○ |
| C-27 | flattenToolArgs関数がネストオブジェクトをフラット化する | E-05 (L756-782) | ○ |
| C-28 | getProvider関数がモデル名からプロバイダーを検出する | E-05 (L784-793) | ○ |
| C-29 | ContentDiff rows memoがdiffをパースする | E-06 (L18-110) | ○ |
| C-30 | ContentDiff mobileRows memoが行をグループ化する | E-06 (L112-158) | ○ |
| C-31 | strip関数がラッピングタグを除去する | E-07 (L70-74) | ○ |
| C-32 | notFoundText関数がt関数から翻訳を取得する | E-08 (L4-17) | ○ |
| C-33 | GET APIルートがドキュメントを返す | E-08 (L19-34) | ○ |
| C-34 | CopyButton handleCopyClickがクリップボードにコピーする | E-09 (L14-21) | ○ |
| C-35 | createOverflow ResizeObserverの詳細動作 | **根拠不十分** | △ |
| C-36 | CopyButton タイマー動作の詳細 | **根拠不十分** | △ |

## 4) 不足情報（Unknown / Missing）

- **ResizeObserverのモック詳細（C-35）**
  - createOverflow関数はResizeObserverを使用しているが、単体テストでのモック方法の詳細仕様が不明
  - 候補：jest-dom / testing-library / vitest のResizeObserverモック設定

- **ブラウザAPIモック詳細（C-36）**
  - navigator.clipboard APIのモック方法、setTimeoutのタイマー制御方法
  - 候補：jest.useFakeTimers() / vitest.useFakeTimers() / sinon

## 5) リスクフラグ（レビュー観点）

| リスク | 説明 | レベル |
|--------|------|--------|
| ブラウザAPI依存 | クリップボード操作、ResizeObserver等のブラウザAPIに依存するコードがある | 1: 中リスク |
| 外部ライブラリ依存 | shiki、marked、luxon等の外部ライブラリに依存している | 0: 低リスク |
| WebSocket接続 | Share.tsxでWebSocket接続処理があり、モックが必要 | 1: 中リスク |
| 非同期処理 | createResource、WebSocket等の非同期処理が多数存在 | 1: 中リスク |

## 6) レビュアーチェックリスト（最小）

- [ ] docsAlias関数のロケールエイリアス処理が正しいか確認
- [ ] localeFromAcceptLanguage関数のq値ソートロジックが正しいか確認
- [ ] formatDuration関数の境界値（1000ms、60000ms）の処理が正しいか確認
- [ ] fromV1関数のV1→V2変換が全てのパーツタイプをカバーしているか確認
- [ ] flattenToolArgs関数の再帰処理が深くネストしたオブジェクトで正しく動作するか確認
- [ ] getProvider関数の正規表現パターンが全てのモデル名を正しく識別するか確認
- [ ] ContentDiffのdiffパース処理が全てのdiffフォーマットに対応しているか確認
- [ ] ResizeObserver、clipboardAPIのモック方針を決定
