aura runs list/rank cannot read a pre-0047 runs.jsonl (typed-Scalar params migration left the flat store unmigrated; + exits 0 on parse error) #83
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Source: fieldtest milestone "The World, part II" — finding F5 (bug, milestone-close blocker).
See
docs/specs/fieldtest-milestone-the-world-orchestration-families.md.aura runs list/aura runs rankcannot read aruns.jsonlwritten beforecycle 0047.
Symptom (verbatim):
Column 94 of line 1 is the bare float
2.0in["sma_cross.fast",2.0].Root cause:
RunManifest.paramswas migrated to typedScalar(
{"I64":2}/{"F64":2.0}) in cycle 0047 (commit86746e3), but the persistedflat store was not migrated, so
Registry::loadfails to deserialize anypre-0047 line. The lineage path (
families.jsonl) is unaffected — it is writtenfresh in the new format.
Impact:
aura runs listis documented to list the stored runs; on apre-0047 store it errors out instead, so a researcher who ran
aura sweep/runbefore the upgrade loses read access to their run history.
Secondary bug: the parse error prints to stderr but the process exits 0,
so a script cannot detect the failure by status.
Repro:
cargo run -p aura-cli -- runs listagainst a pre-0047runs.jsonl(a
Vec<(String, f64)>-params line). A fixture line:{"manifest":{"commit":"...","params":[["sma_cross.fast",2.0],["sma_cross.slow",4.0],["scale",0.5]],...Fix direction (RED-first via debug): back-compat read — accept both the
bare-float and the typed
Scalarforms inRegistry::load— preferred over aone-shot store migration (no user action needed). Separately decide that a parse
error should exit non-zero.
Triage (orchestrator): the secondary clause of this issue — "parse error
prints to stderr but exits 0" — is NOT a bug.
Verified against HEAD:
aura runs listandaura runs rankboth exit 2 on aregistry read error. The path is
load_runs_or_exit(crates/aura-cli/src/main.rs:742)→
process::exit(2); it was born withexit(2)(commit5bded0c) and has noexit-0 branch. The "(exit 0)" in the fieldtest transcript was a measurement
artifact:
$?was read after a pipe (cargo run … | head), so it capturedhead's exit code, not the binary's. A fresh debugger dispatch wrote therequested exit-code RED test; it passed GREEN, confirming the symptom is
absent, and was reverted (a green test asserted as RED would violate RED-first).
So #83 reduces to its primary, real defect:
Registry::loadcannot read apre-0047 bare-float params line (the cycle-0047 typed-
Scalarmigration left theflat store unmigrated). That is pinned by a RED test
(
tests::load_reads_a_legacy_bare_float_params_line, aura-registry) and will befixed via a back-compat read —
closes #83.