---
generated_at: 2026-02-22 10:00:00
metrics:
  claims_total: 320
  claims_with_evidence: 308
  claims_without_evidence: 12
confidence_derived: 0.96
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：308 / 320、根拠なし：12
- 優先レビュー（高）
  1. **GC世代モード関連テスト**：generational GCのモード切替に関するテストケースが不足
  2. **Hash AR→HT切替テスト**：AR（Array Table）からHT（Hash Table）への自動切替境界（16要素）のテストが明示的でない
  3. **VM命令網羅性**：vm.cの個別命令（OP_*）ごとのテストケースは含まれていない（命令数が膨大なため）

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

- E-01: `src/state.c` - mrb_state管理関数群（mrb_open_core, mrb_open, mrb_close, mrb_add_irep, mrb_top_self, mrb_state_atexit, mrb_irep_incref/decref/cutref/free, mrb_free_context）
- E-02: `src/gc.c` - GC関連関数群（mrb_gc_init, mrb_gc_destroy, mrb_realloc_simple, mrb_realloc, mrb_malloc, mrb_calloc, mrb_free, mrb_obj_alloc, mrb_gc_protect, mrb_gc_register, mrb_gc_unregister, mrb_incremental_gc, mrb_full_gc, mrb_garbage_collect, mrb_field_write_barrier, mrb_write_barrier, mrb_object_dead_p, mrb_gc_mark, mrb_objspace_each_objects, mrb_temp_alloc）
- E-03: `src/vm.c` - VM関連関数群（mrb_funcall, mrb_funcall_id, mrb_funcall_with_block, mrb_funcall_argv, mrb_vm_run, mrb_vm_exec, mrb_yield, mrb_yield_argv, mrb_yield_with_class, mrb_stack_extend, mrb_protect_error, mrb_env_unshare, mrb_f_send）
- E-04: `src/array.c` - Array関連関数群（mrb_ary_new, mrb_ary_new_capa, mrb_ary_new_from_values, mrb_assoc_new, mrb_ary_push, mrb_ary_pop, mrb_ary_shift, mrb_ary_unshift, mrb_ary_set, mrb_ary_concat, mrb_ary_replace, mrb_ary_resize, mrb_ary_splice, mrb_ary_dup, mrb_ary_subseq, mrb_ary_splat, mrb_ary_modify, mrb_ary_delete_at）
- E-05: `src/string.c` - String関連関数群（mrb_str_new, mrb_str_new_cstr, mrb_str_new_capa, mrb_str_new_static, mrb_str_concat, mrb_str_plus, mrb_str_resize, mrb_str_cmp, mrb_str_equal, mrb_str_dup, mrb_str_to_cstr, mrb_str_index, mrb_str_modify, mrb_str_byte_subseq, mrb_str_aref, mrb_str_aset, mrb_strcasecmp_p, mrb_utf8len, mrb_gc_free_str）
- E-06: `src/hash.c` - Hash関連関数群（mrb_hash_new, mrb_hash_new_capa, mrb_hash_set, mrb_hash_get, mrb_hash_fetch, mrb_hash_delete_key, mrb_hash_clear, mrb_hash_size, mrb_hash_empty_p, mrb_hash_keys, mrb_hash_values, mrb_hash_key_p, mrb_hash_dup, mrb_hash_foreach, mrb_hash_shift, mrb_hash_first_key, mrb_gc_mark_hash, mrb_gc_free_hash, mrb_hash_memsize）
- E-07: `src/class.c` - Class関連関数群（mrb_define_class, mrb_define_module, mrb_define_class_under, mrb_define_module_under, mrb_define_method, mrb_define_method_id, mrb_class_defined, mrb_class_get, mrb_module_get, mrb_exc_get_id, mrb_define_method_raw, mrb_mt_foreach, mrb_class_name_class, mrb_const_name_p, mrb_gc_mark_mt, mrb_gc_free_mt, mrb_class_mt_memsize）
- E-08: `src/numeric.c` - Numeric関連関数群（mrb_int_overflow, mrb_int_zerodiv, mrb_int_pow, mrb_div_int, mrb_div_int_value, mrb_float_to_str, mrb_div_float, mrb_check_num_exact）
- E-09: `src/error.c` - Error関連関数群（mrb_exc_new_str, mrb_exc_new, mrb_raise, mrb_exc_raise, mrb_raisef, mrb_name_error, mrb_vformat, mrb_format, mrb_exc_mesg_set, mrb_exc_mesg_get, mrb_exc_set, mrb_make_exception, mrb_warn, mrb_bug）
- E-10: `src/object.c` - Object関連関数群（mrb_obj_eq, mrb_obj_equal, mrb_equal, mrb_type_convert, mrb_type_convert_check, mrb_check_type, mrb_any_to_s, mrb_obj_is_kind_of, mrb_ensure_integer_type）
- E-11: `src/kernel.c` - Kernel関連関数群（mrb_func_basic_p, mrb_obj_inspect, mrb_recursive_method_p, mrb_obj_freeze, mrb_obj_is_instance_of, mrb_f_raise）
- E-12: `src/proc.c` - Proc関連関数群（mrb_proc_new, mrb_proc_new_cfunc, mrb_closure_new, mrb_proc_new_cfunc_with_env, mrb_proc_cfunc_env_get, mrb_proc_copy, mrb_proc_arity, mrb_proc_eql）
- E-13: `src/range.c` - Range関連関数群（mrb_range_new, mrb_range_ptr, mrb_range_beg_len, mrb_get_values_at）
- E-14: `src/symbol.c` - Symbol関連関数群（mrb_intern, mrb_intern_cstr, mrb_intern_str, mrb_intern_static, mrb_intern_check, mrb_sym_name_len, mrb_check_intern, mrb_free_symtbl）
- E-15: `src/variable.c` - Variable関連関数群（mrb_iv_get, mrb_iv_set, mrb_iv_defined, mrb_iv_remove, mrb_iv_copy, mrb_iv_name_sym_p, mrb_iv_name_sym_check, mrb_obj_iv_get, mrb_obj_iv_set, mrb_obj_iv_defined, mrb_gc_mark_gv, mrb_gc_free_gv, mrb_gc_mark_iv, mrb_gc_free_iv）
- E-16: `src/mempool.c` - Mempool関連関数群（mempool_open, mempool_close, mempool_alloc, mempool_realloc）
- E-17: `src/load.c` - Load関連関数群（mrb_load_irep, mrb_load_irep_buf, mrb_load_irep_cxt, mrb_load_irep_file, mrb_load_proc）
- E-18: `src/dump.c` - Dump関連関数群（mrb_dump_irep, mrb_dump_irep_binary, mrb_dump_irep_cfunc）
- E-19: `src/cdump.c` - CDump関連関数群（mrb_dump_irep_cstruct）
- E-20: `src/etc.c` - Etc関連関数群（mrb_data_object_alloc, mrb_data_check_type, mrb_data_get_ptr, mrb_data_check_get_ptr, mrb_obj_to_sym, mrb_obj_id）
- E-21: `src/debug.c` - Debug関連関数群（mrb_debug_get_filename, mrb_debug_get_line, mrb_debug_get_position, mrb_debug_info_alloc, mrb_debug_info_append_file, mrb_debug_info_free, mrb_packed_int_len, mrb_packed_int_encode）
- E-22: `src/backtrace.c` - Backtrace関連関数群（mrb_keep_backtrace, mrb_exc_backtrace, mrb_get_backtrace, mrb_print_backtrace）
- E-23: `src/print.c` - Print関連関数群（mrb_p, mrb_show_version, mrb_show_copyright）
- E-24: `src/codedump.c` - Codedump関連関数群（mrb_codedump_all）
- E-25: `src/readint.c` - Readint関連関数群（mrb_read_int）
- E-26: `src/readfloat.c` - Readfloat関連関数群（mrb_read_float）
- E-27: `src/readnum.c` - Readnum関連関数群（mrb_int_read, mrb_float_read）
- E-28: `src/numops.c` - Numops関連関数群（mrb_num_add, mrb_num_sub, mrb_num_mul）
- E-29: `src/fmt_fp.c` - FmtFp関連関数群（mrb_format_float）
- E-30: `src/allocf.c` - Allocf関連関数群（mrb_basic_alloc_func）
- E-31: `src/init.c` - Init関連関数群（mrb_init_core）
- E-32: `src/version.c` - Version関連関数群（mrb_init_version）
- E-33: `src/enum.c` - Enum関連関数群（mrb_init_enumerable）

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

