From 45920faa8f59dd8a9b74d0b533b2712e9e52f9b1 Mon Sep 17 00:00:00 2001 From: Brummel Date: Thu, 4 Jun 2026 18:13:54 +0200 Subject: [PATCH] =?UTF-8?q?audit:=20cycle=200008=20tidy=20=E2=80=94=20corr?= =?UTF-8?q?ect=20LinComb=20param-claim=20wording?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- crates/aura-std/src/lincomb.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/crates/aura-std/src/lincomb.rs b/crates/aura-std/src/lincomb.rs index 6d4849f..8134016 100644 --- a/crates/aura-std/src/lincomb.rs +++ b/crates/aura-std/src/lincomb.rs @@ -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, out: [Scalar; 1],