Value-empty LeafFactory declares no input/output interface pre-build (only params) #43
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?
A value-empty
LeafFactory(crates/aura-core/src/node.rs) declares only itsname, itsparams: Vec<ParamSpec>, and abuildclosure. It does notdeclare its input/output interface (
InputSpec/FieldSpec) — those existonly on the built
Node'sschema(), post-build. So nothing can read aleaf's declared inputs or outputs at the blueprint (pre-build, value-empty)
level.
Where it bites
composite signature
macd(fast:i64, slow:i64, signal:i64) -> (macd:f64, signal:f64, histogram:f64). Param types resolve fine (factory().params()ispre-build), but the output types (
:f64) do not —OutFieldcarries only{node, field, name}, and the producer leaf is a value-empty factory with nooutput schema pre-build. The render cycle therefore ships output names only
(
-> (macd, signal, histogram)); the typed arrow depends on this.fieldtests/milestone-construction-layer/mc_4_introspect_graph.rs: leafintrospection can only print
label + declared param count—inputs/output_fieldsare unavailable until the node is built, so a graph-as-datawalk of a blueprint cannot show a leaf's arity or field shape.
wired input slots from the interior edges (
Edge.to/.slot+ role targets),but not their kinds — same root cause.
Shape
Let the value-empty
LeafFactorydeclare its static interface — theInputSpecsand output
FieldSpecs it will build — alongside itsParamSpecs, soparam_space()-style pre-build reads can see inputs and outputs too. Most nodes'input/output shape is static (independent of the injected params), so this is a
declaration the factory can carry without building.
Relation
Adjacent to #36 (param declared twice): both are about the factory declaring its
full static interface once. #36 is the params half (dedup the double
declaration); this is the inputs/outputs half (declare them at all,
pre-build). A unified "factory declares its complete static schema" change could
subsume both — worth considering together when either is picked up.
Surfaced: #42 (mc_4 port) and the post-#41 render-redesign design discussion.