3016bd6b11
reproduce_family no longer hardcodes DataSource::Synthetic: it reads the family's instrument + window from the persisted manifest and rebuilds the same local-archive source the dissolved verbs run over; a missing archive refuses with the verbs' established named-data refusal (exit 1) instead of silently re-running over wrong data. Sweep families now reproduce N/N bit-identically; WalkForward families yield a verdict instead of the empty-OOS-window panic. The synthetic-family path is byte-unchanged. Accepted minimal duplication: reproduce_family performs its own family lookup to read the instrument before delegating to reproduce_family_in, whose signature and unit-test seam stay byte-identical (constraint: minimal fix). MonteCarlo reproduce still runs the synthetic seed walk regardless of a real manifest — pre-existing, semantically distinct (bit-identity over bootstrap resamples), filed forward. Verified: both #229 RED tests green over the GER40 archive, full workspace suite 1107/0, clippy -D warnings clean. closes #229