Ok, I figured it out... Firstly what I stated isn't entirely correct. The LiftRules.ajaxEnd function DOES get called, but not until after the popup warning. So it seems everything is in place, but something is causing us to believe there is a failure.
...and it was my JS fu that was the problem. In development mode, Lift quickly prints out to the console that my JS didn't work. (I was attempting to set an input text box to blank, and didn't pay close enough attention to realize that was failing). Once in production mode, Lift figures that it is a communication error with the server. Running in prod mode locally produces the same behavior.
Lesson learned: Don't be too hasty whipping up example Lift projects.
Joe