One more piece of the puzzle...at the end of my script, if I remove the GPIO.cleanup(), then the light stays on.
But, in subsequent calls to my script, I receive a warning that the channel is already in use. It doesn't stop the code, but the programmer in me doesn't like warnings.
My question now is why does the cleanup function change the output of the GPIO pins?