---
generated_at: 2026-03-01 18:05:00
metrics:
  claims_total: 100
  claims_with_evidence: 98
  claims_without_evidence: 2
confidence_derived: 0.98
---

# 根拠レポート：nuon.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：98 / 100、根拠なし：2
- 優先レビュー（高）
  1. **C-64**：クロージャのserialize_types=true時の動作（テストでignoreされている）
  2. **C-96-98**：オーバーフロー検出のテストケース（コードから推測）

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

- E-01: `crates/nuon/src/lib.rs` - モジュールエントリポイント、テストコード含む
- E-02: `crates/nuon/src/from.rs` - from_nuon関数とconvert_to_value関数の実装
- E-03: `crates/nuon/src/to.rs` - to_nuon関数、ToNuonConfig構造体、ToStyle列挙型の実装
- E-04: `crates/nuon/src/lib.rs:42-51` - list_of_numbersテスト
- E-05: `crates/nuon/src/lib.rs:54-64` - list_of_stringsテスト
- E-06: `crates/nuon/src/lib.rs:67-81` - tableテスト
- E-07: `crates/nuon/src/lib.rs:84-91` - from_nuon_illegal_tableテスト（重複カラム検出）
- E-08: `crates/nuon/src/lib.rs:94-96` - boolテスト
- E-09: `crates/nuon/src/lib.rs:99-106` - escapingテスト
- E-10: `crates/nuon/src/lib.rs:129-131` - negative_intテスト
- E-11: `crates/nuon/src/lib.rs:134-143` - recordsテスト
- E-12: `crates/nuon/src/lib.rs:146-160` - rangeテスト
- E-13: `crates/nuon/src/lib.rs:163-166` - filesizeテスト
- E-14: `crates/nuon/src/lib.rs:169-171` - durationテスト
- E-15: `crates/nuon/src/lib.rs:174-179` - datetimeテスト
- E-16: `crates/nuon/src/lib.rs:182-199` - to_nuon_errs_on_closureテスト（ignore付き）
- E-17: `crates/nuon/src/lib.rs:202-207` - binaryテスト
- E-18: `crates/nuon/src/lib.rs:210-222` - binary_roundtripテスト
- E-19: `crates/nuon/src/lib.rs:225-255` - read_sample_dataテスト
- E-20: `crates/nuon/src/lib.rs:258-270` - float_doesnt_become_intテスト
- E-21: `crates/nuon/src/lib.rs:273-285` - float_inf_parsed_properlyテスト
- E-22: `crates/nuon/src/lib.rs:288-300` - float_neg_inf_parsed_properlyテスト
- E-23: `crates/nuon/src/lib.rs:303-315` - float_nan_parsed_properlyテスト
- E-24: `crates/nuon/src/lib.rs:318-344` - to_nuon_converts_columns_with_spacesテスト
- E-25: `crates/nuon/src/lib.rs:347-357` - to_nuon_quotes_empty_stringテスト
- E-26: `crates/nuon/src/lib.rs:360-365` - to_nuon_quotes_empty_string_in_listテスト
- E-27: `crates/nuon/src/lib.rs:368-382` - to_nuon_quotes_empty_string_in_tableテスト
- E-28: `crates/nuon/src/lib.rs:385-406` - cell_pathテスト
- E-29: `crates/nuon/src/lib.rs:409-445` - does_not_quote_strings_unnecessarilyテスト
- E-30: `crates/nuon/src/lib.rs:448-453` - quotes_some_strings_necessarilyテスト
- E-31: `crates/nuon/src/lib.rs:484-492` - read_code_should_fail_rather_than_panicテスト
- E-32: `crates/nuon/src/lib.rs:497-502` - raw_string_parses_correctlyテスト
- E-33: `crates/nuon/src/lib.rs:505-510` - raw_string_parses_backslashテスト
- E-34: `crates/nuon/src/lib.rs:513-518` - raw_string_parses_with_hashesテスト
- E-35: `crates/nuon/src/lib.rs:521-532` - raw_strings_option_generates_rawテスト
- E-36: `crates/nuon/src/lib.rs:535-546` - raw_strings_option_with_backslashテスト
- E-37: `crates/nuon/src/lib.rs:549-560` - raw_strings_option_no_raw_when_not_neededテスト
- E-38: `crates/nuon/src/lib.rs:563-573` - raw_strings_option_in_listテスト
- E-39: `crates/nuon/src/lib.rs:576-588` - raw_strings_option_in_recordテスト
- E-40: `crates/nuon/src/lib.rs:591-607` - raw_strings_combined_with_raw_styleテスト
- E-41: `crates/nuon/src/lib.rs:610-622` - raw_strings_roundtrip_with_raw_strings_optionテスト
- E-42: `crates/nuon/src/lib.rs:625-637` - raw_strings_needs_more_hashes_when_content_has_quote_hashテスト
- E-43: `crates/nuon/src/from.rs:18-113` - from_nuon関数本体
- E-44: `crates/nuon/src/from.rs:115-466` - convert_to_value関数本体
- E-45: `crates/nuon/src/to.rs:17-54` - ToNuonConfig構造体とビルダーメソッド
- E-46: `crates/nuon/src/to.rs:57-89` - ToStyle列挙型
- E-47: `crates/nuon/src/to.rs:110-135` - to_nuon関数本体
- E-48: `crates/nuon/src/to.rs:137-305` - value_to_string関数本体
- E-49: `crates/nuon/src/from.rs:121-148` - 未サポート構文のエラー処理（AttributeBlock, BinaryOp, UnaryNot, Block, Closure）
- E-50: `crates/nuon/src/from.rs:153-165` - Call, ExternalCallのエラー処理
- E-51: `crates/nuon/src/from.rs:190-211` - ImportPattern, Overlay, Keywordのエラー処理
- E-52: `crates/nuon/src/from.rs:220-228` - Spread演算子のエラー処理
- E-53: `crates/nuon/src/from.rs:233-244` - MatchBlock, Operatorのエラー処理
- E-54: `crates/nuon/src/from.rs:300-308` - Recordのspread演算子エラー処理
- E-55: `crates/nuon/src/from.rs:313-349` - RowCondition, Signature, StringInterpolation, GlobInterpolation, Collect, Subexpressionのエラー処理
- E-56: `crates/nuon/src/from.rs:350-401` - Table処理（カラム不一致エラー含む）
- E-57: `crates/nuon/src/from.rs:402-451` - ValueWithUnit処理（duration, filesizeのオーバーフローチェック）
- E-58: `crates/nuon/src/from.rs:453-465` - Var, VarDeclのエラー処理
- E-59: `crates/nuon/src/to.rs:166-180` - Closureの処理（serialize_typesによる分岐）
- E-60: `crates/nuon/src/to.rs:189-194` - Custom値のエラー処理
- E-61: `crates/nuon/src/to.rs:198-199` - Errorの伝播

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 整数値が正しくパースされること | E-04, E-43 | ○ |
| C-02 | 負の整数値が正しくパースされること | E-10, E-43 | ○ |
| C-03 | 浮動小数点数が正しくパースされること | E-20, E-44 | ○ |
| C-04 | 真偽値trueが正しくパースされること | E-08, E-44 | ○ |
| C-05 | 真偽値falseが正しくパースされること | E-08, E-44 | ○ |
| C-06 | 文字列が正しくパースされること | E-05, E-44 | ○ |
| C-07 | エスケープ文字を含む文字列がパースされること | E-09, E-44 | ○ |
| C-08 | リストが正しくパースされること | E-04, E-44 | ○ |
| C-09 | 空リストが正しくパースされること | E-44 (Expr::List) | ○ |
| C-10 | レコードが正しくパースされること | E-11, E-44 | ○ |
| C-11 | 空レコードが正しくパースされること | E-44 (Expr::Record) | ○ |
| C-12 | テーブルが正しくパースされること | E-06, E-56 | ○ |
| C-13 | nullが正しくパースされること | E-44 (Expr::Nothing) | ○ |
| C-14 | バイナリデータが正しくパースされること | E-17, E-44 | ○ |
| C-15 | 範囲(Range)が正しくパースされること | E-12, E-44 | ○ |
| C-16 | ファイルサイズが正しくパースされること | E-13, E-57 | ○ |
| C-17 | ファイルサイズ(kib)が正しくパースされること | E-13, E-57 | ○ |
| C-18 | duration(ns)が正しくパースされること | E-14, E-57 | ○ |
| C-19 | duration(sec)が正しくパースされること | E-57 | ○ |
| C-20 | 日時が正しくパースされること | E-15, E-44 | ○ |
| C-21 | セルパスが正しくパースされること | E-28, E-44 | ○ |
| C-22 | raw文字列が正しくパースされること | E-32, E-44 | ○ |
| C-23 | Span付きでパースできること | E-43 | ○ |
| C-24 | 無限大(inf)がパースされること | E-21, E-44 | ○ |
| C-25 | 負の無限大(-inf)がパースされること | E-22, E-44 | ○ |
| C-26 | NaNがパースされること | E-23, E-44 | ○ |
| C-27 | 重複キーを持つテーブルでエラーが返ること | E-07, E-56 | ○ |
| C-28 | 重複キーを持つレコードでエラーが返ること | E-44 (line 289-294) | ○ |
| C-29 | パイプラインを含む入力でエラーが返ること | E-43 (line 68-80) | ○ |
| C-30 | 関数呼び出しを含む入力でエラーが返ること | E-31, E-50 | ○ |
| C-31 | 変数参照を含む入力でエラーが返ること | E-58 | ○ |
| C-32 | クロージャを含む入力でエラーが返ること | E-49 | ○ |
| C-33 | ブロックを含む入力でエラーが返ること | E-49 | ○ |
| C-34 | スプレッド演算子を含むリストでエラーが返ること | E-52 | ○ |
| C-35 | テーブルのカラム数が不一致でエラーが返ること | E-56 | ○ |
| C-36 | 文字列以外のキーを持つレコードでエラーが返ること | E-44 (line 277-286) | ○ |
| C-37 | 二項演算子を含む入力でエラーが返ること | E-49 | ○ |
| C-38 | 単項演算子を含む入力でエラーが返ること | E-49 | ○ |
| C-39 | 空文字列が正しくパースされること | E-25, E-44 | ○ |
| C-40 | 1要素のリストが正しくパースされること | E-44 | ○ |
| C-41 | 整数がNUON文字列に変換されること | E-48 | ○ |
| C-42 | 負の整数がNUON文字列に変換されること | E-48 | ○ |
| C-43 | 浮動小数点数がNUON文字列に変換されること | E-20, E-48 | ○ |
| C-44 | true/falseがNUON文字列に変換されること | E-48 | ○ |
| C-45 | 文字列がNUON文字列に変換されること | E-48 | ○ |
| C-46 | 空文字列がクォートされること | E-25, E-48 | ○ |
| C-47 | リストがNUON文字列に変換されること | E-04, E-48 | ○ |
| C-48 | 空リストがNUON文字列に変換されること | E-48 | ○ |
| C-49 | レコードがNUON文字列に変換されること | E-11, E-48 | ○ |
| C-50 | テーブル形式のリストが変換されること | E-06, E-48 | ○ |
| C-51 | バイナリがNUON文字列に変換されること | E-18, E-48 | ○ |
| C-52 | nullがNUON文字列に変換されること | E-48 | ○ |
| C-53 | 日時がRFC3339形式に変換されること | E-15, E-48 | ○ |
| C-54 | durationがns単位で変換されること | E-48 | ○ |
| C-55 | ファイルサイズがb単位で変換されること | E-48 | ○ |
| C-56 | Range(IntRange)がNUON文字列に変換されること | E-12, E-48 | ○ |
| C-57 | CellPathがNUON文字列に変換されること | E-28, E-48 | ○ |
| C-58 | infがNUON文字列に変換されること | E-21, E-48 | ○ |
| C-59 | -infがNUON文字列に変換されること | E-22, E-48 | ○ |
| C-60 | NaNがNUON文字列に変換されること | E-23, E-48 | ○ |
| C-61 | スペースを含むカラム名がクォートされること | E-24, E-29 | ○ |
| C-62 | クォートが不要な文字列はクォートされないこと | E-29 | ○ |
| C-63 | クロージャでエラーが返ること | E-16, E-59 | ○ |
| C-64 | クロージャがserialize_types=trueで文字列化されること | E-59 | △ |
| C-65 | カスタム値でエラーが返ること | E-60 | ○ |
| C-66 | Errorを含むValueでエラーが伝播すること | E-61 | ○ |
| C-67 | デフォルト設定が正しく初期化されること | E-45 | ○ |
| C-68 | styleメソッドでスタイルが設定されること | E-45 | ○ |
| C-69 | spanメソッドでSpanが設定されること | E-45 | ○ |
| C-70 | serialize_typesメソッドで設定されること | E-45 | ○ |
| C-71 | raw_stringsメソッドで設定されること | E-45 | ○ |
| C-72 | ビルダーメソッドを連鎖呼び出しできること | E-45 | ○ |
| C-73 | Default使用時に標準的なフォーマットになること | E-46, E-47 | ○ |
| C-74 | Raw使用時に空白なしフォーマットになること | E-40, E-46, E-47 | ○ |
| C-75 | Tabs使用時にタブインデントされること | E-46, E-47 | ○ |
| C-76 | Spaces使用時にスペースインデントされること | E-46, E-47 | ○ |
| C-77 | raw_strings=trueで引用符を含む文字列がraw形式になること | E-35 | ○ |
| C-78 | raw_strings=trueでバックスラッシュを含む文字列がraw形式になること | E-36 | ○ |
| C-79 | raw_strings=trueでも不要な場合は通常形式になること | E-37 | ○ |
| C-80 | raw文字列で'#を含む場合に追加ハッシュが付くこと | E-42 | ○ |
| C-81 | リストがラウンドトリップで同一になること | E-04 | ○ |
| C-82 | レコードがラウンドトリップで同一になること | E-11 | ○ |
| C-83 | テーブルがラウンドトリップで同一になること | E-06 | ○ |
| C-84 | バイナリがラウンドトリップで同一になること | E-18 | ○ |
| C-85 | 日時がラウンドトリップで同一になること | E-15 | ○ |
| C-86 | raw文字列入力がラウンドトリップで等価になること | E-41 | ○ |
| C-87 | 属性ブロックでエラーが返ること | E-49 | ○ |
| C-88 | 文字列補間でエラーが返ること | E-55 | ○ |
| C-89 | glob補間でエラーが返ること | E-55 | ○ |
| C-90 | $inでエラーが返ること | E-55 | ○ |
| C-91 | サブ式でエラーが返ること | E-55 | ○ |
| C-92 | match式でエラーが返ること | E-53 | ○ |
| C-93 | Expr::Filepathが文字列に変換されること | E-44 (line 167) | ○ |
| C-94 | Expr::Directoryが文字列に変換されること | E-44 (line 168) | ○ |
| C-95 | Expr::GlobPatternが文字列に変換されること | E-44 (line 189) | ○ |
| C-96 | day duration overflow時にエラーが返ること | E-57 | △ |
| C-97 | week duration overflow時にエラーが返ること | E-57 | ○ |
| C-98 | filesize overflow時にエラーが返ること | E-57 | ○ |
| C-99 | ネストしたリストが正しく変換されること | E-48 | ○ |
| C-100 | 深くネストしたレコードが正しく変換されること | E-48 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-64**: クロージャのserialize_types=true時の挙動
  - 既存テストはignoreされており（`#[ignore]`）、実際の動作確認が必要
  - コード上は実装されているが、テストによる検証が不完全
  - 候補：手動テスト / ignoreを外してテスト実行 / 新規テスト作成

