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

---

# BENCH-RUN T04 R01

- 状态：PASS

## 根因与实际改动

`ledger/query.py::filter_by_date` 在冻结基线上把边界做成**排除式**（`<= start` / `>= end` 时跳过）。改为包含式：

- `workspace/ledger/query.py`：循环条件改为 `transaction.date < start: continue` 和 `transaction.date > end: continue`。边界比较全程使用 `datetime.date` 对象（`_parse_date_bound` 用 `date.fromisoformat` 解析并回校验 `isoformat() == value`），无字符串排序替代；格式错误或无效日历日期（如 `2025-02-30`）仍抛 `ValueError("<field> must use YYYY-MM-DD")`；缺省边界不设限。函数签名与其他过滤行为未变。
- `workspace/tests/test_query_dates.py`（新增）：包含边界、单日区间、开区间、跨月日期语义、非法格式/无效日历日期抛错、CLI 非法日期非零退出、CLI 同日边界包含两端记录等 8 个用例。

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

```text
$ python3 -m unittest discover -s tests -v
Ran 12 tests in 0.003s
OK          （4 个基线测试 + 8 个新增，全部通过）

$ python3 -m ledger list --start-date 2025-01-01 --end-date 2025-01-01
A-02 | 2025-01-01 | Food | $12.00
A-01 | 2025-01-01 | Food | $-1.95        → 退出码 0（边界两端均包含）

$ python3 -m ledger list --start-date 2025-02-30
ledger: error: start_date must use YYYY-MM-DD   → 退出码 2（沿用现有错误风格）
```

## 会话隔离

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