> **发布元数据**：Kimi Code · Kimi K3（评测者确认）· R01
> **来源**：`kimi-code/输出/kimi-code/T11/R01/BENCHMARK_RESULT.md`
> **归属更正**：此批结果由 Kimi Code 执行；历史输出 slug `zcode` 为命名错误，原始报告 SHA-256 留存。
> **原始文件 SHA-256**：`d5343f40ce34392abdb97110b52f50c116e1e89e4f44a127cad20f80efb1a26b`
> 本公开副本已将评测机绝对路径归一化；下文 PASS/FAIL/BLOCKED 是执行报告自述状态，不等同于独立验收结论。

---

PASS

# BENCHMARK_RESULT — T11 R01（多约束排序功能）

## 耗时
- 开始：2026-09-24 10:37:00 CST（`date`）
- 结束：2026-09-24 10:39:32 CST（`date`）
- 总计约 2 分 32 秒

## 会话隔离状态
本题为独立子会话执行，仅读取/修改 `<评测根目录>/kimi-code/输出/kimi-code/T11/R01/workspace` 内的文件；未改动题目源文件、基准仓库或其他运行目录；结果文件写入指定的 R01 目录。未知元数据：UNKNOWN。

## 实际改动文件清单与摘要
1. `workspace/ledger/cli.py`
   - `list` 子命令新增 `--sort-by`（choices=["date","amount","id"]，默认 "date"）与 `--order`（choices=["asc","desc"]，默认 "asc"），非法值由 argparse 以退出码 2 拒绝。
   - list 分支在 `list_transactions`（日期过滤）之后调用 `sort_transactions`，再走 `format_transactions`；字段格式与日期过滤行为未改。
2. `workspace/ledger/query.py`
   - 新增 `sort_transactions(transactions, sort_by="date", order="asc")`：稳定两遍排序——先按 `t.id` 升序，再按主键（date→`t.date`、amount→`t.amount_cents`、id→`t.id`）排序，`reverse` 仅作用于主键那一遍。主键并列时永远按 id 升序；`--sort-by id --order desc` 时主排序即 id 降序。`filter_by_date` 排他边界（冻结基线行为）未改动。
3. `workspace/tests/test_sort.py`（新增）
   - 10 个用例：默认 date asc；date/amount/id × asc/desc；同日并列 A-01 在 A-02 前；`--sort-by id --order desc`；排序在日期过滤之后（过滤结果集合不变）；非法 `--sort-by`/`--order` 退出码为 2。
4. `workspace/docs/usage.md`
   - 在"列出交易"一节补充 `--sort-by`/`--order` 用法说明。
5. 未改动 `workspace/tests/test_baseline.py`，未增加依赖，未联网。

## 实际运行的命令及原始结果
- `python3 -m unittest discover -s tests -v`：Ran 14 tests in 0.006s，OK（4 个基线测试 + 10 个新排序测试全部通过）。
- `python3 -m ledger list`（exit=0）：日期升序，E-01（2024-12-31）在最前；同日 A-01 在 A-02 前：
  ```
  E-01 | 2024-12-31 | Transit | $2.00
  A-01 | 2025-01-01 | Food | $-1.95
  A-02 | 2025-01-01 | Food | $12.00
  B-01 | 2025-01-02 | Travel | $100.10
  C-01 | 2025-01-31 | food | $0.01
  D-01 | 2025-02-01 | 家庭 | $3.50
  ```
  （注：`$-1.95` 为基线 T10 负金额格式化的有意冻结行为，本题未触碰。）
- `python3 -m ledger list --sort-by amount --order desc`（exit=0）：B-01, A-02, D-01, E-01, C-01, A-01。
- `python3 -m ledger list --sort-by id --order desc`（exit=0）：E-01, D-01, C-01, B-01, A-02, A-01。
- `python3 -m ledger list --sort-by foo`（exit=2）：argparse 报 `invalid choice: 'foo'`。
- `python3 -m ledger list --order foo`（exit=2）：argparse 报 `invalid choice: 'foo'`。
- `python3 -m ledger list --start-date 2025-01-01 --end-date 2025-02-01 --sort-by amount --order desc`（exit=0）：B-01, C-01——过滤（排他边界）先于排序，结果集不变。

## 未完成项
无。题面全部要求已完成并验证。
