Param declared twice per node: factory().params() and schema().params must stay in lockstep #36
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of milestone "The World — parameter-space & sweep". Filed at the cycle-B (#31) audit as debt, not active drift. refs #31.
After cycle 0016, every param-bearing node declares its
ParamSpecs in two places that must stay in lockstep:factory()(e.g.crates/aura-std/src/sma.rs) — the param-generic recipe, read pre-build byBlueprint::param_space().schema()on the built node — still reports the same slots (read post-build, e.g. by theparam_space↔compile mirror tests).The two are kept in agreement only by a per-node unit test (
factory_params_match_built_node_schemain each ofsma/exposure/lincomb/recorder/... ). A param added to one and not the other compiles — the drift surfaces only if the test is present and exercised for that node, and a newly-added node could omit the test entirely.Direction (none chosen): make one the single source — e.g. the built node's
schema().paramsis derived from the factory's declaredparams, or a node declares its params once in a shared place both read. Closing the gap removes the per-node lockstep test and the silent-drift class.context: not blocking — the agreement holds today and is tested per node; this is a structural duplication that wants a single source before the node roster grows. A sibling of the #34 traversal-duplication concern.
Resolved in
1b39093(cycle 0024): NodeSchema is now declared once on PrimitiveBuilder and the built node no longer re-declares it — the 8 per-node factory_params_match_built_node_schema lockstep tests are deleted, so the params-declared-twice drift is structurally impossible. Auto-close missed this on push (Gitea parses only the first id after a 'closes' keyword).