--- id: MAN-10 family: GR-MAN level: core profiles: [storage-api] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/gr-man/man-10 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # MAN-10 — A declared input name wins over an internal node-keyed key *GR-MAN (Part I) · level: core · profiles: storage-api · added in 1.0* The two input shapes can collide on the same key. The declared manifest is the workflow's public face, so it decides. ## The rule > **Normative.** This is the rule. > > Where a launch payload key matches both a declared input name and the internal node-keyed pass-through shape, the declared name wins and the value is resolved through the manifest. ## What it means The launch-input manifest names inputs; the graph names nodes. Nothing stops the two namespaces from colliding — an author can perfectly well have a declared input called `shadow` and, separately, a node whose id is also `shadow`. Resolution has to pick one meaning for a payload key sent under that name, and it is not the obvious "whichever happens to match the node" answer: the manifest is checked first, and if it has an entry for the key, that entry wins outright. The node-keyed reading (MAN-12) is only ever tried for a key the manifest does not declare. The consequence is what makes the rule worth stating: a value sent under the colliding name is delivered to wherever the *manifest entry* points, which may be a different node and port entirely from the one sharing its name. ## Example The workflow declares one input, `shadow`, bound to node `target.1`'s `payload` port. A node in the graph happens to be named `shadow` too. ```json title="A value sent under the declared name" { "shadow": { "k": "v" } } ``` ```json title="Where the launch delivers it" { "target.1": { "payload": { "k": "v" } } } ``` The value lands on `target.1`, not on a node called `shadow` — the manifest entry decided the mapping before the node-keyed reading was ever tried. ## Related rules - Names: MAN-11, MAN-12 - Referenced by: MAN-11, MAN-12 --- 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.