ed1e8a0d10
wrap_r hardwired SimBroker::builder(SYNTHETIC_PIP_SIZE); the resolved geometry-sidecar pip reached only the manifest broker label, so every real-data run computed total_pips/max_drawdown at 0.0001 regardless of instrument (GER40 pip=1: inflated 10^4) while the label claimed the real pip. wrap_r now takes pip_size. Real-pip call sites pass the resolved pip: run_signal_r (resolve_run_data reordered before the wrap), run_blueprint_member, and the campaign trace re-run in persist_campaign_traces (instrument_geometry lookup mirroring the run_member refusal — required so the C1 drift alarm compares re-run and nominee at the same pip). Probe-only call sites (param-space and axis probes; metrics discarded) keep SYNTHETIC_PIP_SIZE explicitly. The two golden stitched_total_pips pins in cli_run.rs rescaled by exactly the 10^4 bug factor while n_trades/expectancy_r stayed byte-identical — confirming R metrics were never pip-contaminated. Alternative rejected: dropping pip-denominated metrics from real-data reports — the manifest already stamps the resolved pip, so running the graph at it restores label truthfulness without shrinking the report. Verified: full workspace suite green (0 failed incl. the real-data e2e suite), clippy -D warnings clean. closes #232