Identity should survive the write
A Data Table node can return the saved row instead of the payload that entered it. The Velvet Paradox restores concept and job fields after those writes, keeping subsequent status requests and terminal updates attached to the same render request. Those identifiers should stay fixed while status and attempt count change.
The counter belongs to the current pass
Normalize Poll Response reads from Initialize Poll State. Later in the loop, another node increments the counter, writes running state and returns through wait and poll. The next normalization reads the initialization item again, so the incremented value is at risk of being replaced by its starting value.
The two kinds of state need different sources: initialization can supply stable identity, while the current iteration supplies progress. I'd test that distinction with a provider stub that always returns pending, capture every attempt and assert one terminal update when the configured limit is reached.
Keep the stopping point visible
The completion branch rejects a result without image URLs and emits one candidate per image when they exist. Provider failure and polling timeout use separate job updates. Maintenance also finds stale work, so a request's outcome can retain more detail than an empty result.
Those branches are present in the export. The unresolved check is whether the normal loop advances into its terminal path as intended. No provider call or polling execution was performed for this note.
Initial context versus evolving poll state
The normalizer reloads the initialization snapshot inside a loop whose counter should advance.
Stable identity
Polling loop
Durable state
Scroll or drag the background to move. Use the zoom buttons to resize.Arrow keys move between components. Enter selects.
Choose a component to explore
Select a numbered component on the map or use the component menu. Its details and connections will appear here.
No component selected.
All connections (11)
- 01 · Initialize poll state → 02 · Wait intervalStart polling · Direct call
- 02 · Wait interval → 03 · Provider status requestPoll · Direct call
- 03 · Provider status request → 04 · Normalize responseStatus response · Response / return
- 01 · Initialize poll state → 04 · Normalize responseReload initial snapshot · Direct call
- 04 · Normalize response → 06 · Completion and failure gatesNormalized status · Direct call
- 06 · Completion and failure gates → 08 · Terminal job recordCompleted / failed · Direct call
- 06 · Completion and failure gates → 05 · Advance attemptsStill pending · Direct call
- 05 · Advance attempts → 09 · Attempt-limit gateUpdated attempts · Direct call
- 09 · Attempt-limit gate → 08 · Terminal job recordLimit reached · Blocked / denied
- 09 · Attempt-limit gate → 07 · Running job recordContinue polling · Direct call
- 07 · Running job record → 02 · Wait intervalNext iteration · Response / return