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

---

BENCH-RUN T01 R01

# T01 仓库调用链（只读）

## 结果
PASS

## 任务：`python3 -m ledger list` 实际执行路径追踪

### 0. 用户入口
- **文件**：`ledger/__main__.py`
- 符号：`from .cli import main`，`raise SystemExit(main())`
- `python3 -m ledger` 触发包执行，`__main__.py` 调用 `cli.main()` 并以其返回值作为进程退出码。**（直接调用）**

### 1. 参数解析
- **文件**：`ledger/cli.py`
- 函数：`build_parser()`（第 26–35 行）构造 `argparse.ArgumentParser(prog="ledger")`，注册全局参数 `--config`、`--data-file`，及子命令 `list`（注册 `--start-date`、`--end-date`）和 `summary`。
- 函数：`main(argv=None)`（第 38 行）中 `args = parser.parse_args(argv)`（第 40 行）执行解析。**（直接调用）**

### 2. 数据文件选择
- **文件**：`ledger/cli.py` 第 42 行调用 `resolve_data_file(cli_path=args.data_file, environ=os.environ, config_path=args.config)`。
- **实现**：`ledger/settings.py` 的 `resolve_data_file()`（第 8–34 行）。优先级：`--data-file` > 环境变量 `LEDGER_DATA_FILE` > `--config` 指定 JSON 中的 `data_file` > 默认 `DEFAULT_DATA_FILE`（第 5 行，`ledger/data/transactions.csv`）。**（直接调用）**

### 3. 数据文件读取
- **文件**：`ledger/cli.py` 第 43 行 `transactions = load_transactions(path)`。
- **实现**：`ledger/storage.py` 的 `load_transactions(path)`（第 11–29 行）：`csv.DictReader` 读取，校验必需列 `{id,date,category,amount}`，逐行构造 `ledger.model.Transaction`，金额经 `ledger.money.parse_money()` 解析。**（直接调用）**

### 4. 查询
- **文件**：`ledger/cli.py` 第 47 行 `rows = list_transactions(transactions, args.start_date, args.end_date)`。
- **实现**：`ledger/query.py` 的 `list_transactions()`（第 30–31 行）直接委托给 `filter_by_date()`（第 16–27 行）。日期边界由 `_parse_date_bound()`（第 4–13 行）解析。
- 另：CLI 在查询前用 `cli._parse_cli_date()`（第 13–23 行）先校验 `start_date/end_date` 格式。**（直接调用）**

### 5. 格式化
- **文件**：`ledger/cli.py` 第 48 行 `output = format_transactions(rows)`。
- **实现**：`ledger/formatting.py` 的 `format_transactions()`（第 15–16 行）用 `"\n".join` 拼接每行 `format_transaction()`（第 8–12 行），金额经 `format_money()`（第 1–5 行）格式化为 `$X.XX`。**（直接调用）**

### 6. stdout 输出
- **文件**：`ledger/cli.py` 第 51–52 行：`if output: print(output)`。
- 这是全包唯一写 stdout 的位置（`grep "print(" ledger/` 仅命中 `cli.py:52` 与错误分支 `cli.py:55` 的 stderr 打印）。**（直接调用）**

### 7. 是否写入持久化存储？
- **不写入**。`ledger/` 包内不存在任何 `open(...,'w')`、`save`、`write` 或向 CSV 回写的函数；`storage.py` 只读。结果仅经 `print()` 输出到 stdout，不落盘。**（直接证据：grep 全包无写入函数；属直接观察，非推断。）**

## 直接调用 vs 推断
以上每一步均来自逐行阅读 `__main__.py`、`cli.py`、`settings.py`、`storage.py`、`query.py`、`formatting.py` 的源码并核对行号，全部为**直接调用**关系，无基于 README 的推测。唯一标注为"直接观察"的"不写存储"结论来自对全包的写入函数检索（无命中）。

## 实际改动
无（只读题，未修改任何文件）。

## 实际运行的命令
- `git -C 基准仓库 rev-parse HEAD` → `ed2390f2df8252f062abd9123e20f6fffca7e5ed`
- `grep -rn "open|write|save|Path(" ledger/`、`grep -rn "print(" ledger/` → 确认唯一 stdout 写点与无持久化写入。

## 耗时
约 4 分钟（含阅读全部核心源码）。

## 未完成项
无。

## 会话隔离状态
在独立 workspace `输出/workbuddy/T01/R01/workspace/`（复制自冻结提交 ed2390f）中操作，未读取父目录或其他工具目录，未修改基准仓库或题面。
