The message is a little confusing.
When free delay is detected, it actually sets a rain delay on the controller.
When the last schedule was going to run, the system detected there was already a rain delay (actually a freeze delay) in place and skipped it but reported the technically wrong reason. I’m assuming if the previous delay wasn’t in place, it would have been skipped due to a freeze delay.
This process is being cleaned up for next year where each schedule will be autonomous and not affected by these global delays. We will also be able to notify you much much sooner (24 hours?) as to the decisions the system will we taking.