### state.c（C-001 - C-015）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | mrb_open_coreで正常にmrb_stateが初期化される | E-01 | ○ |
| C-002 | mrb_openでコアとgemの両方が初期化される | E-01 | ○ |
| C-003 | mrb_closeでリソースが正しく解放される | E-01 | ○ |
| C-004 | mrb_closeにNULLを渡した場合にクラッシュしない | E-01 | ○ |
| C-005 | 新しいirepが正常に生成される | E-01 | ○ |
| C-006 | トップレベルselfが取得できる | E-01 | ○ |
| C-007 | atexit関数が正常に登録される | E-01 | ○ |
| C-008 | irepの参照カウントが増加する | E-01 | ○ |
| C-009 | 参照カウントがUINT16_MAXの場合にエラーが発生する | E-01 | ○ |
| C-010 | irepの参照カウントが減少する | E-01 | ○ |
| C-011 | 参照カウントが0になった場合にirepが解放される | E-01 | ○ |
| C-012 | irepとその関連リソースが正しく解放される | E-01 | ○ |
| C-013 | MRB_IREP_NO_FREEフラグ付きirepは解放されない | E-01 | ○ |
| C-014 | コンテキストが正しく解放される | E-01 | ○ |
| C-015 | NULLコンテキストに対しクラッシュしない | E-01 | ○ |

