# 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.2.0] - 2026-05-31
### Added
- 新增 `CMDCEval.Context`,Runner 会把 reply / tool outputs / plugin events / metadata
传给 Suite 可选 `assert/3`。
- `CMDCEval.Runner` 自动订阅当前 eval session 的 CMDC EventBus 事件,并把压缩后的
`eval_context` 写入 `Run.metadata`。
- 新增 `CMDCEval.Assertions.RAG`:
`recall_at_k` / `contains_citation` / `grounded_answer` /
`no_unauthorized_source` / `faithfulness_min` / `correctness_min`。
- RAG assertions 支持离线 map fixture,不强依赖 Arcana。
### Compatibility
- 旧 Suite `assert(case, reply)` 保持兼容。
- `cmdc` 依赖范围升级到 `~> 0.6`。
## [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(首发版本)