---
generated_at: 2026-03-01 15:25:00
metrics:
  claims_total: 46
  claims_with_evidence: 44
  claims_without_evidence: 2
confidence_derived: 0.96
---

# 根拠レポート：universal.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：44 / 46、根拠なし：2
- 優先レビュー（高）
  1. **C-45 (UT-UNI-045)**: fileURLToPathの異常系（http:URL）の動作は外部パッケージ(node:url)の挙動に依存
  2. **C-46 (UT-UNI-046)**: deno-path-from-file-urlパッケージの具体的な動作確認が必要

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

- E-01: `src/universal/index.js` - Node.js版のユーティリティ関数定義
- E-02: `src/universal/index.browser.js` - ブラウザ版のユーティリティ関数定義
- E-03: `src/universal/assert.js` - Node.js版のアサーション関数エクスポート
- E-04: `src/universal/assert.browser.js` - ブラウザ版のアサーション関数エクスポート
- E-05: `src/utilities/get-interpreter.js` - getInterpreter関数の実装
- E-06: `src/utilities/noop.js` - noop関数の実装

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | getFileBasenameが通常パスからベース名を取得できる | E-01 (path.basename, toPath使用) | ○ |
| C-02 | getFileBasenameがWindowsパスを処理できる | E-01 (path.basename使用でクロスプラットフォーム対応) | ○ |
| C-03 | getFileBasenameがfile: URLを処理できる | E-01 (toPath関数でURL変換) | ○ |
| C-04 | getFileBasenameがルート直下のパスを処理できる | E-01 (path.basename使用) | ○ |
| C-05 | getFileBasenameが拡張子なしファイルを処理できる | E-01 (path.basename使用) | ○ |
| C-06 | getFileBasenameがエラー時に空文字を返す | E-01 (try-catchで空文字返却) | ○ |
| C-07 | getFileBasenameがundefinedで空文字を返す | E-01 (try-catchでキャッチ) | ○ |
| C-08 | ブラウザ版getFileBasenameが通常パスを処理できる | E-02 (split(/[/\\]/).pop()使用) | ○ |
| C-09 | ブラウザ版getFileBasenameがWindowsパスを処理できる | E-02 (正規表現で/と\\両方対応) | ○ |
| C-10 | ブラウザ版getFileBasenameが空文字を処理できる | E-02 (split().pop()の動作) | ○ |
| C-11 | isUrlがfile:プロトコルを検出できる | E-02 (startsWith("file:")使用) | ○ |
| C-12 | isUrlがURLオブジェクトを処理できる | E-02 (String(file)でURL.toString()呼び出し) | ○ |
| C-13 | isUrlが通常パスをfalseと判定できる | E-02 (startsWith("file:")がfalse) | ○ |
| C-14 | isUrlがhttp:プロトコルをfalseと判定できる | E-02 (file:のみtrue) | ○ |
| C-15 | isUrlが空文字をfalseと判定できる | E-02 (startsWith動作) | ○ |
| C-16 | isUrlが"file:"のみをtrueと判定する | E-02 (startsWith("file:")がtrue) | ○ |
| C-17 | Node.js版isUrlがfile:プロトコルを検出できる | E-01 (url-or-pathパッケージ使用) | ○ |
| C-18 | Node.js版isUrlが通常パスをfalseと判定できる | E-01 (url-or-path動作) | ○ |
| C-19 | getInterpreterが#!/usr/bin/env形式を解析できる | E-05 (正規表現m1で解析) | ○ |
| C-20 | getInterpreterが#!/bin/env形式を解析できる | E-05 (正規表現m1: \/(?:usr\/)?bin\/env対応) | ○ |
| C-21 | getInterpreterが#!/usr/bin/node形式を解析できる | E-05 (正規表現m2で解析) | ○ |
| C-22 | getInterpreterが#!/usr/local/bin/形式を解析できる | E-05 (正規表現m2: usr\/(?:local\/)?対応) | ○ |
| C-23 | getInterpreterが#!/bin/node形式を解析できる | E-05 (正規表現m2で解析) | ○ |
| C-24 | getInterpreterがpythonインタプリタを取得できる | E-05 (インタプリタ名を抽出) | ○ |
| C-25 | getInterpreterがbashを取得できる | E-05 (正規表現m2で/bin/bash対応) | ○ |
| C-26 | getInterpreterがshebangなしでundefinedを返す | E-05 (firstLineがfalsyの場合return) | ○ |
| C-27 | getInterpreterが空ファイルでundefinedを返す | E-05 (firstLineがfalsyの場合return) | ○ |
| C-28 | getInterpreterがファイルなしでundefinedを返す | E-05 (try-catchでエラー処理) | ○ |
| C-29 | getInterpreterが権限エラーでundefinedを返す | E-05 (try-catchでエラー処理) | ○ |
| C-30 | getInterpreterが1行ファイルでも動作する | E-05 (最初の行のみ読み取り) | ○ |
| C-31 | readFileFirstLineがファイルの最初の行を読み取る | E-05 (n-readlinesでliner.next()) | ○ |
| C-32 | readFileFirstLineがURL形式を処理できる | E-05 (toPath(file)でURL変換) | ○ |
| C-33 | readFileFirstLineが空ファイルを処理できる | E-05 (firstLineBuffer?.toString()) | ○ |
| C-34 | Node.js版equalが等値比較を行う | E-03 (node:assertのequalエクスポート) | ○ |
| C-35 | Node.js版equalが失敗時にAssertionErrorをスロー | E-03 (node:assertの動作) | ○ |
| C-36 | Node.js版okがtruthy値でパス | E-03 (node:assertのok動作) | ○ |
| C-37 | Node.js版okがfalsy値でエラー | E-03 (node:assertの動作) | ○ |
| C-38 | Node.js版strictEqualが厳密等値比較を行う | E-03 (node:assertのstrictEqual) | ○ |
| C-39 | Node.js版strictEqualが型不一致でエラー | E-03 (node:assertの動作) | ○ |
| C-40 | ブラウザ版equalがnoopである | E-04, E-06 (noopをエクスポート) | ○ |
| C-41 | ブラウザ版okがnoopである | E-04, E-06 (noopをエクスポート) | ○ |
| C-42 | ブラウザ版strictEqualがnoopである | E-04, E-06 (noopをエクスポート) | ○ |
| C-43 | ブラウザ版getInterpreterがundefinedである | E-02 (const getInterpreter = undefined) | ○ |
| C-44 | fileURLToPathがfile:URLをパスに変換できる | E-01 (node:urlのfileURLToPath) | ○ |
| C-45 | fileURLToPathがhttp:URLでエラーをスローする | **外部パッケージ依存** | △ |
| C-46 | ブラウザ版fileURLToPathがパス変換できる | E-02 (deno-path-from-file-url依存) | △ |

