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
76 lines
3.8 KiB
TOML
76 lines
3.8 KiB
TOML
[package]
|
|
name = "aura-cli"
|
|
edition.workspace = true
|
|
version.workspace = true
|
|
license.workspace = true
|
|
publish.workspace = true
|
|
|
|
[[bin]]
|
|
name = "aura"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
aura-core = { path = "../aura-core" }
|
|
aura-engine = { path = "../aura-engine" }
|
|
aura-registry = { path = "../aura-registry" }
|
|
aura-research = { path = "../aura-research" }
|
|
# aura-campaign: campaign-execution semantics (preflight, cell loop, stage
|
|
# sequencing, realization record); the CLI implements its MemberRunner seam
|
|
# and renders its outcome (#198).
|
|
aura-campaign = { path = "../aura-campaign" }
|
|
aura-std = { path = "../aura-std" }
|
|
aura-strategy = { path = "../aura-strategy" }
|
|
aura-backtest = { path = "../aura-backtest" }
|
|
aura-vocabulary = { path = "../aura-vocabulary" }
|
|
aura-ingest = { path = "../aura-ingest" }
|
|
# aura-measurement: the C28 measurement rung's IC vocabulary + reduction
|
|
# (#295), the shell re-exposes it as the `aura measure ic` verb.
|
|
aura-measurement = { path = "../aura-measurement" }
|
|
# aura-runner: the C28 assembly position (#295) — harness assembly, input
|
|
# binding (C26), and the param<->config translators the shell wraps into
|
|
# verbs.
|
|
aura-runner = { path = "../aura-runner" }
|
|
# data-server: the local M1 archive `aura run --real` streams from. Mirrors the
|
|
# git line in crates/aura-ingest/Cargo.toml verbatim (same source of truth).
|
|
data-server = { git = "http://192.168.178.103:3000/Brummel/data-server.git", branch = "main" }
|
|
# serde derives Serialize on the chart-trace payload (Series) so render_chart_html
|
|
# can embed it via serde_json::json!; admitted under the per-case dependency policy,
|
|
# same as aura-engine.
|
|
serde = { workspace = true }
|
|
# serde_json renders the walk-forward summary line (MetricStats + stitched total)
|
|
# and the injected chart traces (window.AURA_TRACES);
|
|
# admitted under the per-case dependency policy, same as aura-engine.
|
|
serde_json = { workspace = true }
|
|
# libc: restore the default SIGPIPE disposition at startup (see `fn main`) so a
|
|
# closed stdout pipe (`aura sweep | head`, a closed UI pane) terminates the
|
|
# process cleanly instead of panicking the runtime's SIG_IGN default into an
|
|
# EPIPE. The standard vetted crate for signal disposition, already transitive in
|
|
# Cargo.lock; admitted under the per-case dependency policy.
|
|
libc = "0.2"
|
|
# clap: the vetted standard argument parser. Adopted (C16 per-case review) to
|
|
# replace the hand-rolled argv parser + ten duplicated help surfaces with one
|
|
# declarative source, giving scoped --help, --version, --flag=value, and
|
|
# long-option abbreviation. Research-side CLI only (invariant 8): a dev-loop
|
|
# compile tax, never a frozen-artifact tax.
|
|
clap = { version = "4", features = ["derive"] }
|
|
|
|
[dev-dependencies]
|
|
# zip: hand-packs a tiny synthetic M1 archive (tests/common/mod.rs) in the
|
|
# exact on-disk format data-server reads — already transitive via the
|
|
# data-server dependency above; declared directly here so test code may
|
|
# `use zip::...` (#250, no new dependency actually enters the build graph).
|
|
zip = "2"
|
|
# aura-composites: the RiskExecutor / vol_stop composite-builders — production
|
|
# use moved to aura-runner (#295); the shell's own use is test-only
|
|
# (#[cfg(test)] use aura_composites::StopRule in main.rs's ic_tests module),
|
|
# so this rides the same dev-only-edge idiom as `aura-analysis`/`sha2` below.
|
|
aura-composites = { path = "../aura-composites" }
|
|
# aura-analysis: pearson_corr, used only by the ic_tests unit-test fixtures
|
|
# (mod ic_tests in main.rs) — a test-only edge, not a production one.
|
|
aura-analysis = { path = "../aura-analysis" }
|
|
# sha2: production topology_hash / dylib_sha256 hashing now lives entirely in
|
|
# aura-runner (#295); the shell's own use is test-only (tests/cli_run.rs
|
|
# re-hashes a stored blueprint to check a golden), so this rides the same
|
|
# dev-only-edge idiom as `zip`/`aura-analysis` above.
|
|
sha2 = "0.10"
|