As best I can tell testing various start up methods (power loss, switching to stop then back to run, runtime edit of program), $ST0 and the task first scan don't trigger/happen after a runtime edit, only power cycle or stop/run cycle. I couldn't get the ST193 idea to work with either a delta contact or a leading and trailing edge contact in parallel to create a "Program changed" pulse for some reason, the condition definitely changes everytime it's programmed, but it never prevented the problem. So I just used a burner bit that I make sure is always on, and if it triggers a rising edge in the top of scan because I'm updating a PLC in runtime and the oneshot fires because its edge bit gets remapped, then I pulse the "program changed" bit on for one scan. Thanks for the ideas!