I have found (with browser forms), that on_changed events can get generated (with the data at the time that the event was kicked off), but the event does not actually run until later e.g. a button click. I think your code may be conflicting with the rule execution.
As a result of the above, my conclusion is that the safe ...