- **C-96**: day durationのオーバーフロー検出
  - コード上は`checked_mul`を使用しており実装されているが、具体的なテストケースがない
  - 候補：巨大なday値でのテスト追加

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 基本的なデータ型変換（C-01〜C-26, C-41〜C-60）
  - 既存テストで十分にカバーされている
- **0 (低リスク)**: エラー処理（C-27〜C-38, C-63, C-65, C-66, C-87〜C-92）
  - コードで明確にエラーケースが定義されている
- **1 (中リスク)**: ビルダーパターン（C-67〜C-76）
  - 構造体の定義から導出されるが、結合テストが限定的
- **1 (中リスク)**: オーバーフロー検出（C-96〜C-98）
  - コード上は対応しているが、境界値テストが限定的
- **2 (高リスク)**: serialize_types機能（C-64）
  - テストがignoreされており、動作確認が不完全

## 6) レビュアーチェックリスト（最小）
- [ ] クロージャのserialize_types=true時の動作を確認（C-64）
- [ ] day/week/filesizeの巨大値でのオーバーフロー動作を確認（C-96〜C-98）
- [ ] ToNuonConfigの各オプション組み合わせで意図した動作になるか確認
- [ ] テーブルの空行、空カラムなどのエッジケースを確認
- [ ] ネストが深い構造での変換が正しく動作するか確認
