param_space() knobs (name : kind):
  sma_cross.length : I64
  sma_cross.length : I64
  scale : F64

[2a] promise-form (sma_cross.fast/.slow) result: Some(UnknownKnob("sma_cross.fast"))
[2b] real-emitted-name (sma_cross.length) result: Some(AmbiguousKnob("sma_cross.length"))

[2c] param_space() AFTER aliasing:
  sma_cross.fast : I64
  sma_cross.slow : I64
  scale : F64

[2c] aliased named-bound run — recorded equity rows: 12
  ts=             0 equity_pips=0.0000
  ts=   60000000000 equity_pips=0.0000
  ts=  120000000000 equity_pips=0.0000
  ts=  180000000000 equity_pips=0.0000
  ts=  240000000000 equity_pips=4.0000
  ts=  300000000000 equity_pips=11.5000
  ts=  360000000000 equity_pips=3.5000
  ts=  420000000000 equity_pips=-2.5000
  ts=  480000000000 equity_pips=0.5000
  ts=  540000000000 equity_pips=4.5000
  ts=  600000000000 equity_pips=-2.5000
  ts=  660000000000 equity_pips=-6.5000

[3] wrong-name (sma_cross.slo) result: Some(UnknownKnob("sma_cross.slo"))
[4] bare-name ("fast") result: Some(UnknownKnob("fast"))
[5] wrong-kind (scale=1 into F64) result: Some(KindMismatch { knob: "scale", expected: F64, got: I64 })
[6] ambiguous (plain sma_cross.length) result: Some(AmbiguousKnob("sma_cross.length"))

OK: param-space inspected, named bind ran (aliased), diagnostics probed.
