pub async fn run_suite(
executor: &dyn EvalExecutor,
suite: &EvalSuite,
) -> Result<EvalReport>Expand description
Pure orchestration core: loop tasks × attempts through the executor, compute per-task metrics, and assemble the report.
This function performs no file I/O, no config reads, and no trust checks —
those belong to the caller. It depends only on EvalExecutor, which makes
it fully unit-testable with an in-memory fake (see executor::tests).