Run custom evaluators on a version; compare to the previous and last-good versions.

Executes the metrics declared under evaluation.metrics and reports each score next
to the previous version and the most recent version tagged 'good', so regressions
stand out. Results are saved with the version and reused unless --rerun is passed;
evaluators also run automatically on 'dow commit'.

Use --draft to evaluate your current working spec without committing a version:
edit the spec, run 'dow eval --draft' to see the scores against the previous and
last-good versions, iterate, and run 'dow commit' when you are happy with it.

Evaluators score one version on its own. Their paired counterpart -
evaluation.comparators, which score one version against another (agreement or
reliability coefficients) - run instead on 'dow compare' and 'dow explain'. For
agreement over a whole cohort of versions at once (K seeds/judges/wordings), use
evaluation.aggregators with 'dow aggregate'. Plot functions listed under
evaluation.plots turn any of these results into figures dow stores as artifacts.

For sweeps and CI, gate on a score: --metric NAME with --min and/or --max exits
non-zero when that metric is out of range (or missing). This works with --draft too,
so a sweep can reject a bad working spec before committing it.

@examples
dow eval
dow eval --draft
dow eval v2 --rerun
dow eval --good-tag golden
dow eval --metric accuracy --min 0.8
