> **发布元数据**：MiniMax Code · Kimi K3（评测者确认）· R01
> **来源**：`minimax-code/输出/minimax-code/T08/R01/BENCHMARK_RESULT.md`
> **原始文件 SHA-256**：`195a50bd3dc5decc77d50b1ffeca865ebfc9dbbe3271e3886bd18bf210c8fa99`
> **规程说明**：本工具报告记载 12 题在单个批量会话中执行；与冻结会话隔离规程不符，本轮暂不进入严格排名。
> 本公开副本已将评测机绝对路径归一化；下文 PASS/FAIL/BLOCKED 是执行报告自述状态，不等同于独立验收结论。

---

# BENCHMARK_RESULT

BENCH-RUN T08 R01

## 题面（逐字）

> # T08：失败测试诊断
>
> 先运行 `python3 -m unittest discover -s tests_t08 -v` 复现题目提供的失败。然后从生产代码定位根因并修复。不得删改、跳过、降低断言或重命名 `tests_t08/test_csv_import.py`，也不得修改其测试数据或只捕获错误让测试"变绿"。
>
> 修复后重新运行同一命令，再运行 `python3 -m unittest discover -s tests -v`。最后说明根因、改动位置、两条命令的实际结果；不得增加运行时依赖。

## 状态：PASS

## 根因

`tests_t08/data/legacy-export.csv` 是带 UTF-8 BOM 的文件（前 3 字节 `EF BB BF`，用 `od -c` 实测确认）。`ledger/storage.py` 的 `load_transactions` 以 `encoding="utf-8"` 打开 CSV，BOM 被当作普通字符读入，使 `csv.DictReader` 的第一个字段名变成 `"\ufeffid"` 而非 `"id"`，于是必需列校验（storage.py:15–18）判定缺列，抛 `ValueError: missing CSV columns: id`。测试数据本身合法，缺陷在生产代码的编码处理。

## 改动位置

`ledger/storage.py` 第 13 行（唯一改动）：

```diff
-    with Path(path).open("r", encoding="utf-8", newline="") as stream:
+    with Path(path).open("r", encoding="utf-8-sig", newline="") as stream:
```

`utf-8-sig` 在文件带 BOM 时剥掉 BOM、不带 BOM 时与 `utf-8` 行为一致，因此对现有无 BOM 数据（如 `ledger/data/transactions.csv`）完全兼容。这是修正真实解析缺陷，不是捕获错误让测试变绿。

未触碰：`tests_t08/test_csv_import.py`、`tests_t08/data/legacy-export.csv`、任何既有测试（修复后 `git status --porcelain` 仅 ` M ledger/storage.py`）。无新增运行时依赖。

## 两条命令的实际结果

**修复前复现**（题目要求的失败，如实记录）：

```
$ PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests_t08 -v
test_loads_single_record (test_csv_import.CsvImportRegressionTest) ... ERROR
Traceback (most recent call last):
  File ".../tests_t08/test_csv_import.py", line 10, in test_loads_single_record
    rows = load_transactions(fixture)
  File ".../ledger/storage.py", line 18, in load_transactions
    raise ValueError("missing CSV columns: " + ", ".join(missing))
ValueError: missing CSV columns: id
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
```

**修复后重跑同一命令**：

```
$ PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests_t08 -v
test_loads_single_record (test_csv_import.CsvImportRegressionTest) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
```

**标准套件**：

```
$ PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests -v
test_default_fixture_loads (test_baseline.BaselineSmokeTests) ... ok
test_default_summary_shape (test_baseline.BaselineSmokeTests) ... ok
test_list_command_runs (test_baseline.BaselineSmokeTests) ... ok
test_valid_money_inputs (test_baseline.BaselineSmokeTests) ... ok
----------------------------------------------------------------------
Ran 4 tests in 0.001s
OK
```

CLI 冒烟 `python3 -m ledger list` 输出与基线一致（首行 `A-02 | 2025-01-01 | Food | $12.00`）。

## 尚未完成的要求

无。

## 会话隔离状态

改动只发生在 `输出/minimax-code/T08/R01/workspace/` 独立副本内。实际执行为单个批量会话内按题隔离的独立 workspace。其余会话级隔离元数据：UNKNOWN。

## 耗时

约 2 分钟（秒级精确耗时 UNKNOWN）。
