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
This commit is contained in:
2026-07-19 20:28:20 +02:00
parent 34ff539143
commit b39fd63396
66 changed files with 398 additions and 152 deletions
+8 -6
View File
@@ -30,16 +30,16 @@ use aura_registry::{
FamilyMember, Generalization, NameKind, PlateauMode, Registry, RunTraces,
DEFLATION_BLOCK_LEN, DEFLATION_N_RESAMPLES,
};
use aura_backtest::{SimBroker, PM_FIELD_NAMES, PM_RECORD_KINDS};
use aura_std::{
cost_port, GatedRecorder, LinComb, Recorder, RollingMax, RollingMin,
SeriesReducer, SimBroker, Sub, GEOMETRY_WIDTH, PM_FIELD_NAMES,
PM_RECORD_KINDS,
GatedRecorder, LinComb, Recorder, RollingMax, RollingMin, SeriesReducer, Sub,
};
use aura_strategy::{cost_port, GEOMETRY_WIDTH};
// `std_vocabulary` is now only reached through `project::Env::resolve` in production
// code; the test module still builds reference blueprints against it directly, so
// the import is test-only.
#[cfg(test)]
use aura_std::std_vocabulary;
use aura_vocabulary::std_vocabulary;
// `Delay` is now only used by the test-only `r_breakout_signal` carve (#159 cut 2's
// fused-builder retirement dropped the production caller); the import is test-only.
#[cfg(test)]
@@ -61,9 +61,11 @@ use aura_engine::ColumnarTrace;
// `Bias`/`Ema`/`Sma` are only reached from the test module; the imports are
// test-only, mirroring `Delay`/`Scale` above.
#[cfg(test)]
use aura_std::{Bias, Ema, Sma};
use aura_strategy::Bias;
#[cfg(test)]
use aura_std::{ConstantCost, VolSlippageCost};
use aura_std::{Ema, Sma};
#[cfg(test)]
use aura_strategy::{ConstantCost, VolSlippageCost};
use std::sync::mpsc;
use std::sync::LazyLock;
use std::collections::{BTreeMap, BTreeSet, HashSet};