## 4) 不足情報（Unknown / Missing）
- **C-45, C-46**: 外部パッケージ（node:url, deno-path-from-file-url）の詳細な動作仕様はパッケージのドキュメントを参照する必要がある
  - 候補：node:url公式ドキュメント / deno-path-from-file-urlのGitHub README / 実機テスト

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - universalモジュールは主にユーティリティ関数の提供であり、ビジネスロジックは含まない
- **0: 低リスク** - getInterpreterの正規表現は明確に定義されており、shebang形式の解析は信頼性が高い
- **1: 中リスク** - 外部パッケージ（url-or-path, deno-path-from-file-url, n-readlines）の動作に依存する部分があり、パッケージのバージョンアップで挙動が変わる可能性がある

## 6) レビュアーチェックリスト（最小）
- [ ] getFileBasenameのエラーハンドリング（空文字返却）が意図した動作か確認
- [ ] ブラウザ版とNode.js版のisUrl実装の違いが適切か確認（ブラウザ版はstartsWith、Node.js版はurl-or-path）
- [ ] getInterpreterの正規表現が全ての想定されるshebang形式をカバーしているか確認
- [ ] ブラウザ版のassert関数がnoopで問題ないか確認（本番環境でのアサーションチェック無効化の意図確認）
- [ ] 外部パッケージ依存部分（deno-path-from-file-url等）の動作確認
