# m42_3 — the validation spine document-first, GER40 + USDJPY, 2023-01-01..2024-12-31
# process pipeline: std::grid -> std::walk_forward(90/30/30 rolling, argmax expectancy_r) -> std::monte_carlo(200x5) -> std::generalize

$ aura campaign validate documents/spine-campaign.json
campaign document valid (intrinsic): 1 strategy(ies), 2 axes (6 points), 2 instrument(s), 1 window(s), 1 regime(s) (default) — 2 cell(s)
campaign document valid (referential): all references resolve, axes are in the param space
campaign document valid (executable): pipeline shape and static guards pass
EXIT=0

$ aura exec documents/spine-campaign.json   # stdout: 42 member reports + campaign_run; stderr below
EXIT=0
aura: campaign run 2 recorded: 2 cells
aura: note: tap "net_r_equity" needs a cost model; add a cost block to the campaign document; skipped
aura: traces persisted: 0959eda8-2 (1 tap(s) x 2 cell(s))
stdout lines: 43

# campaign_run record, trimmed to the validation payload:
 cell GER40 stages ['std::grid', 'std::walk_forward', 'std::monte_carlo']
   monte_carlo pooled_oos: mean=-0.004729 p5=-0.0469 p95=0.0381 prob_le_zero=0.59 n_trades=21910
   coverage {'effective_from_ms': 1672618499999, 'effective_to_ms': 1735592220000}
 cell USDJPY stages ['std::grid', 'std::walk_forward', 'std::monte_carlo']
   monte_carlo pooled_oos: mean=-0.033809 p5=-0.0766 p95=0.0177 prob_le_zero=0.885 n_trades=25258
   coverage {'effective_from_ms': 1672617660000, 'effective_to_ms': 1735603200000}
 generalize: metric=expectancy_r n_instruments=2 worst_case=-0.251491 sign_agreement=0 per_instrument=[['GER40', -0.2514905108214054], ['USDJPY', -0.09353171411968528]]
 NOTE: presentation.emit asked for family_table AND selection_report;
       stdout carried 42 family_table lines and ZERO selection_report lines, silently.

$ aura runs families
{"family_id":"0959eda8-0-GER40-w0-r0-s1-0","kind":"WalkForward","members":21}
{"family_id":"0959eda8-0-USDJPY-w0-r0-s1-0","kind":"WalkForward","members":21}

$ aura reproduce 0959eda8-0-GER40-w0-r0-s1-0   (first 2 of 21 members)
0959eda8-0-GER40-w0-r0-s1-0  member fast.length=10, slow.length=100, stop_length=3, stop_k=2  reproduced: bit-identical
0959eda8-0-GER40-w0-r0-s1-0  member fast.length=10, slow.length=50, stop_length=3, stop_k=2  reproduced: bit-identical

$ aura chart 0959eda8-0                        # default tap is equity; the campaign persisted r_equity
EXIT=1
aura: no family member has a tap named 'equity'

$ aura chart b657c714-GER40-w0                 # the literal directory name under runs/traces/0959eda8-0/
EXIT=1
aura: no recorded run or family 'b657c714-GER40-w0' under runs/traces (check the handle a sweep/walk-forward/campaign run printed for a typo — re-running with this handle as `--trace` will not create it)
  ^ names a `--trace` flag that exists on no verb after the retirement.

$ aura exec blueprints/signal.json --tap equity=record   # the scaffolded starter blueprint
EXIT=1
aura: the tap plan names 'equity', but the blueprint declares no such tap — declared taps: 
  ^ the scaffolded starter declares no taps at all; the list after the em dash is empty.
