I think what was non-intuitive for me was the interaction of edge-sensitivity when placing edge-triggered instructions in non-continuous code-blocks. That's why I was saying "programs"; trying to figure out how an edge triggered instruction would work when inside a non-$Main block and what method was appropriate for generating edges in that context.
Another key distinction between tasks and programs, and no doubt a driving force behind you arriving at the proper use of each. Programs are continuous when running, so edge behavior is just like $Main...which is in fact just a program that we start automatically and don't let terminate. Tasks and edges can work too, but tasks don't have to be continuous and can cause all manner of confusion when they are not. This is why the program check will warn you in certain cases.
Do-more definitely has a learning curve when you wish to venture beyond basic ladders in $Main, but as I think you have found, the rules do make reasonable sense once you understand what is going on and why. And the payback is well worth the effort to learn, which I think you have also discovered.

I'll admit it, I'm pretty smitten with this controller, and I guess am pretty insufferable as a product papa. But I can tell you this is waaay more fun than constantly making excuses for a bad product.
