The idle state is really only defined in the source. We talked a bit about how it interrupts at one of the meetings because it's pretty confusing, but it works like this:
The simulation operates in ticks. Each tick will process logic for your tank according to what's on the queue and what state your tank is in. If your tank is done with a command (a move command or shot command for example) it returns to the idle state for the next tick. Once it's idle, it will re-run the think function in your brain to give you a chance to interrupt any potentially bad commands. So, I added a forget() function to help you clear them out.
Let me know if any of this is confusing - this is the weakest part of BrainTanks IMO.