An undeclared launch key is refused, and its value never delivered
Silently ignoring an input a caller believed in is the worst of the options: the run proceeds with the caller's intent missing and nothing said.
The rule
- A launch key that is not a declared input name is refused, and the refusal names the offending key and the workflow.
- The value is never written into the resolved initial data, whether the key was refused or merely reported.
What it means
Naming the offending key and the workflow in the refusal is the easy half of this rule. The half worth stating on its own is the second sentence: the value never reaches the resolved initial data, and that holds regardless of how the key was handled. An implementation is free to choose how loudly it objects to an unrecognised key — refuse the whole request outright, or merely log it and carry on — but "carry on" must never mean "and pass the value through anyway." A caller cannot smuggle an undeclared key past the check by relying on a tolerant mode to let the value slip in unremarked; tolerant only ever means the key is dropped more quietly, never that it is honoured.
Example
{ "nmae": "typo" }The refusal names both the offending key and the workflow it was refused by. Where an implementation instead only logs and continues, the resolved result for that same body is empty — the key contributes nothing either way.