63711a1d3a
Downstream-author fieldtest of the #300 surface, public interface only, real GER40 archive. All four axes hold: the closed generate -> show -> hand-extend -> re-register -> run loop (2-cell extended campaign), the typed stop grammar's clap rejections, bare plateau's content-id identity with plateau:mean, and the show read-back (byte-identical, no framing) with a clean unknown-id refusal. Findings routed: 1 bug (show outside a project blames the id instead of the missing Aura.toml — RED-first fix follows), 2 friction items filed to the tracker (opaque process-document select refusal; no prefix-id hint on show), 4 working (carry-on). The fieldtest spec survives git-ignored as the next planning cycle's reference input. refs #300
68 lines
3.2 KiB
Markdown
68 lines
3.2 KiB
Markdown
# df — example 1 — the document-first closed loop (Axis 1)
|
|
|
|
Task: as a headless author, generate a campaign via the walkforward
|
|
sugar over real GER40, read it back with `campaign show`, hand-extend
|
|
it (add a second data window), re-register, and run the extended doc.
|
|
Binary: `target/debug/aura` @ a12617bb (fresh HEAD build).
|
|
|
|
## generate (walkforward sugar registers a process + campaign, runs it)
|
|
|
|
$ aura walkforward blueprints/r_sma.json --real GER40 \
|
|
--from 1704067200000 --to 1719792000000 \
|
|
--axis fast.length=2,4 --name df-wf
|
|
aura: axis "fast.length" is not one of this blueprint's sweepable axes
|
|
— run 'aura sweep <bp> --list-axes' to see them [exit 2]
|
|
|
|
The raw op-script param name is rejected by the CLI `--axis`; the error
|
|
points at `--list-axes`, which prints the wrapped form:
|
|
|
|
$ aura sweep blueprints/r_sma.json --list-axes
|
|
sma_signal.fast.length:I64 default=2
|
|
sma_signal.slow.length:I64 default=4
|
|
sma_signal.bias.scale:F64 default=0.5
|
|
|
|
$ aura walkforward blueprints/r_sma.json --real GER40 \
|
|
--from 1704067200000 --to 1719792000000 \
|
|
--axis sma_signal.fast.length=2,4 --name df-wf [exit 0]
|
|
{"family_id":"248c2d71-0-GER40-w0-r0-s1-0","report":{...}}
|
|
... (all-zero R metrics: SMA crossover + vol stop takes 0 trades in
|
|
this window — a strategy/data artifact, not the cycle surface)
|
|
|
|
## read back with `campaign show`
|
|
|
|
$ aura campaign runs
|
|
248c2d71199bc83ea6d40cf5ba13c7c91915d6e07c14464dd4103c065ac4a4a2 run 0
|
|
— 1 cell(s), std::grid -> std::walk_forward
|
|
|
|
$ aura campaign show 248c2d71...a4a2
|
|
{"format_version":1,"kind":"campaign","name":"df-wf","data":{"instruments":
|
|
["GER40"],"windows":[{"from_ms":1704154499999,"to_ms":1719604380000}]},
|
|
"risk":[{"vol":{"length":3,"k":2.0}}],"strategies":[{"ref":{"content_id":
|
|
"884b1ba0..."},"axes":{"fast.length":{"kind":"I64","values":[2,4]}}}],
|
|
"process":{"ref":{"content_id":"752d6cca..."}},"seed":0,"presentation":
|
|
{"persist_taps":[],"emit":["family_table"]}} [exit 0]
|
|
|
|
- byte-identical to runs/campaigns/248c2d71...a4a2.json (diff clean)
|
|
- no trailing newline / no framing (print!, #164)
|
|
- axes stored in RAW form `fast.length` (not wrapped) — confirms #210
|
|
|
|
## hand-extend (add a second window) -> campaigns/df_wf_extended.json
|
|
|
|
$ aura campaign validate campaigns/df_wf_extended.json
|
|
... valid (intrinsic): 1 strategy(ies), 1 axes (2 points), 1 instrument(s),
|
|
2 window(s), 1 regime(s) — 2 cell(s)
|
|
... valid (referential): all references resolve, axes are in the param space
|
|
... valid (executable): pipeline shape and static guards pass [exit 0]
|
|
|
|
$ aura campaign register campaigns/df_wf_extended.json
|
|
registered campaign a72028e8b18ab...f4a1 (...) [exit 0]
|
|
|
|
## run the extended document
|
|
|
|
$ aura campaign run a72028e8b18ab...f4a1 [exit 0]
|
|
cell window_ms=[1704154499999, 1719604380000] stages=[std::grid, std::walk_forward]
|
|
cell window_ms=[1719792000000, 1735689600000] stages=[std::grid, std::walk_forward]
|
|
|
|
Outcome: full loop generate -> show -> extend -> re-register -> run
|
|
completed, exit 0, both windows exercised. WORKING.
|