### gc.c（C-016 - C-037）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-016 | GCが正しく初期化される | E-02 | ○ |
| C-017 | GCが正しく破棄される | E-02 | ○ |
| C-018 | mrb_realloc_simpleで再割り当てが行われる | E-02 | ○ |
| C-019 | mrb_reallocで再割り当てが行われる | E-02 | ○ |
| C-020 | メモリ不足時にGCが実行されリトライされる | E-02 | ○ |
| C-021 | mrb_mallocでメモリ割り当てが行われる | E-02 | ○ |
| C-022 | mrb_callocでゼロクリアメモリが割り当てられる | E-02 | ○ |
| C-023 | callocのオーバーフロー検出 | E-02 | ○ |
| C-024 | mrb_freeでメモリが解放される | E-02 | ○ |
| C-025 | mrb_obj_allocで新オブジェクトが生成される | E-02 | ○ |
| C-026 | mrb_gc_protectでアリーナに追加される | E-02 | ○ |
| C-027 | mrb_gc_registerでGCルートに登録される | E-02 | ○ |
| C-028 | mrb_gc_unregisterでGCルートから削除される | E-02 | ○ |
| C-029 | インクリメンタルGCが正常に実行される | E-02 | ○ |
| C-030 | フルGCが正常に実行される | E-02 | ○ |
| C-031 | ガベージコレクションが完了する | E-02 | ○ |
| C-032 | ライトバリアが正常に機能する | E-02 | ○ |
| C-033 | オブジェクトが灰色にマークされる | E-02 | ○ |
| C-034 | 生存オブジェクトでFALSEが返る | E-02 | ○ |
| C-035 | 死亡オブジェクトでTRUEが返る | E-02 | ○ |
| C-036 | 全オブジェクトに対してコールバックが呼ばれる | E-02 | ○ |
| C-037 | オブジェクトが正しくマークされる | E-02 | ○ |

### vm.c（C-038 - C-053）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-038 | mrb_funcallでメソッドが正常に呼び出される | E-03 | ○ |
| C-039 | 存在しないメソッド呼び出しでNoMethodError | E-03 | ○ |
| C-040 | シンボルIDでメソッドが呼び出される | E-03 | ○ |
| C-041 | ブロック付きメソッドが呼び出される | E-03 | ○ |
| C-042 | 配列引数でメソッドが呼び出される | E-03 | ○ |
| C-043 | VMがirepを正常に実行する | E-03 | ○ |
| C-044 | VMが命令列を正常に実行する | E-03 | ○ |
| C-045 | yieldが正常に行われる | E-03 | ○ |
| C-046 | 複数引数でのyieldが行われる | E-03 | ○ |
| C-047 | クラス指定でのyieldが行われる | E-03 | ○ |
| C-048 | スタックが正常に拡張される | E-03 | ○ |
| C-049 | スタックがMRB_STACK_MAX超でエラー | E-03 | △ |
| C-050 | 保護されたコード実行が正常に完了する | E-03 | ○ |
| C-051 | 保護されたコード内で例外がキャッチされる | E-03 | ○ |
| C-052 | 環境の共有解除が行われる | E-03 | ○ |
| C-053 | Object#sendが正常に動作する | E-03 | ○ |

