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

---

# BENCH-RUN T04 R01

- 状态：PASS
- 任务：修复 `ledger.query.filter_by_date` 日期区间为包含边界（inclusive），保持签名/公开接口/错误风格兼容。
- 运行环境：Python 3.9.6（macOS 系统 python3），仅标准库。

## 实际改动

1. `workspace/ledger/query.py`（唯一修改的既有文件）
   - `filter_by_date`：排他边界改为包含边界 —— `transaction.date <= start` → `< start`；`transaction.date >= end` → `> end`。
   - 边界仍先经 `_parse_date_bound` 解析为 `datetime.date` 再比较（日期语义比较，非字符串排序）；格式错误或无效日历日期抛 `ValueError` 的行为未变。
   - 函数签名、`list_transactions` 等其他过滤行为与公开接口未变。
2. `workspace/tests/test_date_bounds.py`（新增测试文件，未删改任何已有测试）
   - 覆盖：起止边界均包含、同日区间保留当日、缺省某端不设限、无边界返回全部、月中边界按日期语义过滤、无效日历日期（2025-13-01 / 2025-02-30 / 2025-00-10 / 2023-02-29）与畸形格式（2025-1-1、01/01/2025、20250101、空串等）抛 `ValueError`、CLI 同日区间含边界记录、CLI 非法日期状态 2 且 stderr 为 `ledger: error: ...`。

未增加任何运行时依赖；未修改题目源文件、基准仓库或其他运行目录。

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

工作目录均为本次运行 workspace（`<评测根目录>/deepseek-harness/输出/deepseek-harness/T04/R01/workspace`）。

### 0. 修复前基线确认

`git status --porcelain && git log --oneline -1` → 工作区干净，HEAD 为冻结提交 `ed2390f Freeze ledger benchmark fixture v1`。

修复前 `python3 -m unittest discover -s tests -v` → 4 个基线测试全部 ok（OK，EXIT=0）。

### 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
test_cli_invalid_date_exits_nonzero_with_error_style (test_date_bounds.CliDateTests) ... ok
test_cli_same_day_range_includes_boundary_rows (test_date_bounds.CliDateTests) ... ok
test_comparison_uses_date_semantics_not_strings (test_date_bounds.InclusiveBoundTests) ... ok
test_missing_end_date_is_unbounded_above (test_date_bounds.InclusiveBoundTests) ... ok
test_missing_start_date_is_unbounded_below (test_date_bounds.InclusiveBoundTests) ... ok
test_no_bounds_returns_everything (test_date_bounds.InclusiveBoundTests) ... ok
test_same_day_range_keeps_that_day (test_date_bounds.InclusiveBoundTests) ... ok
test_start_and_end_dates_are_inclusive (test_date_bounds.InclusiveBoundTests) ... ok
test_invalid_calendar_dates_raise_value_error (test_date_bounds.InvalidBoundTests) ... ok
test_malformed_formats_raise_value_error (test_date_bounds.InvalidBoundTests) ... ok

----------------------------------------------------------------------
Ran 14 tests in 0.004s

OK
```
退出码 0。

### 2. `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。边界当天两条记录（A-02、A-01）均包含；次日 B-01 未出现。
（注：`$-1.95` 为基线 formatting 中对负数的既有显示问题，题面标注属 T10 范围，本任务未改动。）

### 3. `python3 -m ledger list --start-date 2025-13-01`

stdout 为空；stderr：`ledger: error: start_date must use YYYY-MM-DD`；退出码 2（非零，保持现有错误风格）。

### 4. 补充实际验证

- `python3 -m ledger list --end-date 2025-02-30` → stderr `ledger: error: end_date must use YYYY-MM-DD`，退出码 2。
- `python3 -m ledger list --start-date 2025-1-1`（非 ISO 格式）→ stderr `ledger: error: start_date must use YYYY-MM-DD`，退出码 2。
- `python3 -m ledger list --start-date 2025-01-31 --end-date 2025-01-31` → 输出 `C-01 | 2025-01-31 | food | $0.01`，退出码 0（月末边界包含）。
- `python3 -m ledger summary` → `Transactions: 6` / `Total: $117.56`，退出码 0（其他命令行为不受影响）。

### 5. 改动范围确认

`git status --porcelain` → ` M ledger/query.py`、`?? tests/test_date_bounds.py`；`git diff` 仅含 `query.py` 的边界比较改动（含注释更新），无任何既有测试文件改动。

## 耗时

UNKNOWN（未做精确计时；全流程为数分钟量级交互式操作）。

## 尚未完成项

无。题面全部要求已完成并实际验证。

## 会话隔离说明

- 所有读写严格限制在本次运行目录 `<评测根目录>/deepseek-harness/输出/deepseek-harness/T04/R01/` 内：代码改动仅发生于 `workspace/`，结果文件写于运行目录根部。
- 未访问、未修改题目源文件、基准仓库（冻结提交 ed2390f2df8252f062abd9123e20f6fffca7e5ed 的原始出处）或任何其他运行目录。
- 未联网、未安装/新增任何依赖（仅用 Python 标准库）。
- 未删改 `tests/` 下已有测试；仅新增 `tests/test_date_bounds.py`。
- 本报告中所有命令与输出均为实际执行所得，无虚构检查。
