diff --git a/crates/aura-cli/src/graph_construct.rs b/crates/aura-cli/src/graph_construct.rs index 75fcb98..fc65fdf 100644 --- a/crates/aura-cli/src/graph_construct.rs +++ b/crates/aura-cli/src/graph_construct.rs @@ -277,11 +277,11 @@ pub fn introspect_cmd(cmd: crate::GraphIntrospectCmd, env: &aura_runner::project if cmd.vocabulary { // C29 (#315): each type id carries its schema's one-line meaning — // bare names teach nothing (What do Latch, When, Select, Bias do?). + // A rostered id that fails to resolve is an invariant breach; better + // loud than a silent C29-incomplete bare row. for t in env.type_ids() { - match env.resolve(t) { - Some(b) => println!("{t:<18} {}", b.schema().doc), - None => println!("{t}"), - } + let b = env.resolve(t).expect("every rostered type id resolves to a builder"); + println!("{t:<18} {}", b.schema().doc); } } else if cmd.folds { // The fold vocabulary binds at graph-declared taps (C27), so the diff --git a/crates/aura-cli/src/main.rs b/crates/aura-cli/src/main.rs index 5b6146a..8f62680 100644 --- a/crates/aura-cli/src/main.rs +++ b/crates/aura-cli/src/main.rs @@ -1032,9 +1032,10 @@ const CONCEPTS_HELP: &str = "\ Author, backtest, and validate trading strategies — research CLI. Two layers, one vocabulary: the research verbs are the convenience surface — -sweep, walkforward, mc, and generalize each write registered process/campaign -documents and execute them (run is their single-backtest sibling). That -document data plane is directly authorable: `aura process` / `aura campaign` +over --real data, sweep, walkforward, mc, and generalize desugar to +registered process/campaign documents and execute them (run is their +single-backtest sibling; synthetic runs execute in-process). That document +data plane is directly authorable: `aura process` / `aura campaign` (validate | introspect | register | run), growing a document from a bare {} via `introspect --unwired`. @@ -1075,17 +1076,17 @@ enum Command { Graph(GraphCmd), /// Sweep a parameter grid over a strategy or a loaded blueprint. /// - /// Sugar over the document layer: desugars to a registered process - /// (std::sweep) + campaign pair — author the documents directly via - /// `aura process` / `aura campaign`. + /// Sugar over the document layer: over --real data this desugars to a + /// registered process (std::sweep) + campaign pair — author the documents + /// directly via `aura process` / `aura campaign`. Sweep(SweepCmd), /// Walk-forward validation over a strategy or a loaded blueprint. Over --real, the /// fixed 90/30-day roller fits to a --from/--to window shorter than it, preserving /// the 3:1 IS:OOS ratio, instead of refusing the window outright. /// - /// Sugar over the document layer: desugars to a registered process - /// ([std::grid, std::walk_forward]) + campaign pair — author the documents - /// directly via `aura process` / `aura campaign`. + /// Sugar over the document layer: over --real data this desugars to a + /// registered process ([std::grid, std::walk_forward]) + campaign pair — + /// author the documents directly via `aura process` / `aura campaign`. Walkforward(WalkforwardCmd), /// Grade one candidate across multiple instruments. /// @@ -1097,9 +1098,10 @@ enum Command { /// --real, the fixed 90/30-day walk-forward roller fits to a --from/--to window /// shorter than it, preserving the 3:1 IS:OOS ratio, instead of refusing outright. /// - /// Sugar over the document layer: desugars to a registered process - /// ([std::grid, std::walk_forward, std::monte_carlo]) + campaign pair — - /// author the documents directly via `aura process` / `aura campaign`. + /// Sugar over the document layer: over --real data this desugars to a + /// registered process ([std::grid, std::walk_forward, std::monte_carlo]) + + /// campaign pair — author the documents directly via `aura process` / + /// `aura campaign`. Mc(McCmd), /// List or inspect recorded run families. Runs(RunsCmd),