I understand what you want to achieve: run programs back to back, and also allow for varying program run times (due to weather adjustment).
Regarding the extreme case I brought up “repeat every 1 minute, for 100 times, and the program takes 60 minutes to run” — I don’t expect the sprinkler controller to be able to handle unlimited cases like this — it has to cut off somewhere.
Understood. Of course I wouldn’t actually expect OpenSprinkler or any other controller to actually execute a nonsensical program like that. That’s why I mentioned limiting number of repeats or total run times. Speaking only for myself, I’d be happy with a simple limit of 4 repeats (to support the standard turf irrigation practice of splitting long runtimes into a multiple shorter runtimes to help mitigate runoff). Hopefully that would provide a very reasonable upper bound on the number of stations that could possibly ever get queued up.
Thank you for taking the time to understand the issue I was trying to describe, the detailed explanation, and for thinking about a way to solve it.