### array.c（C-054 - C-081）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-054 | 空のArrayが正常に生成される | E-04 | ○ |
| C-055 | 指定容量のArrayが生成される | E-04 | ○ |
| C-056 | 巨大容量でArgumentError | E-04 | ○ |
| C-057 | 値配列からArrayが生成される | E-04 | ○ |
| C-058 | size=0で空Arrayが生成される | E-04 | ○ |
| C-059 | 2要素Assoc配列が生成される | E-04 | ○ |
| C-060 | 要素が末尾に追加される | E-04 | ○ |
| C-061 | 容量上限時に自動拡張される | E-04 | ○ |
| C-062 | 末尾要素が取得・削除される | E-04 | ○ |
| C-063 | 空Arrayからのpopでnil | E-04 | ○ |
| C-064 | 先頭要素が取得・削除される | E-04 | ○ |
| C-065 | 空Arrayからのshiftでnil | E-04 | ○ |
| C-066 | 要素が先頭に追加される | E-04 | ○ |
| C-067 | 指定インデックスに値が設定される | E-04 | ○ |
| C-068 | 負のインデックスで末尾から設定 | E-04 | ○ |
| C-069 | 範囲外でArray拡張 | E-04 | ○ |
| C-070 | 2つのArrayが結合される | E-04 | ○ |
| C-071 | Arrayの内容が置換される | E-04 | ○ |
| C-072 | Arrayのサイズが変更される | E-04 | ○ |
| C-073 | サイズ0で空Arrayになる | E-04 | ○ |
| C-074 | 指定範囲が置換される | E-04 | ○ |
| C-075 | Arrayの複製が生成される | E-04 | ○ |
| C-076 | 部分配列が生成される | E-04 | ○ |
| C-077 | 値がArray化される | E-04 | ○ |
| C-078 | Arrayがそのまま返る | E-04 | ○ |
| C-079 | 共有ArrayのCoWが行われる | E-04 | ○ |
| C-080 | 指定インデックスの要素が削除される | E-04 | ○ |
| C-081 | 範囲外インデックスでnil | E-04 | ○ |

### string.c（C-082 - C-107）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-082 | 新しいStringが正常に生成される | E-05 | ○ |
| C-083 | 長さ0のStringが生成される | E-05 | ○ |
| C-084 | 負の長さでArgumentError | E-05 | ○ |
| C-085 | C文字列からStringが生成される | E-05 | ○ |
| C-086 | 指定容量の空Stringが生成される | E-05 | ○ |
| C-087 | 静的文字列参照のStringが生成される | E-05 | ○ |
| C-088 | 2つのStringが結合される | E-05 | ○ |
| C-089 | 結合結果が新Stringとして返る | E-05 | ○ |
| C-090 | Stringのサイズが変更される | E-05 | ○ |
| C-091 | サイズ0で空文字列になる | E-05 | ○ |
| C-092 | 2つのStringが正しく比較される | E-05 | ○ |
| C-093 | 同じStringの比較で0が返る | E-05 | ○ |
| C-094 | 等しいStringでTRUE | E-05 | ○ |
| C-095 | 異なるStringでFALSE | E-05 | ○ |
| C-096 | Stringの複製が生成される | E-05 | ○ |
| C-097 | C文字列が取得される | E-05 | ○ |
| C-098 | 部分文字列の位置が返される | E-05 | ○ |
| C-099 | 見つからない場合に-1 | E-05 | ○ |
| C-100 | 共有StringのCoW | E-05 | ○ |
| C-101 | バイト部分文字列が生成される | E-05 | ○ |
| C-102 | インデックスアクセスが動作する | E-05 | ○ |
| C-103 | インデックス代入が動作する | E-05 | ○ |
| C-104 | 大文字小文字無視比較でTRUE | E-05 | ○ |
| C-105 | 異なる文字列でFALSE | E-05 | ○ |
| C-106 | UTF-8文字数が正しく返る | E-05 | ○ |
| C-107 | String内部リソースが解放される | E-05 | ○ |

### hash.c（C-108 - C-129, C-313 - C-320）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-108 | 空のHashが生成される | E-06 | ○ |
| C-109 | 指定容量のHashが生成される | E-06 | ○ |
| C-110 | キーと値がHashに設定される | E-06 | ○ |
| C-111 | 既存キーの値が更新される | E-06 | ○ |
| C-112 | キーに対応する値が取得される | E-06 | ○ |
| C-113 | 存在しないキーでnil | E-06 | ○ |
| C-114 | fetchで値が返る | E-06 | ○ |
| C-115 | fetchでデフォルト値が返る | E-06 | ○ |
| C-116 | キーと値が削除される | E-06 | ○ |
| C-117 | 存在しないキーの削除でnil | E-06 | ○ |
| C-118 | 全要素が削除される | E-06 | ○ |
| C-119 | Hashのサイズが正しく返る | E-06 | ○ |
| C-120 | 空Hashのサイズが0 | E-06 | ○ |
| C-121 | 空Hashに対しTRUE | E-06 | ○ |
| C-122 | 要素ありHashに対しFALSE | E-06 | ○ |
| C-123 | 全キーのArrayが返る | E-06 | ○ |
| C-124 | 全値のArrayが返る | E-06 | ○ |
| C-125 | 存在するキーでTRUE | E-06 | ○ |
| C-126 | 存在しないキーでFALSE | E-06 | ○ |
| C-127 | Hashの複製が生成される | E-06 | ○ |
| C-128 | 全要素にコールバックが呼ばれる | E-06 | ○ |
| C-129 | 最初の要素が取得・削除される | E-06 | ○ |
| C-313 | 最初のキーが取得される | E-06 | ○ |
| C-314 | 空Hashでnil | E-06 | ○ |
| C-318 | Hash全要素がGCマークされる | E-06 | ○ |
| C-319 | Hash内部リソースが解放される | E-06 | ○ |
| C-320 | Hashのメモリサイズが返る | E-06 | ○ |

