ff4a1b3d4a
Cycle-1 infrastructure for #165 (World/C21). Behaviour-preserving + workspace green; the CLI arm + tests (Tasks 4-5) follow. Task 1 — restructured stage1_r_graph into stage1_signal() (the serializable signal leg: SMA-cross -> Bias, a `price` input-role + a `bias` output) + wrap_stage1r(signal, ...) (broker/sinks/exec/cost around a nested signal), with stage1_r_graph() = wrap_stage1r(stage1_signal(...)). DEVIATION from the plan's "callers untouched" claim, verified behaviour-preserving: nesting the signal prefixes its param-space names (stage1_signal.fast.length), which broke the sweep's bare .axis("fast.length"); fixed exactly as the #137 stop-knob machinery does — FAST_LENGTH_SUFFIX/SLOW_LENGTH_SUFFIX suffix-resolution + stage1_r_friendly_name arms mapping the prefixed names back to the bare manifest names. All observable behaviour (manifest names, member keys, metrics, traces) byte-identical; the flat graph and every metric unchanged (full suite green, incl. sweep/walkforward/MC). Task 2 — RunManifest.topology_hash: Option<String> (Tier-1 optional, serde default/skip — old manifests byte-identical, #156), threaded None into all 24 literal sites across 7 crates. Also fixed the aura-registry RunManifestRead read-mirror to carry topology_hash (it was hardcoding None on load) — else a stored hash would silently drop on the registry round-trip once Task 3 stores a real one. Task 3 — the shared run_signal_stage1r seam (hash the signal, wrap, compile with params, bootstrap, run, manifest with params from param_space + topology_hash) + the sha256_hex topology_hash helper (sha2 in aura-cli, off the frozen engine, invariant 8). run_stage1_r now carries its topology_hash too (every run becomes self-identifying, #158). The seam is unwired until Task 4 (transient #[allow(dead_code)], retired there); RED-first seam tests added. Verified: cargo test --workspace green (51 suites, 0 failures); cargo clippy --workspace --all-targets -D warnings clean. refs #165
43 lines
1.9 KiB
TOML
43 lines
1.9 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-composites: the Stage-1 RiskExecutor / vol_stop composite-builders the
|
|
# stage1-r harness wires (kept out of aura-engine so the engine stays domain-free).
|
|
aura-composites = { path = "../aura-composites" }
|
|
aura-registry = { path = "../aura-registry" }
|
|
aura-std = { path = "../aura-std" }
|
|
aura-ingest = { path = "../aura-ingest" }
|
|
# 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"
|
|
# sha2: the run's topology_hash (#158) is the SHA256 of the canonical signal
|
|
# blueprint serialization. A vetted RustCrypto crate (per-case C16 review,
|
|
# SHA256 user-settled); lives in the research-side CLI, off the frozen engine
|
|
# (invariant 8).
|
|
sha2 = "0.10"
|