# Results and exports

Check whether a run finished and how much work it covered before you compare scores:

```sh
evalrouter runs get RUN_ID --json
evalrouter runs results RUN_ID --json
```

The result records the benchmark version, completed and missing work, scores, errors, and billing state. A sample is not a full benchmark result. Mark partial and failed runs as such in comparisons.

In a terminal, `evalrouter runs results RUN` lists failed tasks under **Why tasks failed**. It uses each sample's error code from `GET /v1/runs/{run_id}/samples?status=error`. A task without a code is `unclassified`.

The terminal uses plain metric names such as **Accuracy** for `acc`. JSON and exports keep the original keys and error codes. Use the failed-samples endpoint or an export to inspect individual tasks.

If a benchmark offers output formats, `selection.output_format` and each sample record the chosen format: `prompt_json`, `native_json`, or `json_schema`. Compare only matching formats. Otherwise, comparisons return `output_format_differs` with no delta, and leaderboard protocol hashes differ.

In the browser, open **Evaluations → Group runs**. The list includes models started together and groups created from existing runs. Select a group, then use **Runs** to inspect its members or **Comparison** to read their results together.

Choose **Create group from existing runs** to select two to four finished results, with one baseline and up to three candidates. The group saves frozen result references, including the version, checksum and model index where applicable. It never reruns a model. Pass/fail checks are optional; without them, the comparison makes no pass/fail decision. Incompatible pairs explain their differences and keep scores available individually, without direct score deltas or release conclusions.

To start new work, **New evaluation** opens **Run a benchmark** for one to eight managed models. One model starts an ordinary run; two to eight start a group on the same benchmark selection. A started-together group's Comparison tab reads all its members' latest available results without running inference or saving another comparison. It reports when results are pending or unavailable; resumed-group comparison is currently unavailable in the browser.

## Save a versioned report

Use the result's version when you need a repeatable export:

```sh
evalrouter runs export RUN_ID --version RESULT_VERSION --file-format json --output result.json
evalrouter runs export RUN_ID --version RESULT_VERSION --file-format csv --output result.csv
evalrouter runs export RUN_ID --version RESULT_VERSION --file-format html --output result.html
```

Use the integer version returned by the result. Exports need a destination and refuse to overwrite a file by default. Keep the version and checksum with any downstream report. Your workspace permissions and the evaluation's rights still govern what you can export.

HTML single-run bundles and CLI comparisons show **All benchmark metrics**, with
each recorded value and its available uncertainty. Hover a metric name for its
definition and exact key, or expand the glossary. Weighted variants stay separate.
SOB source scores appear only when the export includes them; source coverage alone
is not a score. Missing values are never inferred from pooled averages. Upgrading
the CLI does not change an existing archive: generate a new report, and request a
new API export when the saved data lacks the source metrics.

If a download fails, retry the export for the same run and version. For a run still in progress, use `evalrouter runs wait RUN_ID --wait-timeout 3600 --json`.