### class.c（C-130 - C-147, C-315 - C-317）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-130 | 新しいクラスが定義される | E-07 | ○ |
| C-131 | 異なるsuperでTypeError | E-07 | ○ |
| C-132 | 新しいモジュールが定義される | E-07 | ○ |
| C-133 | 名前空間下にクラスが定義される | E-07 | ○ |
| C-134 | 名前空間下にモジュールが定義される | E-07 | ○ |
| C-135 | メソッドが正常に定義される | E-07 | ○ |
| C-136 | シンボルIDでメソッドが定義される | E-07 | ○ |
| C-137 | 定義済みクラスでTRUE | E-07 | ○ |
| C-138 | 未定義クラスでFALSE | E-07 | ○ |
| C-139 | クラスが正しく取得される | E-07 | ○ |
| C-140 | 未定義クラスでNameError | E-07 | ○ |
| C-141 | モジュールが正しく取得される | E-07 | ○ |
| C-142 | 例外クラスが取得される | E-07 | ○ |
| C-143 | rawメソッドが定義される | E-07 | ○ |
| C-144 | MTの全エントリにコールバック | E-07 | ○ |
| C-145 | クラス名が設定される | E-07 | ○ |
| C-146 | 定数名でTRUE | E-07 | ○ |
| C-147 | 非定数名でFALSE | E-07 | ○ |
| C-315 | MTがGCマークされる | E-07 | ○ |
| C-316 | MTが解放される | E-07 | ○ |
| C-317 | MTメモリサイズが返る | E-07 | ○ |

### numeric.c（C-148 - C-161）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-148 | RangeErrorが発生する | E-08 | ○ |
| C-149 | ZeroDivisionErrorが発生する | E-08 | ○ |
| C-150 | 整数のべき乗が計算される | E-08 | ○ |
| C-151 | 指数0でべき乗が1 | E-08 | ○ |
| C-152 | オーバーフローでRangeError | E-08 | △ |
| C-153 | 整数除算が計算される | E-08 | ○ |
| C-154 | ゼロ除算でエラー | E-08 | ○ |
| C-155 | MRB_INT_MIN/-1のオーバーフロー | E-08 | ○ |
| C-156 | 整数除算結果がmrb_value | E-08 | ○ |
| C-157 | Floatが文字列に変換される | E-08 | ○ |
| C-158 | Float除算が計算される | E-08 | ○ |
| C-159 | ゼロ除算でInfinity | E-08 | ○ |
| C-160 | NaNでFloatDomainError | E-08 | ○ |
| C-161 | InfinityでFloatDomainError | E-08 | ○ |

### error.c（C-162 - C-176）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-162 | 例外オブジェクトが生成される | E-09 | ○ |
| C-163 | C文字列から例外が生成される | E-09 | ○ |
| C-164 | 指定クラスの例外が発生する | E-09 | ○ |
| C-165 | 例外オブジェクトでの例外発生 | E-09 | ○ |
| C-166 | フォーマット付き例外が発生する | E-09 | ○ |
| C-167 | NameErrorが発生する | E-09 | ○ |
| C-168 | 可変引数フォーマット | E-09 | ○ |
| C-169 | フォーマット文字列が生成される | E-09 | ○ |
| C-170 | 例外メッセージが設定される | E-09 | ○ |
| C-171 | 例外メッセージが取得される | E-09 | ○ |
| C-172 | メッセージ未設定でnil | E-09 | ○ |
| C-173 | mrb->excに例外が設定される | E-09 | ○ |
| C-174 | 例外オブジェクトが作成される | E-09 | ○ |
| C-175 | 警告メッセージが出力される | E-09 | △ |
| C-176 | abortが呼ばれる | E-09 | △ |

