I like it, especially if the program is not run each day, so skipping a run could let things get too dry before the next scheduling.
I would say that the ‘rain reduce’ feature should simply add up recent (since last watering) and forecast rain and reduce the watering amount by the amount of rainfall. That would require a reasonable nozzle precipitation rate for Rachio to calculate how long to shorten the run time. (e.g. 1.5 in/hr nozzle precip rate, 0.15 rainfall, equals 6 min of run time reduction). The program could be skipped if the run time is reduced to 0 minutes.
If forecast rain is used, then the difference between forecast and actual rain should be used for the next time the program runs to avoid double counting.