829a1984e6
The binary is the only always-present teacher (C29); the 2026-07-22 external field test showed the help teaching nothing but the verb inventory. This cycle makes every closed vocabulary the binary ships listable with a one-line meaning, and opens the help with the concepts the field agent had to discover forensically. #315 — help + introspection: - `aura --help` opens with the two-layer concepts paragraph (research verbs as sugar over registered process/campaign documents; the directly authorable data plane; bias-as-target-position + protective-stop execution model in R; how traces come to exist). - Each document-bridged sugar verb's long help names the process shape it desugars to (sweep -> std::sweep; walkforward -> [std::grid, std::walk_forward]; mc -> + std::monte_carlo; generalize -> [std::sweep (selection), std::generalize]). `run` is not verb_sugar-bridged, so its help points at the canonical document-first form instead of claiming a desugaring it does not perform. - `graph introspect --vocabulary` lists each node type with its schema doc (bare names taught nothing); `--node <T>`'s head line carries the meaning. - `graph introspect --folds` (new): the tap-fold vocabulary with bind rule, output kind, and meaning — it existed only as source comments. The rows live in aura-std (`fold_vocabulary`), unit-pinned against `fold_binds_at`/`fold_output_kind` so the prose cannot drift from the executable rules, and doc_gate-checked (C29 entry seam). The discovery surface is graph introspect because folds bind at graph-declared taps (C27); the document layer still refuses a folds slot pending #310. - `process introspect --metrics` lines carry each metric's meaning (the doc column existed since #316 but was never printed). - `campaign introspect --block std::presentation` lists the four persisted taps' meanings under the persist_taps slot. - The scaffolded project CLAUDE.md teaches the execution semantics (bias as held target, protective stop, R) and the document data plane. #323 — C29 authoring surfaces: - `introspect --unwired` enumerates the optional `description` envelope slot for both document kinds (absent-only, like risk/cost); the campaign lib fixture gains a description, and the risk/cost-bound e2e binds description too so "no open slots" keeps meaning complete. - `graph build --help` carries the op-list reference: all nine op kinds with fields and a worked element each (OP_REFERENCE lives beside OpDoc so a new variant is one screen from its help line). - The authoring guide's S0 worked literal is byte-pinned to the scaffold's LIB_RS template (rendered with the guide's my_lab namespace); the scaffold e2es compile that template for real, so the pin is a transitive compile guard. The template gains the guide's C29 comment, the guide gains the template's rename note — one worked example, two surfaces, zero drift. Deliberately out of scope (ratified #319, 2026-07-24): no doc-strings for the quintet's 48 flag fields — the sugar surface retires; only the pointer lines above bridge toward the document layer. Verification: full workspace suite green, clippy -D warnings clean, aura-bench exit 0 with all fingerprints OK (help_ms +1.6% — the longer help text, in tolerance), cargo doc warning count unchanged (7 pre-existing). 9 new e2e pins in tests/help_self_description.rs; guide + CLAUDE.md pins in scaffold unit tests; fold-vocabulary rules + doc_gate unit-pinned in aura-std. closes #315 closes #323
80 lines
2.1 KiB
Rust
80 lines
2.1 KiB
Rust
//! `aura-std` — the standard node library shipped with the engine.
|
|
//!
|
|
//! The universal, batteries-included building blocks every project gets for
|
|
//! free: common indicators (SMA, ATR, RSI, …), resamplers, the `SessionNode`,
|
|
//! standard combinators, the legacy `SimBroker` pip yardstick, and cost-model
|
|
//! nodes authored against the [`CostNode`] trait + [`CostRunner`] adapter
|
|
//! (`ConstantCost`, `VolSlippageCost`, …, in R — C10). Depends only on `aura-core`
|
|
//! (the shared contract).
|
|
//!
|
|
//! This is the top tier of the three-tier node-reuse model (contract C16):
|
|
//!
|
|
//! - `aura-std` — universal blocks, here, ship with the engine;
|
|
//! - shared node crates — cross-project-reusable blocks, in their own repos,
|
|
//! pulled in as cargo git dependencies;
|
|
//! - project-local `nodes/` — experimental, project-specific blocks.
|
|
//!
|
|
//! The first block lands with the walking skeleton: [`Sma`], the simple moving
|
|
//! average — a worked producer node proving the `aura-core` `Node` contract.
|
|
|
|
mod abs;
|
|
mod add;
|
|
mod and;
|
|
mod const_node;
|
|
mod cumsum;
|
|
mod delay;
|
|
mod div;
|
|
mod ema;
|
|
mod eqconst;
|
|
mod gated_recorder;
|
|
mod gt;
|
|
mod latch;
|
|
mod lincomb;
|
|
mod max;
|
|
mod min;
|
|
mod mul;
|
|
mod recorder;
|
|
mod rolling_max;
|
|
mod rolling_min;
|
|
mod scale;
|
|
mod select;
|
|
mod series_reducer;
|
|
mod sign;
|
|
mod sma;
|
|
mod sqrt;
|
|
mod sub;
|
|
mod tap_cell;
|
|
mod tap_fold;
|
|
mod tap_live;
|
|
mod when;
|
|
pub use abs::Abs;
|
|
pub use add::Add;
|
|
pub use and::And;
|
|
pub use const_node::Const;
|
|
pub use cumsum::CumSum;
|
|
pub use delay::Delay;
|
|
pub use div::Div;
|
|
pub use ema::Ema;
|
|
pub use eqconst::EqConst;
|
|
pub use gated_recorder::GatedRecorder;
|
|
pub use gt::Gt;
|
|
pub use latch::Latch;
|
|
pub use lincomb::LinComb;
|
|
pub use max::Max;
|
|
pub use min::Min;
|
|
pub use mul::Mul;
|
|
pub use recorder::Recorder;
|
|
pub use rolling_max::RollingMax;
|
|
pub use rolling_min::RollingMin;
|
|
pub use scale::Scale;
|
|
pub use select::Select;
|
|
pub use series_reducer::SeriesReducer;
|
|
pub use sign::Sign;
|
|
pub use sma::Sma;
|
|
pub use sqrt::Sqrt;
|
|
pub use sub::Sub;
|
|
pub use tap_cell::newest_cell;
|
|
pub use tap_fold::{fold_binds_at, fold_output_kind, fold_vocabulary, FoldKind, FoldSchema, TapFold};
|
|
pub use tap_live::TapLive;
|
|
pub use when::When;
|