b39fd63396
Phase 4 of the Stratification milestone. aura-std held four C28 ladder layers in one roster; this cuts them into layer-aligned, aura-core-only node crates so the import direction is enforced by the crate graph: - aura-std — engine nodes only (arithmetic/logic/rolling + sinks) - aura-market — session, resample - aura-strategy — bias, stops, sizer, cost-model machinery - aura-backtest — sim_broker, position_management - aura-vocabulary — the relocated closed std_vocabulary roster Node modules move verbatim (byte-identical renames); consumers are rewired by import path only. A new structural test (aura-vocabulary/tests/c28_layering.rs) asserts each node crate's [dependencies] stay within its C28-permitted inner set, catching the acyclic-but-outward violation the compiler misses. Behaviour byte-identical: full workspace suite green (1448 tests), no golden edited, clippy -D warnings clean. C28 Status block updated. closes #288
49 lines
2.6 KiB
TOML
49 lines
2.6 KiB
TOML
[package]
|
|
name = "aura-engine"
|
|
edition.workspace = true
|
|
version.workspace = true
|
|
license.workspace = true
|
|
publish.workspace = true
|
|
|
|
[dependencies]
|
|
aura-core = { path = "../aura-core" }
|
|
# aura-analysis holds the pure trading-domain reductions (R-metrics, the
|
|
# position-event table, the multiple-comparison hurdle math) lifted out of
|
|
# `report` (issue #136). The engine re-exports them via `report::` so callers
|
|
# resolve the moved types through aura-engine unchanged (C18 byte-identity).
|
|
aura-analysis = { path = "../aura-analysis" }
|
|
# serde is admitted under the amended C16 per-case dependency policy (INDEX.md):
|
|
# it gives the run-report types a typed (de)serialization path for the run
|
|
# registry (cycle 0029). serde's output is deterministic (C1-safe).
|
|
serde = { workspace = true }
|
|
# serde_json renders RunReport JSON for both the registry (disk) and stdout
|
|
# (RunReport::to_json) — one shape, no hand-rolled writer (amended C16).
|
|
serde_json = { workspace = true }
|
|
# rayon is admitted under the amended C16 per-case dependency policy (INDEX.md):
|
|
# it backs `run_indexed`'s work-stealing pool for the sweep/campaign executor.
|
|
# It stays within C1 (parallelism across sims, never within one) — each sim
|
|
# still runs its own deterministic, synchronous event loop on one thread; rayon
|
|
# only fans the *disjoint* sims of a family out across threads, replacing
|
|
# `std::thread::scope`. No dep on a workspace precedent (chrono's pattern:
|
|
# direct versioned dep).
|
|
rayon = "1"
|
|
|
|
[dev-dependencies]
|
|
# aura-std is a TEST-ONLY dependency: the engine's own integration tests
|
|
# (r_sma_e2e, random_sweep_e2e, ger40_breakout) drive real standard nodes through
|
|
# a bootstrapped Harness. The engine's library code never names a concrete node — it
|
|
# routes type-erased Scalar records (summarize_r reads the PositionManagement record
|
|
# positionally, by index), so aura-std stays out of [dependencies] and the engine is
|
|
# `-> aura-core` only. The node-naming composite-builders live in `aura-composites`.
|
|
aura-std = { path = "../aura-std" }
|
|
aura-market = { path = "../aura-market" }
|
|
aura-strategy = { path = "../aura-strategy" }
|
|
aura-backtest = { path = "../aura-backtest" }
|
|
aura-vocabulary = { path = "../aura-vocabulary" }
|
|
# chrono / chrono-tz build the Berlin-local-wall-clock epoch-ns timestamps the
|
|
# GER40 session-breakout E2E fixture (tests/ger40_breakout.rs) feeds the engine,
|
|
# exactly as `Session`'s own unit test does. Pinned to aura-std's versions (the
|
|
# same DST-aware wall-clock math), test-only — never on the engine's hot path.
|
|
chrono = { version = "0.4", default-features = false, features = ["clock"] }
|
|
chrono-tz = { version = "0.10", default-features = false }
|