### object.c（C-177 - C-190）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-177 | 同一オブジェクトでTRUE | E-10 | ○ |
| C-178 | 異なるオブジェクトでFALSE | E-10 | ○ |
| C-179 | equal?の動作 | E-10 | ○ |
| C-180 | ==の動作 | E-10 | ○ |
| C-181 | 型変換が行われる | E-10 | ○ |
| C-182 | 変換不可でTypeError | E-10 | ○ |
| C-183 | 型変換チェック | E-10 | ○ |
| C-184 | 正しい型でOK | E-10 | ○ |
| C-185 | 異なる型でTypeError | E-10 | ○ |
| C-186 | オブジェクトが文字列に変換 | E-10 | ○ |
| C-187 | is_a?でTRUE | E-10 | ○ |
| C-188 | is_a?でFALSE | E-10 | ○ |
| C-189 | Integer型保証 | E-10 | ○ |
| C-190 | 非IntegerでTypeError | E-10 | ○ |

### kernel.c（C-191 - C-197）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-191 | 基本メソッドでTRUE | E-11 | ○ |
| C-192 | inspectが動作する | E-11 | ○ |
| C-193 | 再帰呼び出し検出 | E-11 | △ |
| C-194 | オブジェクトが凍結される | E-11 | ○ |
| C-195 | instance_of?でTRUE | E-11 | ○ |
| C-196 | 親クラスでFALSE | E-11 | ○ |
| C-197 | Kernel#raiseでRuntimeError | E-11 | ○ |

### proc.c（C-198 - C-206）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-198 | irepからProcが生成される | E-12 | ○ |
| C-199 | C関数からProcが生成される | E-12 | ○ |
| C-200 | クロージャが生成される | E-12 | ○ |
| C-201 | 環境付きC関数Procが生成される | E-12 | ○ |
| C-202 | 環境変数が取得される | E-12 | ○ |
| C-203 | 範囲外でIndexError | E-12 | ○ |
| C-204 | Procの内容がコピーされる | E-12 | ○ |
| C-205 | arityが正しく返る | E-12 | ○ |
| C-206 | 同一ProcでTRUE | E-12 | ○ |

### range.c（C-207 - C-212）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-207 | 新しいRangeが生成される | E-13 | ○ |
| C-208 | 排他的Rangeが生成される | E-13 | ○ |
| C-209 | RRange*が取得される | E-13 | ○ |
| C-210 | 開始位置と長さが取得される | E-13 | ○ |
| C-211 | 負の開始位置が処理される | E-13 | ○ |
| C-212 | values_atが動作する | E-13 | ○ |

### symbol.c（C-213 - C-222）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-213 | 文字列からシンボルが生成される | E-14 | ○ |
| C-214 | C文字列からシンボルが生成される | E-14 | ○ |
| C-215 | StringからシンボルIDが生成される | E-14 | ○ |
| C-216 | 静的文字列からシンボルが生成される | E-14 | ○ |
| C-217 | 既存シンボルの検索 | E-14 | ○ |
| C-218 | 未登録文字列で0 | E-14 | ○ |
| C-219 | シンボルIDから名前が取得される | E-14 | ○ |
| C-220 | 既存シンボルのmrb_value | E-14 | ○ |
| C-221 | 未登録でnil | E-14 | ○ |
| C-222 | シンボルテーブルが解放される | E-14 | ○ |

### variable.c（C-223 - C-240）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-223 | IVの値が取得される | E-15 | ○ |
| C-224 | 未設定IVでnil | E-15 | ○ |
| C-225 | IVに値が設定される | E-15 | ○ |
| C-226 | 凍結オブジェクトでFrozenError | E-15 | △ |
| C-227 | 定義済みIVでTRUE | E-15 | ○ |
| C-228 | 未定義IVでFALSE | E-15 | ○ |
| C-229 | IVが削除される | E-15 | ○ |
| C-230 | IVがコピーされる | E-15 | ○ |
| C-231 | 有効なIV名でTRUE | E-15 | ○ |
| C-232 | 無効な名前でFALSE | E-15 | ○ |
| C-233 | 無効なIV名でNameError | E-15 | ○ |
| C-234 | RObject*からIV取得 | E-15 | ○ |
| C-235 | RObject*にIV設定 | E-15 | ○ |
| C-236 | RObject*のIV確認 | E-15 | ○ |
| C-237 | GVがGCマークされる | E-15 | ○ |
| C-238 | GVテーブルが解放される | E-15 | ○ |
| C-239 | IVがGCマークされる | E-15 | ○ |
| C-240 | IVテーブルが解放される | E-15 | ○ |

