diff --git a/crates/aura-std/src/abs.rs b/crates/aura-std/src/abs.rs index d57ca26..f94c6d7 100644 --- a/crates/aura-std/src/abs.rs +++ b/crates/aura-std/src/abs.rs @@ -23,6 +23,7 @@ impl Abs { inputs: vec![PortSpec { kind: ScalarKind::F64, firing: Firing::Any, name: "value".into() }], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![], + doc: "absolute value of the input series", }, |_| Box::new(Abs::new()), ) diff --git a/crates/aura-std/src/add.rs b/crates/aura-std/src/add.rs index f8e9c49..5e355a8 100644 --- a/crates/aura-std/src/add.rs +++ b/crates/aura-std/src/add.rs @@ -38,6 +38,7 @@ impl Add { ], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![], + doc: "elementwise sum of two input series", }, |_| Box::new(Add::new()), ) diff --git a/crates/aura-std/src/and.rs b/crates/aura-std/src/and.rs index 810606d..1aacbff 100644 --- a/crates/aura-std/src/and.rs +++ b/crates/aura-std/src/and.rs @@ -37,6 +37,7 @@ impl And { ], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::Bool }], params: vec![], + doc: "logical AND of two boolean series", }, |_| Box::new(And::new()), ) diff --git a/crates/aura-std/src/const_node.rs b/crates/aura-std/src/const_node.rs index 758e016..002c48a 100644 --- a/crates/aura-std/src/const_node.rs +++ b/crates/aura-std/src/const_node.rs @@ -33,6 +33,7 @@ impl Const { inputs: vec![PortSpec { kind: ScalarKind::F64, firing: Firing::Any, name: "clock".into() }], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![ParamSpec { name: "value".into(), kind: ScalarKind::F64 }], + doc: "constant-valued stream from a single param", }, |p| Box::new(Const::new(p[0].f64())), ) diff --git a/crates/aura-std/src/cumsum.rs b/crates/aura-std/src/cumsum.rs index df4f168..d6376b8 100644 --- a/crates/aura-std/src/cumsum.rs +++ b/crates/aura-std/src/cumsum.rs @@ -53,6 +53,7 @@ impl CumSum { inputs: vec![PortSpec { kind: ScalarKind::F64, firing: Firing::Any, name: "series".into() }], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![], + doc: "running cumulative sum of the input series", }, |_| Box::new(CumSum::new()), ) diff --git a/crates/aura-std/src/delay.rs b/crates/aura-std/src/delay.rs index 164c5ae..180ebc8 100644 --- a/crates/aura-std/src/delay.rs +++ b/crates/aura-std/src/delay.rs @@ -65,6 +65,7 @@ impl Delay { inputs: vec![PortSpec { kind: ScalarKind::F64, firing: Firing::Any, name: "series".into() }], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![ParamSpec { name: "lag".into(), kind: ScalarKind::I64 }], + doc: "emits the input from `lag` cycles ago — the explicit delay register (C5)", }, |p| Box::new(Delay::new(p[0].i64() as usize)), ) diff --git a/crates/aura-std/src/div.rs b/crates/aura-std/src/div.rs index 9187641..97ef6b1 100644 --- a/crates/aura-std/src/div.rs +++ b/crates/aura-std/src/div.rs @@ -30,6 +30,7 @@ impl Div { ], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![], + doc: "elementwise quotient of two input series", }, |_| Box::new(Div::new()), ) diff --git a/crates/aura-std/src/ema.rs b/crates/aura-std/src/ema.rs index a112a86..f0a3770 100644 --- a/crates/aura-std/src/ema.rs +++ b/crates/aura-std/src/ema.rs @@ -63,6 +63,7 @@ impl Ema { inputs: vec![PortSpec { kind: ScalarKind::F64, firing: Firing::Any, name: "series".into() }], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![ParamSpec { name: "length".into(), kind: ScalarKind::I64 }], + doc: "exponential moving average over the input series", }, |p| Box::new(Ema::new(p[0].i64() as usize)), ) diff --git a/crates/aura-std/src/eqconst.rs b/crates/aura-std/src/eqconst.rs index d6a638d..e9ed44e 100644 --- a/crates/aura-std/src/eqconst.rs +++ b/crates/aura-std/src/eqconst.rs @@ -40,6 +40,7 @@ impl EqConst { inputs: vec![PortSpec { kind: ScalarKind::I64, firing: Firing::Any, name: "value".into() }], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::Bool }], params: vec![ParamSpec { name: "target".into(), kind: ScalarKind::I64 }], + doc: "true where the input equals a constant param", }, |p| Box::new(EqConst::new(p[0].i64())), ) diff --git a/crates/aura-std/src/gated_recorder.rs b/crates/aura-std/src/gated_recorder.rs index 943a799..92e2d96 100644 --- a/crates/aura-std/src/gated_recorder.rs +++ b/crates/aura-std/src/gated_recorder.rs @@ -41,7 +41,12 @@ impl GatedRecorder { let build_kinds = kinds.clone(); PrimitiveBuilder::new( "GatedRecorder", - NodeSchema { inputs, output: vec![], params: vec![] }, // sink: empty output (C8) + NodeSchema { + inputs, + output: vec![], + params: vec![], + doc: "recording sink that persists its input while the gate is true, plus a final row at finalize", + }, // sink: empty output (C8) move |_| Box::new(GatedRecorder::new(&build_kinds, gate_col, tx.clone())), ) } diff --git a/crates/aura-std/src/gt.rs b/crates/aura-std/src/gt.rs index de4fc1a..de0e2db 100644 --- a/crates/aura-std/src/gt.rs +++ b/crates/aura-std/src/gt.rs @@ -39,6 +39,7 @@ impl Gt { ], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::Bool }], params: vec![], + doc: "true where the first input exceeds the second", }, |_| Box::new(Gt::new()), ) diff --git a/crates/aura-std/src/latch.rs b/crates/aura-std/src/latch.rs index ad4747e..b9098e8 100644 --- a/crates/aura-std/src/latch.rs +++ b/crates/aura-std/src/latch.rs @@ -46,6 +46,7 @@ impl Latch { ], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![], + doc: "level-sensitive set/reset register holding 1.0 when latched, 0.0 when reset", }, |_| Box::new(Latch::new()), ) diff --git a/crates/aura-std/src/lincomb.rs b/crates/aura-std/src/lincomb.rs index 22e3884..b02c899 100644 --- a/crates/aura-std/src/lincomb.rs +++ b/crates/aura-std/src/lincomb.rs @@ -52,7 +52,12 @@ impl LinComb { .collect(); PrimitiveBuilder::new( "LinComb", - NodeSchema { inputs, output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params }, + NodeSchema { + inputs, + output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], + params, + doc: "linear combination of its inputs with constant weights", + }, |p| Box::new(LinComb::new( p.iter().map(|c| c.f64()).collect(), )), diff --git a/crates/aura-std/src/max.rs b/crates/aura-std/src/max.rs index 6f67ab5..1056d9b 100644 --- a/crates/aura-std/src/max.rs +++ b/crates/aura-std/src/max.rs @@ -26,6 +26,7 @@ impl Max { ], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![], + doc: "elementwise maximum of two input series", }, |_| Box::new(Max::new()), ) diff --git a/crates/aura-std/src/min.rs b/crates/aura-std/src/min.rs index e37ae19..2a3d9cc 100644 --- a/crates/aura-std/src/min.rs +++ b/crates/aura-std/src/min.rs @@ -27,6 +27,7 @@ impl Min { ], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![], + doc: "elementwise minimum of two input series", }, |_| Box::new(Min::new()), ) diff --git a/crates/aura-std/src/mul.rs b/crates/aura-std/src/mul.rs index cac49a2..137431b 100644 --- a/crates/aura-std/src/mul.rs +++ b/crates/aura-std/src/mul.rs @@ -24,6 +24,7 @@ impl Mul { ], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![], + doc: "elementwise product of two input series", }, |_| Box::new(Mul::new()), ) diff --git a/crates/aura-std/src/recorder.rs b/crates/aura-std/src/recorder.rs index 796b1c2..063bb8a 100644 --- a/crates/aura-std/src/recorder.rs +++ b/crates/aura-std/src/recorder.rs @@ -53,7 +53,12 @@ impl Recorder { let build_kinds = kinds.clone(); PrimitiveBuilder::new( "Recorder", - NodeSchema { inputs, output: vec![], params: vec![] }, // sink: empty output (C8) + NodeSchema { + inputs, + output: vec![], + params: vec![], + doc: "recording sink persisting its input series into the trace store", + }, // sink: empty output (C8) move |_| Box::new(Recorder::new(&build_kinds, firing, tx.clone())), ) } diff --git a/crates/aura-std/src/rolling_max.rs b/crates/aura-std/src/rolling_max.rs index 8149031..cc1af67 100644 --- a/crates/aura-std/src/rolling_max.rs +++ b/crates/aura-std/src/rolling_max.rs @@ -54,6 +54,7 @@ impl RollingMax { inputs: vec![PortSpec { kind: ScalarKind::F64, firing: Firing::Any, name: "series".into() }], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![ParamSpec { name: "length".into(), kind: ScalarKind::I64 }], + doc: "rolling maximum over a fixed lookback window", }, |p| Box::new(RollingMax::new(p[0].i64() as usize)), ) diff --git a/crates/aura-std/src/rolling_min.rs b/crates/aura-std/src/rolling_min.rs index 2ff15d5..4f7d705 100644 --- a/crates/aura-std/src/rolling_min.rs +++ b/crates/aura-std/src/rolling_min.rs @@ -43,6 +43,7 @@ impl RollingMin { inputs: vec![PortSpec { kind: ScalarKind::F64, firing: Firing::Any, name: "series".into() }], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![ParamSpec { name: "length".into(), kind: ScalarKind::I64 }], + doc: "rolling minimum over a fixed lookback window", }, |p| Box::new(RollingMin::new(p[0].i64() as usize)), ) diff --git a/crates/aura-std/src/scale.rs b/crates/aura-std/src/scale.rs index a1e4d66..d2aa90d 100644 --- a/crates/aura-std/src/scale.rs +++ b/crates/aura-std/src/scale.rs @@ -28,6 +28,7 @@ impl Scale { inputs: vec![PortSpec { kind: ScalarKind::F64, firing: Firing::Any, name: "signal".into() }], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![ParamSpec { name: "factor".into(), kind: ScalarKind::F64 }], + doc: "input multiplied by a constant factor param", }, |p| Box::new(Scale::new(p[0].f64())), ) diff --git a/crates/aura-std/src/select.rs b/crates/aura-std/src/select.rs index 81c7e41..1a09fca 100644 --- a/crates/aura-std/src/select.rs +++ b/crates/aura-std/src/select.rs @@ -38,6 +38,7 @@ impl Select { ], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![], + doc: "chooses between two inputs by a boolean selector", }, |_| Box::new(Select::new()), ) diff --git a/crates/aura-std/src/series_reducer.rs b/crates/aura-std/src/series_reducer.rs index 83099a8..fa7630a 100644 --- a/crates/aura-std/src/series_reducer.rs +++ b/crates/aura-std/src/series_reducer.rs @@ -26,6 +26,7 @@ impl SeriesReducer { inputs: vec![PortSpec { kind: ScalarKind::F64, firing, name: "col[0]".to_string() }], output: vec![], // sink: empty output (C8) params: vec![], + doc: "folds an input series into a single summary row emitted at finalize", }, move |_| Box::new(SeriesReducer::new(tx.clone())), ) diff --git a/crates/aura-std/src/sign.rs b/crates/aura-std/src/sign.rs index ca0a816..0cd1384 100644 --- a/crates/aura-std/src/sign.rs +++ b/crates/aura-std/src/sign.rs @@ -36,6 +36,7 @@ impl Sign { inputs: vec![PortSpec { kind: ScalarKind::F64, firing: Firing::Any, name: "value".into() }], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![], + doc: "sign of the input: -1, 0 or +1", }, |_| Box::new(Sign::new()), ) diff --git a/crates/aura-std/src/sma.rs b/crates/aura-std/src/sma.rs index 2e9c97d..d30c743 100644 --- a/crates/aura-std/src/sma.rs +++ b/crates/aura-std/src/sma.rs @@ -65,6 +65,7 @@ impl Sma { inputs: vec![PortSpec { kind: ScalarKind::F64, firing: Firing::Any, name: "series".into() }], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![ParamSpec { name: "length".into(), kind: ScalarKind::I64 }], + doc: "simple moving average over the input series", }, |p| Box::new(Sma::new(p[0].i64() as usize)), ) diff --git a/crates/aura-std/src/sqrt.rs b/crates/aura-std/src/sqrt.rs index bec11fd..9d819c5 100644 --- a/crates/aura-std/src/sqrt.rs +++ b/crates/aura-std/src/sqrt.rs @@ -23,6 +23,7 @@ impl Sqrt { inputs: vec![PortSpec { kind: ScalarKind::F64, firing: Firing::Any, name: "value".into() }], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![], + doc: "square root of the input series", }, |_| Box::new(Sqrt::new()), ) diff --git a/crates/aura-std/src/sub.rs b/crates/aura-std/src/sub.rs index 72254b6..4d651f9 100644 --- a/crates/aura-std/src/sub.rs +++ b/crates/aura-std/src/sub.rs @@ -29,6 +29,7 @@ impl Sub { ], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![], + doc: "elementwise difference of two input series", }, |_| Box::new(Sub::new()), ) diff --git a/crates/aura-std/src/when.rs b/crates/aura-std/src/when.rs index 6f3ca56..bb22c49 100644 --- a/crates/aura-std/src/when.rs +++ b/crates/aura-std/src/when.rs @@ -46,6 +46,7 @@ impl When { ], output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], params: vec![], + doc: "emits the input only on cycles where the condition input is true", }, |_| Box::new(When::new()), )