Bar-period split across Resample(tunable)/Session(baked) desyncs silently to 0 pips; Delay.lag leaks into param_space #96
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?
Surfaced by the GER40 research deep-dive fieldtest (
docs/specs/fieldtest-research-breakout-deepdive.md).Two coupled C34 (deform-vs-tune) violations surfaced while sweeping the
breakout's structural params.
(1) The bar period is one logical knob split across two nodes, uncoupled,
desyncing silently.
Resample::builder()exposesperiod_minutesas atunable param, but
Session::builder(open, tz, period)bakes its period(its rustdoc: "NOT scalar params, the declared param list is empty"). So a
Composite's
param_space()carriesresample.period_minutesbut no Sessionperiod. Sweeping
resample.period_minutes = 30while Session stays baked at 15bootstraps and runs with no error, but the two clocks desync —
entry_bar.target == 3no longer means "3rd 30m bar". Verified:A coherent 30m strategy is reachable ONLY by rebuilding the Composite with
session_period = 30(topology, not a sweep). The public sweep API silentlyadmits a structurally meaningless combination and returns a quiet 0.0 rather
than a diagnostic — the worst outcome.
(2) Structural deformers leak into the default
param_space().Delay::builder()shipslagas a tunable param; the breakout'sdelay.lagisa STRUCTURAL constant ("previous bar's high" — varying it deforms the strategy,
the exact C34 discriminator). Yet it pollutes
param_space()by default, soGridSpace::newREQUIRES the researcher to enumeratedelay.lag(or iterrors), and a naive random sweep would silently deform the strategy. The author
never opted in; the node's default
builder()forces the pollution onto everyconsumer.
Resample.period_minuteshas the same character.Repro:
cargo run --release --manifest-path fieldtests/research-breakout-deepdive/Cargo.toml --bin t3b_period_desync(silent 0.0) and
--bin t3_sweep(param_space()listsdelay.lag).Recommend (debug / planner): decide per node whether
period_minutes/lagare tuning knobs or structural constants. If structural, keep them out ofthe default
param_space()(or have the strategy authorbind()them out andmake the demo model that for consumers). For the period specifically, either
make Session's period a tunable param so a single swept value feeds both, or
provide a coupling / derived-param mechanism so the two periods cannot desync.