# Changelog
All notable changes to `cmdc_eval` will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [0.1.0] - 2026-05-18
> 首发 —— CMDC Agent benchmark harness 子库。
### Added
- **`CMDCEval` 主模块** —— `run/1` 入口 + 类型 spec
- **Suite behaviour `CMDCEval.Suite`** —— 3 必选 callback (`name/0` / `cases/0` / `assert/2`)
+ 2 可选 (`default_tools/0` / `cost_estimator/1`)
- **核心 struct**:`CMDCEval.Case` / `CMDCEval.Run` / `CMDCEval.Report`(全 `@derive Jason.Encoder`)
- **`CMDCEval.Runner`** —— 并发跑 Suite 内 case + 收集 Run + 输出 Report
+ 单 case crash / timeout 不影响其他 case
+ 支持 mock provider(`provider_opts: [provider_fn: ...]`)
- **`CMDCEval.Suites.Internal`** —— 5 个 cmdc kernel 自验证 case
(basic_text / json_response / long_input_no_crash / punctuation / empty_friendly_reply)
- **`CMDCEval.Suites.BFCL`** —— Berkeley Function Calling Leaderboard v3 框架
(v0.1 fixtures 占位,需手动从 upstream `git clone` 拉取)
- **`Mix.Tasks.Cmdc.Eval`** —— CLI 入口(`mix cmdc.eval --suite=<name> --model=<id>`)
+ 标准退出码 0/1/2/3
- **`Mix.Tasks.Cmdc.Eval.FetchBfcl`** —— BFCL fixtures fetch helper(v0.1 写占位)
- **JSONL 报告 schema** —— 稳定字段 `suite / case_id / model / pass / latency_ms /
tokens_in / tokens_out / cost_usd / events_digest / error / timestamp / metadata`
### v0.1 范围
- ✅ 框架 + 1 个内置可跑 Suite(Internal)+ 1 个占位 Suite(BFCL)
- 🔁 完整 BFCL fixtures fetch / tau2-bench / MemoryAgentBench 留 v0.2
### Compatibility
- 要求 `cmdc ~> 0.5`
- 无 breaking change(首发版本)