I do grab all the output the Elk sends. There are some codes that I don't do anything with. If you're familiar with the Elk RS232 spec you can take a look at which ones are getting processed. If you look at the contents of the plugin there's a function called dispatchMsg in the plugin.py file that'll show which ones get processed. In elk.py and elkextra.py are functions to handle the messages.
Things getting stuck in the violated state could be a case of missing a message. I haven't really figured out the multi-threading in python so it's possible that a message could be getting processed when another comes in. In that case the second one could possibly not get processed. I haven't seen zones get stuck on my system, but I only have 7 of them. If you have a lot that change states frequently that could be what's going on.
~JC