58bff32e6a
The cycle-0047 typed-Scalar params migration (86746e3) changed each RunManifest param value on the C18 flat runs store from a bare JSON number (2.0) to an externally-tagged Scalar ({"F64":2.0}), but did not migrate the persisted runs.jsonl. Registry::load could no longer deserialize any pre-0047 line, so `aura runs list` / `runs rank` errored out on a researcher's existing run history (bug F5, surfaced by the "The World, part II" milestone fieldtest). Fix: a localized read-side back-compat mirror (src/compat.rs). load() now reads each line via RunReportRead, whose ScalarRead accepts BOTH the tagged form AND a bare JSON number (coerced to Scalar::f64), then converts into the canonical RunReport. The forward write path (append / RunReport::to_json) is untouched — it still emits the tagged form. This is a one-directional read widening, not a format change. The secondary clause of #83 (parse error exits 0) was triaged as not-a-bug: runs list/rank already exit 2 via load_runs_or_exit (main.rs:742); the "(exit 0)" in the fieldtest transcript was a pipe measurement artifact ($? read head's exit code, not the binary's). RED test (committed20511d5) now green; full workspace suite + clippy green. closes #83