Compare two versions: outputs, drift, stability, and a verdict.

Reports which configuration fields differ, how much the outputs changed, the
semantic drift between the two versions, the stability of each, and an overall
verdict against the spec's thresholds. With no arguments, compares the previous
version against the latest.

If the spec lists evaluation.comparators (your own paired metrics - agreement or
reliability coefficients that need both versions aligned per item through their
captured payload), their results are shown beneath the built-in signals. dow
ships none of these coefficients; it only wires in the callables you reference.

If the spec sets evaluation.embedding_model to 'none' (outputs are not text), the
built-in output-difference, drift, stability, and verdict are omitted; the
configuration difference and your own comparators carry the comparison instead.

With --plot, the spec's evaluation.plots functions render the comparison and dow
stores the figures they produce as content-addressed artifacts (dow ships no
plotting library). To aggregate more than two versions at once, use 'dow aggregate';
to follow a metric across the whole history, use 'dow trend'.

For sweeps and CI, --fail-on-regression exits non-zero when the verdict is a likely
regression, and --fail-on-drift trips on behavior drift or worse. With
embedding_model 'none' the built-in verdict is null and never trips - gate on a
project metric with 'dow eval --metric NAME --min/--max' instead.

@examples
dow compare
dow compare v1 v3
dow compare good last
dow compare v1 v2 --plot
dow compare good last --fail-on-regression
