=== Task 3: sweep the breakout's structural params ===

param_space() of the breakout Composite:
    resample.period_minutes      : I64
    delay.lag                    : I64
    entry_bar.target             : I64
    exit_bar.target              : I64

coupling check:
    resample.period_minutes in space?  true
    any session.* period in space?     false
    => the bar-period coupling is NOT expressible as one swept param.

sweeping entry_bar x exit_bar (period pinned 15m) over GER40 2024-09:
    { delay.lag=1, entry_bar=2, exit_bar=5 }  total_pips=   -80.0  max_dd=  115.0
    { delay.lag=1, entry_bar=2, exit_bar=6 }  total_pips=  -112.5  max_dd=  122.0
    { delay.lag=1, entry_bar=2, exit_bar=8 }  total_pips=  -102.5  max_dd=  110.5
    { delay.lag=1, entry_bar=3, exit_bar=5 }  total_pips=   -45.0  max_dd=   77.0
    { delay.lag=1, entry_bar=3, exit_bar=6 }  total_pips=   -43.0  max_dd=   93.0
    { delay.lag=1, entry_bar=3, exit_bar=8 }  total_pips=  -118.5  max_dd=  161.0
    { delay.lag=1, entry_bar=4, exit_bar=5 }  total_pips=    -3.0  max_dd=   33.0
    { delay.lag=1, entry_bar=4, exit_bar=6 }  total_pips=    43.0  max_dd=   63.5
    { delay.lag=1, entry_bar=4, exit_bar=8 }  total_pips=   -75.0  max_dd=  165.5

OK: entry/exit-bar grid sweep works; bar-period coupling does not.