### その他ファイル（C-241 - C-320）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-241 | メモリプールが生成される | E-16 | ○ |
| C-242 | メモリプールが解放される | E-16 | ○ |
| C-243 | NULLにクラッシュしない | E-16 | ○ |
| C-244 | プールから割り当て | E-16 | ○ |
| C-245 | サイズ0割り当て | E-16 | △ |
| C-246 | NULLプールでNULL | E-16 | ○ |
| C-247 | PAGE_SIZE超の割り当て | E-16 | ○ |
| C-248 | プール再割り当て | E-16 | ○ |
| C-249 | 縮小時に同じポインタ | E-16 | ○ |
| C-250 | NULLプール再割り当て | E-16 | ○ |
| C-251 | irepが正常にロードされる | E-17 | ○ |
| C-252 | バッファからirepがロードされる | E-17 | ○ |
| C-253 | コンテキスト付きirepロード | E-17 | ○ |
| C-254 | ファイルからirepがロードされる | E-17 | ○ |
| C-255 | Procからコードが実行される | E-17 | ○ |
| C-256 | 不正バイナリでエラー | E-17 | △ |
| C-257 | irepがバイナリにダンプされる | E-18 | ○ |
| C-258 | irepがファイルにダンプされる | E-18 | ○ |
| C-259 | irepがC関数形式でダンプ | E-18 | ○ |
| C-260 | irepがC構造体形式でダンプ | E-19 | ○ |
| C-261 | Dataオブジェクトが生成される | E-20 | ○ |
| C-262 | 正しいdata型でOK | E-20 | ○ |
| C-263 | 異なるdata型でTypeError | E-20 | ○ |
| C-264 | Dataポインタが取得される | E-20 | ○ |
| C-265 | 型チェック付きポインタ取得 | E-20 | ○ |
| C-266 | 型不一致でNULL | E-20 | ○ |
| C-267 | 値からシンボルが取得される | E-20 | ○ |
| C-268 | オブジェクトIDが返る | E-20 | ○ |
| C-269 | 同一オブジェクトで同じID | E-20 | ○ |
| C-270 | ファイル名が取得される | E-21 | ○ |
| C-271 | 行番号が取得される | E-21 | ○ |
| C-272 | デバッグ情報なしで-1 | E-21 | ○ |
| C-273 | デバッグ情報が生成される | E-21 | ○ |
| C-274 | デバッグファイル情報が追加される | E-21 | ○ |
| C-275 | デバッグ情報が解放される | E-21 | ○ |
| C-276 | パック整数長が返る | E-21 | ○ |
| C-277 | 大きな値のパック長 | E-21 | ○ |
| C-278 | 整数がパックエンコードされる | E-21 | ○ |
| C-279 | 行番号とファイル名が取得される | E-21 | ○ |
| C-280 | バックトレースが保持される | E-22 | ○ |
| C-281 | バックトレースが取得される | E-22 | ○ |
| C-282 | 現在のバックトレースが取得される | E-22 | ○ |
| C-283 | バックトレースが出力される | E-22 | ○ |
| C-284 | inspect結果が出力される | E-23 | ○ |
| C-285 | バージョン情報が出力される | E-23 | ○ |
| C-286 | 著作権情報が出力される | E-23 | ○ |
| C-287 | コードダンプが出力される | E-24 | ○ |
| C-288 | 文字列から整数が読み取られる | E-25 | ○ |
| C-289 | 空文字列でFALSE | E-25 | ○ |
| C-290 | 非数値文字列でFALSE | E-25 | ○ |
| C-291 | 文字列からFloatが読み取られる | E-26 | ○ |
| C-292 | 指数表記が解釈される | E-26 | ○ |
| C-293 | mrb_int_readで整数が読み取られる | E-27 | ○ |
| C-294 | mrb_float_readでFloatが読み取られる | E-27 | ○ |
| C-295 | 数値加算が計算される | E-28 | ○ |
| C-296 | Integer+Float加算 | E-28 | ○ |
| C-297 | 加算オーバーフローでFloat | E-28 | △ |
| C-298 | 数値減算が計算される | E-28 | ○ |
| C-299 | 減算アンダーフローでFloat | E-28 | △ |
| C-300 | 数値乗算が計算される | E-28 | ○ |
| C-301 | 乗算オーバーフローでFloat | E-28 | △ |
| C-302 | Floatがフォーマットされる | E-29 | ○ |
| C-303 | 科学表記でフォーマット | E-29 | ○ |
| C-304 | NaNフォーマット | E-29 | ○ |
| C-305 | Infinityフォーマット | E-29 | ○ |
| C-306 | メモリ割り当て | E-30 | ○ |
| C-307 | メモリ解放 | E-30 | ○ |
| C-308 | メモリ再割り当て | E-30 | ○ |
| C-309 | 全コアモジュールが初期化される | E-31 | ○ |
| C-310 | バージョン定数が設定される | E-32 | ○ |
| C-311 | Enumerableが初期化される | E-33 | ○ |
| C-312 | 一時メモリが割り当てられる | E-02 | ○ |
| C-315 | MTがGCマークされる | E-07 | ○ |
| C-316 | MTが解放される | E-07 | ○ |
| C-317 | MTメモリサイズが返る | E-07 | ○ |

