eval-suite-run is a hidden system workflow launched by the evals gateway
extension’s client: it’s what “Run” does for a saved eval suite. Not meant to be
authored by hand, it ships in the global seeded pack and every smithers gateway
registers it, backed by suites saved through ext.evals.saveSuite.
What it does
Given{ suiteId }, the workflow:
planreads the saved suite (name, targetworkflowKey, parsed case dataset) and seeds onequeuedrow per case in the workspace DB upfront, so the live results table has something to render from the run’s start.casesis a<Parallel>fan-out with one<Task>per dataset case. Each case launches its OWN real, separately-addressable child workflow run (the suite’s target workflow, given that case’sinput) viaexecuteChildWorkflowwith an explicit, collision-free run id, so a parent resume never re-launches a completed case. The task never throws: a failed or errored child run is graded, not fatal, so its attached scorer (eval-assertions) always fires and records a real score.verdictrolls every case’s pass/fail into{ pass, paragraph }, the same verifier-output contract every delegated run’s settle path strict-parses.
Grading
A case’sexpected value (from the authored dataset) is graded one of two
ways:
- Assertion spec:
expectedis absent, or an object whose keys are onlystatus/output/outputContains/errorContains(the specbunx smthrs evalhas always supported). - Expected output: any other
expectedvalue is the literal/subset expected output: objects and arrays match by subset, everything else by deep equality, plus the implicit “the case run finished” assertion.
actual
comes from the target workflow’s designated output (RunResult.output,
the same mechanism <Subflow> relies on for its child result), which
requires either a schema key literally named output in the target
workflow’s createSmithers({...}) call, or an explicit
smithers(build, { output: outputs.<key> }). Without either, the workflow
still runs and grades fine on status/errorContains, but expected-output
and outputContains comparisons always see an empty actual.
Run it explicitly
Useful for debugging a suite outside the Evals canvas:maxConcurrency (1-16, default 4) caps how many cases run at once.
Like other system workflows, eval-suite-run is hidden from default listings but
available via workflow list --system and explicit workflow run eval-suite-run.