···191191 }
192192 defer eng.DestroyWorkflow(ctx, wid)
193193194194- for stepIdx, step := range w.Steps {
194194+ // discovery can append build steps while the loop runs, so index
195195+ // live instead of ranging a snapshot of w.Steps
196196+ for stepIdx := 0; stepIdx < len(w.Steps); stepIdx++ {
197197+ step := w.Steps[stepIdx]
195198 if wfLogger != nil {
196199 wfLogger.
197200 ControlWriter(stepIdx, step, models.StepStatusStart).