audit: cycle 0008 tidy — correct LinComb param-claim wording

Architect drift review (fa2835e..HEAD) at cycle close. Regression gate is a
no-op (commands.regression empty); architect is the sole gate.

What holds (no drift): purely additive C16 extension, one node per file, no
engine/manifest change; C2/C8 warm-up discipline correct (None until every leg
present, no implicit cold-leg 0.0); C7 zero per-cycle alloc. Shipping the named
convenience nodes Add (and pre-existing Sub) beside the general LinComb is NOT
C9 adapter-zoo drift — they are distinct named producers, not coercion shims,
mirroring the already-shipped Sub.

Fixed [ledger-gap/high]: lincomb.rs rustdoc and the feat commit body called the
weights "the node's tunable parameters (C8/C12)", but aura_core/src/node.rs
states tunable params (C12/C19) are deliberately not part of the schema yet
(spec 0002 "Out of scope"). The weights are construction parameters that
configure the node and fix its arity (C11) — the natural home for combination
tuning params once the schema-level param surface lands, but not yet surfaced to
any optimizer. Rustdoc reworded to say exactly that. No ledger change: the C8
text vs node.rs tension pre-exists this cycle and is already documented in
node.rs; only the new rustdoc over-claimed.

Carry-on [drift/high]: the cycle-0007 fieldtest still imports Sub-only and keeps
its hand-authored Add2 (acceptance said the fieldtest *can* drop it). The 0007
fieldtest crate is a historical snapshot of what that run did; rewriting it
retroactively would falsify why Add2 existed. The structural drop-in feasibility
(the acceptance content) is confirmed by the architect (add.rs == sub.rs modulo
operator; LinComb([1,1]) == Add; Add2 byte-identical to Add). End-to-end
demonstration belongs to a cycle-0008 fieldtest (fresh example on the shipped
node), dispatched next — not a retroactive edit of the 0007 record.

Gates: cargo test -p aura-std 14 passed / 0 failed; clippy --all-targets
-D warnings clean; RUSTDOCFLAGS="-D warnings" cargo doc -p aura-std clean.
This commit is contained in:
2026-06-04 18:13:54 +02:00
parent 84130c2cab
commit 45920faa8f
+9 -4
View File
@@ -1,13 +1,18 @@
//! `LinComb` — weighted sum of `N` f64 inputs (`Σ weights[i] · input[i]`), the
//! general combinator for the north-star "combine signals with weights" move
//! (C10). `LinComb([1.0, 1.0])` is `Add`; `LinComb([1.0, -1.0])` is `Sub`. The
//! weights are the node's tunable parameters (C8/C12) and fix its arity.
//! weights are construction parameters that configure the node and fix its
//! arity (`weights.len()` inputs) — the natural home for the combination tuning
//! params, though the schema-level tunable-param surface (C12/C19) is not yet
//! implemented: the node contract deliberately keeps params out of the schema
//! for now (see aura_core's node contract and spec 0002's "Out of scope").
use aura_core::{Ctx, FieldSpec, Firing, InputSpec, Node, NodeSchema, Scalar, ScalarKind};
/// Weighted sum of `N` f64 inputs: `Σ weights[i] · input[i]`. The `weights`
/// are the node's tunable parameters and fix its arity (`weights.len()` inputs,
/// in slot order). Emits `None` until *all* inputs have a value.
/// Weighted sum of `N` f64 inputs: `Σ weights[i] · input[i]`. The `weights` are
/// construction parameters that configure the node and fix its arity
/// (`weights.len()` inputs, in slot order). Emits `None` until *all* inputs
/// have a value.
pub struct LinComb {
weights: Vec<f64>,
out: [Scalar; 1],