> **发布元数据**：Cursor · Kimi K3（评测者确认）· R01
> **来源**：`cursor/输出/cursor/T05/R01/BENCHMARK_RESULT.md`
> **原始文件 SHA-256**：`1fbe266955d645366b13b8b74a24941c70516b61f44dd12e133d1fcaf99ca96f`
> 本公开副本已将评测机绝对路径归一化；下文 PASS/FAIL/BLOCKED 是执行报告自述状态，不等同于独立验收结论。

---

# BENCH-RUN T05 R01

- 状态：PASS

## 实际改动

- `workspace/ledger/summary.py`：
  - 新增 `summarize_by_category(transactions)`：返回 `{原始类别文本: 整数分总和}`。
  - 新增 `format_summary_json(summary)`：输出 `{"count", "total_cents", "by_category"}`；`by_category` 键显式按 Unicode 码点升序重建（`sorted` + dict 保序），`json.dumps(..., ensure_ascii=False)` 保留原始类别文本，输出稳定。
  - `summarize` / `format_summary` 未变，默认输出保持基准行为。
- `workspace/ledger/cli.py`：`summary` 子命令新增 `--format`（`choices=["json"]`，默认 `None`）；`--format json` 时 stdout 仅打印 JSON（错误信息只走 stderr）；非法取值由 argparse 拒绝并以退出码 2 结束。
- `workspace/tests/test_summary_json.py`（新增 6 个用例）：字段完整性、金额正确性、键按码点升序（含 `家庭`）、两次运行输出一致、stdout 整体可被 `json.loads` 解析、默认文本输出不变。
- `workspace/docs/usage.md`：补充 `--format json` 用法说明。

## 实际运行的命令与结果

```text
$ python3 -m unittest discover -s tests -v
Ran 10 tests in 0.002s
OK          （4 个基线 + 6 个新增，全部通过）

$ python3 -m ledger summary --format json
{"count": 6, "total_cents": 11756, "by_category": {"Food": 1195, "Transit": 200, "Travel": 10010, "food": 1, "家庭": 350}}   → 退出码 0

$ python3 -m ledger summary
Transactions: 6
Total: $117.56            → 默认输出与基准一致

$ python3 -m ledger summary --format xml
ledger summary: error: argument --format: invalid choice: 'xml' (choose from 'json')   → 退出码 2
```

## 会话隔离

改动仅限 `输出/cursor/T05/R01/workspace/`。耗时约 2 分钟。无未完成项。
