16.4 Inputs
An input is typed: {name: {type: 'text' | '<SpineLabel>', value}} — an email or meeting notes as text,
one entity of a spine ({type: 'CustomerAccount', value: 'acme.com'}) as an identity. Binding, against the
chosen plan’s steps and the goal:
- an input named after a parameter binds to it;
- otherwise a
textinput binds to the one parameter the plan reads intoai.fromText, and an identity ofLto the one parameter a step keys or canonicalizes on spineL; - two candidate parameters for one input is refused, naming both — and so are two inputs for one parameter, and a text or identity parameter no input binds. Name the input after the parameter to choose;
- any other parameter takes its declared default.
The compiled plan is one statement, so $email read by two steps is one parameter: binding counts names.

