temporalio / temporalio/temporal-worker-controller
[Feature Request] Gate per step of a progressive rollout
@zainawaisn is already working on this.
Since Sep 17, 2026.
- Dominant language
- Go
- Stars
- 187
- Forks
- 70
- Avg merge
- 4d 1h
- Merged PRs (30d)
- 31
Description
Is your feature request related to a problem? Please describe.
item 1 and 2 of Feature Request #365.
Describe the solution you'd like
Gate per step of a progressive rollout, not just at the start. The current gate feature only runs once, before any workflows have been ramped to the new build. I'm imagining a rollout.steps[*].gate field, structured similar to rollout.gate. A step completes when its ramp percentage, pause duration, and gate (if present) have all completed (successfully). I think the simplest semantics are for the ramp change, pause timer, and gate to begin simultaneously; to gate on a stable system, multiple steps can be used.
A failed gate should rollback, not pause. The if wf.Status != WorkflowExecutionStatusCompleted: return nil check means that the pods stay up until human intervention. Currently the pods are not ramped and receive no workflows, but combined with item (1), this would mean the partially ramped build continues to serve a percentage of traffic. The feature request is for a failed gate to cause the new ramping deployment to immediately drain (work in-flight completes). This can be the default for step gates, or configurable.
Additional context
Potential representation of rollout.steps[*].gate on the spec.
rollout:
strategy: Progressive
gate: # existing: pre-flight, before any traffic
workflowType: SmokeTest
steps:
- rampPercentage: 5
pauseDuration: 5m
- rampPercentage: 20
pauseDuration: 20m
gate: # new: runs while serving 20%
workflowType: ErrorRateCheck
input: {"threshold": 0.02}
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.