Relationships
#4186 A resume runs settled work after the teardown gated on it has already run, and nothing tears that work down
Opened by zack · 10/30/2026
Raised by the adversarial review of #4175. Traced in the code, not reproduced.
Workflow: j1, then next gated succeeded on j1, then teardown gated always on next. The abort fires during j1, which goes on to succeed.
- next is work, so it is settled as cancelled with settledByAbort.
- teardown is a cleanup job, so it runs and succeeds, removing what j1 created.
- After workflow recover and a resume, reopenAbortedWork resets next but not teardown.
- next runs against the torn-down state, teardown is already succeeded and is not walked, and the run can end succeeded with whatever next created left behind.
Before #4175 both jobs stayed unstarted until the cancel settled them, so a resume ran them in order. The same holds at step level since #4149, whose known gaps list it, and design/primitives/workflows.md says cleanup that already ran is not run again.
Decision needed: reopen a cleanup job or step that transitively depends on reopened work, so it runs again after that work, or keep at-most-once teardown and have the design doc state that a resume can run work after its teardown.
Open
No activity in this phase yet.
Sign in to post a ripple.