The documented semantics say that inputs are provided to the entry action for a run, but iterate(), aiterate(), and streaming iterate APIs currently pass the same input dictionary to every step.
This can cause later actions to receive unintended entry parameters, allow same-named parameters to alter later behavior, and make sync, async, and streaming execution harder to reason about.
Inputs should be consumed by the first executed step only. Subsequent steps should receive an empty input dictionary, while preserving inputs for first-step halt-before, first-step failure retries, and resumed failed positions.
This issue is tracked by PR #908 and should be called out in the release notes.
The documented semantics say that inputs are provided to the entry action for a run, but iterate(), aiterate(), and streaming iterate APIs currently pass the same input dictionary to every step.
This can cause later actions to receive unintended entry parameters, allow same-named parameters to alter later behavior, and make sync, async, and streaming execution harder to reason about.
Inputs should be consumed by the first executed step only. Subsequent steps should receive an empty input dictionary, while preserving inputs for first-step halt-before, first-step failure retries, and resumed failed positions.
This issue is tracked by PR #908 and should be called out in the release notes.