--- id: DYN-5 family: GR-DYN level: extended profiles: [runtime] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/gr-dyn/dyn-5 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # DYN-5 — A declared parameter wins a name collision with a dynamic port *GR-DYN (Part I) · level: extended · profiles: runtime · added in 1.0* ## The rule > **Normative.** This is the rule. > > 1. Where a dynamic port's name is also the name of a parameter the node's processor declares, the declared parameter wins and the dynamic port is ignored. > > 2. An author cannot shadow a declared parameter by adding a dynamic port of the same name. ## What it means A node instance can name a dynamic port whatever it likes, so nothing stops an author choosing a name the node's processor already declares as its own parameter. Where that happens the two do not blend and neither takes turns: the declared parameter's own resolution — its wiring, its default — is what the node receives, and a value arriving for the same name over the dynamic channel is discarded outright, never held as a fallback. ## Example A node instance declares a dynamic port named `static_param`, the same name the node's processor already declares as its own parameter, and a value arrives for that name over the dynamic channel: ```json title="The value delivered over the dynamic channel for static_param" verdict="ignored" "smuggled_must_lose" ``` ```json title="What the declared parameter resolves to instead" verdict="default" { "value": "static_default", "source": "default" } ``` --- Rule identifiers are permanent and are never renumbered. This specification carries no implementation status: each implementation publishes its own standing against these rules. Licensed CC BY 4.0.