pub struct Scorecard {Show 16 fields
pub model: String,
pub provider: String,
pub total: usize,
pub passed: usize,
pub passed_any: Option<usize>,
pub runs_per_case: usize,
pub check_pass_rate: f64,
pub malformed_tool_args: u32,
pub unknown_tools: u32,
pub tool_errors: u32,
pub runs_errored: usize,
pub mean_turns: f64,
pub median_latency_ms: u64,
pub total_usage: Usage,
pub wall_clock_ms: u64,
pub by_tag: Vec<TagScore>,
}Expand description
Aggregate view of one model’s run over the whole case set.
When each case ran more than once (runs_per_case > 1), total counts
cases, and passed counts cases that passed every run — pass^k, the
reliability number. Reliability decays much faster than mean success
(τ-bench measured 61% pass^1 falling under 25% by pass^8), and a scorecard
reporting only the mean hides exactly that. passed_any (pass@k, the
capability number) is kept beside it; the gap between the two is the
model’s unreliability, made visible. With one run per case the two
coincide and everything reads as it always did.
Fields§
§model: String§provider: String§total: usizeDistinct cases, regardless of how many times each ran.
passed: usizeCases that passed every run — pass^k.
passed_any: Option<usize>Cases that passed at least one run — pass@k. None on single-run
scorecards (it would merely repeat passed), which is also what keeps
reports written before --runs existed loading unchanged.
runs_per_case: usizeHow many times each case ran.
check_pass_rate: f64Checks passed / checks attempted, over every run. Partial credit,
unlike passed.
malformed_tool_args: u32§unknown_tools: u32§tool_errors: u32§runs_errored: usize§mean_turns: f64§median_latency_ms: u64Median is the honest latency number here — one 900s timeout would dominate a mean and tell you nothing about typical behaviour.
total_usage: Usage§wall_clock_ms: u64§by_tag: Vec<TagScore>