Consume iterate inputs only on the first step
- Dominant language
- Python
- Stars
- 2.5k
- Forks
- 195
- Avg merge
- 6d 10h
- Merged PRs (30d)
- 17
Description
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.
Contributor guide
Research direction
Start by tracing iterate(), aiterate(), and the streaming iterate APIs, then compare how they pass inputs across the first and later steps. Use PR #908 as the existing implementation context and verify first-step halt-before, retries, and resumed failed positions; done means later steps receive empty inputs and the release notes call out the change.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100