How would you structure an automated test harness to catch numerical regressions in model training pipelines?
Implement this as a deterministic function that compares baseline and candidate metric dictionaries. A metric regresses when its directional change exceeds the larger of its absolute and relative tolerances; a missing candidate metric is also a regression. Return regression names in sorted order.
def find_numerical_regressions(baseline, candidate, rules):