## 4) 不足情報（Unknown / Missing）
- GC世代モード切替のテストケースが不足：gc.cのgenerational GCモード切替ロジックは内部static関数に閉じており、外部APIからの直接テストが困難
  - 候補：gc_generational_mode_get / gc_generational_mode_set のRubyレベルAPIを介したテスト
- Hash AR→HT切替の明示的テストケース不足：hash.cのAR_MAX_SIZE（16）を超えた場合の内部データ構造切替
  - 候補：17要素以上のHash生成テスト / パフォーマンス特性テスト
- VM個別命令テスト：vm.cのmrb_vm_exec内の各OP_*命令の個別テスト（命令数が膨大）
  - 候補：各命令カテゴリ（算術、比較、分岐、メソッド呼び出し等）ごとの代表テスト
- 整数オーバーフロー時のBigInt変換：MRB_USE_BIGINT設定時の挙動が条件コンパイルのため検証困難（C-152, C-297, C-299, C-301）
  - 候補：コンパイルフラグごとのテストビルド
- mrb_warn/mrb_bugの出力先検証（C-175, C-176）：標準エラー出力のキャプチャが必要
  - 候補：出力リダイレクトによるキャプチャテスト
- 凍結オブジェクトへのIV設定エラー型（C-226）：FrozenErrorの具体的なクラス名はmrubyバージョン依存
  - 候補：mrubyのerror.cでの例外クラス定義を確認
- mempool_allocのサイズ0挙動（C-245）：ALIGN_PADDINGの影響で実際に0バイトが割り当て可能かは実装依存
  - 候補：アラインメント設定ごとのテスト
- 不正バイナリロード時の具体的エラー内容（C-256）：バイナリフォーマットの検証ロジックが複雑で、エラーパターンが多岐
  - 候補：各種不正バイナリパターン（ヘッダ不正、バージョン不一致、CRC不一致等）の個別テスト

## 5) リスクフラグ（レビュー観点）
- **2（高リスク）**: GCのインクリメンタル/世代モード切替が統合テストなしに正しく動作するか（C-029, C-030）
- **2（高リスク）**: 整数オーバーフロー時のFloat/BigInt変換処理の正確性（C-152, C-297, C-299, C-301）
- **1（中リスク）**: VM命令の網羅的テストがないため、特定命令の不具合を検出できない可能性
- **1（中リスク）**: Hash内部のAR→HT切替境界付近での挙動不具合の検出漏れ
- **0（低リスク）**: print.c, codedump.c等の出力系関数はI/Oに依存するため、ユニットテストでの検証が困難

## 6) レビュアーチェックリスト（最小）
- [ ] GC関連テスト（C-016〜C-037）が実際のGC動作（マーク→スイープ→コンパクション）を十分にカバーしているか
- [ ] 整数演算のオーバーフロー境界値テスト（C-148〜C-161, C-295〜C-301）がMRB_INT_MAX/MRB_INT_MINの具体値に基づいているか
- [ ] メモリ管理関数（C-018〜C-024, C-241〜C-250）のエラーパス（割り当て失敗）が十分にテストされているか
- [ ] VM関連テスト（C-038〜C-053）がコールスタック管理の正確性を検証しているか
- [ ] Hash関連テスト（C-108〜C-129）がAR_MAX_SIZE（16）境界でのデータ構造切替を検証しているか
- [ ] 例外処理テスト（C-162〜C-176）が例外のバブリングと捕捉を正しくテストしているか
- [ ] クラス定義テスト（C-130〜C-147）がメソッドキャッシュの無効化を考慮しているか
- [ ] 全テストケースの「期待結果」が十分に具体的で検証可能か
