Problem
Currently, compile_dag only validates that params is a JSON object for audio::mixer nodes (added in #514). Every other node kind silently accepts non-object params at compile time, which then fails later at node-factory parse time.
Other parts of the codebase (e.g. client_lint.rs) also assume params is an object and call params.get(...) unconditionally.
Proposed Fix
Add a general validation in compile_dag that rejects params: Some(v) where v is not an object for all node kinds, rather than accreting per-kind special cases. If any node kind legitimately uses scalar params, maintain a small allow-list.
Context
Tracked from review feedback on #514.
Problem
Currently,
compile_dagonly validates thatparamsis a JSON object foraudio::mixernodes (added in #514). Every other node kind silently accepts non-object params at compile time, which then fails later at node-factory parse time.Other parts of the codebase (e.g.
client_lint.rs) also assumeparamsis an object and callparams.get(...)unconditionally.Proposed Fix
Add a general validation in
compile_dagthat rejectsparams: Some(v)wherevis not an object for all node kinds, rather than accreting per-kind special cases. If any node kind legitimately uses scalar params, maintain a small allow-list.Context
Tracked from review feedback on #514.