@startuml

Participant Input as i
Participant Thread as t
Participant Action as a

== acquire input data ==

group TIMER read-input
 t -> i : get segment(stride)
 activate i
 t <- i : <cycle segment>[stride]
 deactivate i
end

group TIMER strides

 loop over cycle values in segment
  group TIMER cycle
   group TIMER phase
    t -> a : runCycle(cycle)
    activate a
    t <- a : result
    deactivate a
   end

== additional phases ==

group TIMER phase
 loop until phases complete
 t -> a : runPhase(cycle)
 activate a
 t <- a : result
 deactivate a
end
end
end
end

end # strides

@enduml