# Todo 52.5 Benchmark Ledger Event Identity Plan **Status:** done ## Goal Prevent independent benchmark ledgers from agreeing on counts while referring to different events, and keep failed-run attempt counts truthful. ## Scope - Preserve event names from `event_batch_results` and `tool_execution` usage rows in `BenchmarkRunResult`. - Require detected event names, batch-result event names, and tool-metric event names to equal the case's expected ordered event list. - Keep normalized status checks paired with the batch event identity. - Report ChatAgent/fallback attempt counts from timing records; continue checking timing counts against persisted ledger counts when persistence exists. - For pre-ledger failures, retain timing-derived attempt counts instead of `None`/zero. ## Files - Modify: `src/agent_lab/application/benchmark.py` - Modify: `tests/test_benchmark_runner.py` ## Verification - `uv run pytest tests/test_benchmark_runner.py tests/test_benchmark_config.py -q` - `uv run pytest` - `git diff --check` ## Observe / Update - Detected, batch-result, and tool-metric event names are preserved and independently matched to the expected ordered event list. - Failed streams retain timing-derived model/fallback attempts and any usage already returned. - Final Task 2 review approved the implementation; focused tests passed (`115 passed`) and the full suite passed (`520 passed`).