5c2ac982bc
The shell no longer defines what an aura backtest is. Tasks 1-9 of the shell-boundary cycle — structural extraction, behaviour byte-identical: - aura-runner (new; the C28 assembly position): input binding (the C26 module, moved whole), the C1-load-bearing param<->config translators, harness assembly (wrap_r / run_signal_r / run_blueprint_member and the probe/reopen cluster), axis + risk-regime conventions (bind_axes et al.), the campaign family builders + MC guards, reproduce (process::exit -> RunnerError, shell remaps to identical bytes), the measurement-run orchestration, project loading (Env / cdylib load / charter / staleness, moved whole), the coverage gap-walk (deduplicated onto interior_gap_months), and DefaultMemberRunner — the public implementation of aura_campaign::MemberRunner (ex CliMemberRunner). The MemberRunner trait stays in aura-campaign; the column still imports no harness/data-binding machinery. - aura-measurement (new; seeds C28 rung 3): the IcMetrics/IcKey vocabulary + information_coefficient, verbatim incl. serde derives (#294 duplicate-timestamp semantics move as-is, unresolved). - aura-backtest: the pure per-run scaffold (point_from_params, wf_ms_sizes / fit_wf_ms_sizes, intersect_shared_window). - shell residue: main.rs / campaign_run.rs keep argv/dispatch, argv->document translation, and presentation only; walkforward_summary_json_from_reports now calls the public aura_engine::param_stability instead of its inline twin. - worked example (crates/aura-runner/examples/world_member_run.rs): a World program runs a member backtest through the library alone. Held quality findings, adjudicated: the plan's literal pub-visibility list for binding.rs kept (cosmetic); ~20 refusal sites inside aura-runner (family/member/measure/translate) still process::exit — behaviour-identical today, conversion to RunnerError is filed forward (refs #297); rustfmt line-width drift on re-pathed call sites left for a repo-wide fmt decision. Verification: cargo test --workspace green (1471 passed, 0 failed); cargo clippy --workspace --all-targets -D warnings clean. Byte-identity is pinned by the untouched shell E2E suites (cli_run, measure_ic, run_measurement, research_docs, run_refuses_unrunnable_blueprint, tap_recording — zero assertion edits). Remaining in this cycle: full-workspace c28_layering + shell-content check, ledger amendments (C28 assembly position, C25/C14 control-surface consequence, C26 realization note). refs #295
55 lines
2.1 KiB
TOML
55 lines
2.1 KiB
TOML
# aura — a "game engine for traders": a Rust framework + playground to author
|
|
# trading nodes, backtest them deterministically and in parallel, compose them
|
|
# fractally, and freeze a validated strategy into a standalone bot.
|
|
#
|
|
# Workspace split is driven by the cdylib hot-reload boundary: `aura-core` is the
|
|
# shared contract that BOTH the engine and every hot-reloadable signal/node
|
|
# cdylib link against. Add crates only when a boundary proves real.
|
|
|
|
[workspace]
|
|
resolver = "3"
|
|
members = [
|
|
"crates/aura-core",
|
|
"crates/aura-std",
|
|
"crates/aura-vocabulary",
|
|
"crates/aura-market",
|
|
"crates/aura-measurement",
|
|
"crates/aura-strategy",
|
|
"crates/aura-backtest",
|
|
"crates/aura-engine",
|
|
"crates/aura-analysis",
|
|
"crates/aura-composites",
|
|
"crates/aura-cli",
|
|
"crates/aura-ingest",
|
|
"crates/aura-registry",
|
|
"crates/aura-research",
|
|
"crates/aura-runner",
|
|
"crates/aura-campaign",
|
|
"crates/aura-bench",
|
|
]
|
|
|
|
[workspace.package]
|
|
edition = "2024"
|
|
version = "0.1.0"
|
|
license = "proprietary"
|
|
publish = false
|
|
|
|
[workspace.dependencies]
|
|
serde = { version = "1", features = ["derive"] }
|
|
# float_roundtrip is load-bearing for bit-identical reproduction (`aura reproduce`,
|
|
# #158): an f64 blueprint param (e.g. a Bias `scale`) is round-tripped through the
|
|
# content-addressed store as JSON, and the DEFAULT serde_json parser can be 1 ULP off,
|
|
# which would re-derive a member as DIVERGED. This feature guarantees the exact f64 is
|
|
# parsed back. Exercised (with a 1-ULP canary value) by aura-cli's
|
|
# `f64_blueprint_param_survives_store_round_trip_bit_identically`.
|
|
serde_json = { version = "1", features = ["float_roundtrip"] }
|
|
|
|
# Dependencies at opt-level 2, workspace crates at the dev default (0): the E2E
|
|
# suite spawns the debug `aura` binary whose wall-clock is dominated by dependency
|
|
# code (zip inflate, sha2 dylib hashing, serde) — optimizing deps is multiplicative
|
|
# there, while workspace crates stay fast-to-rebuild and debuggable. Float pins are
|
|
# unaffected: every pinned float is computed by workspace code (IEEE semantics are
|
|
# opt-level-independent in Rust regardless).
|
|
[profile.dev.package."*"]
|
|
opt-level = 2
|