Files
claude b39fd63396 refactor: split the aura-std roster into C28 layer crates
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
2026-07-19 20:28:20 +02:00

24 lines
952 B
TOML

[package]
name = "aura-composites"
edition.workspace = true
version.workspace = true
license.workspace = true
publish.workspace = true
[dependencies]
# aura-composites is the composition layer: `GraphBuilder`/`Composite` come from the
# engine, the wired nodes from aura-std. It lives in its own crate so the engine
# stays domain-free (-> aura-core only) — see src/lib.rs for the full rationale.
# This is the single layer that couples both, and the graph stays acyclic
# (aura-composites -> {aura-engine, aura-std} -> aura-core).
aura-core = { path = "../aura-core" }
aura-engine = { path = "../aura-engine" }
aura-std = { path = "../aura-std" }
aura-strategy = { path = "../aura-strategy" }
aura-backtest = { path = "../aura-backtest" }
[dev-dependencies]
# serde_json: the risk_executor fixture round-trips a folded RunMetrics through
# serde to prove the `r` block survives (RunMetrics lives in aura-engine).
serde_json = { workspace = true }