# 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).
## [0.3.1] - 2026-06-02
### Added
- **`CMDCEval.Reasoning`** — 从 `reasoning_*` EventBus 事件或
`CMDC.Reasoning.Runner` payload 计算推理策略指标。
- **`CMDCEval.Assertions.Reasoning`** — done、answer、best_score、branch、
revision、token 和 gate failure 断言。
### Compatibility
- 要求 `cmdc ~> 0.6`。
- 全加性 patch;不改变 Suite / Runner / Workflow / RAG 现有 API。
## [0.3.0] - 2026-06-01
Phase 19E — 增加 WorkflowEval 最小接缝,服务 `cmdc_orchestrator 0.6.x`
企业 workflow runtime、AgentSpec / Workflow 发布门禁和离线 ledger eval。
### Added
- **`CMDCEval.Workflow`** — 从 `cmdc_orchestrator` Run / NodeRun / RunEvent
ledger 或离线 fixture 计算 WorkflowEval 指标。
- **`CMDCEval.Assertions.Workflow`** — completion rate、node failure rate、
branch coverage、tool success rate、fork/join、human_task SLA、retry、cost、
latency 和发布门禁 failures。
- WorkflowEval 明确保持最小接缝:不引入 Phoenix schema、Trace Viewer、
Eval Dashboard 或数据飞轮实现。
## [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(首发版本)