A wait of less than five seconds (*) is implemented as a busy wait, that is to say the code just loops around eating up time. A wait of five seconds or more is implemented by scheduling a wake-up and exiting the piston. When the piston wakes up it fast forwards and continues from where it left off. So when you have waits of e.g. ten seconds in your piston you will see a new task being scheduled for ten seconds time and the piston exiting and a new one starting. You have to be aware of this as when it wakes up it is a new instance, so for example it will reinitialise variables.
(*) It can be less than five seconds if there would be less than ten seconds of execution time available after the wait.
I haven’t read your piston, but it looks like your log probably starts with a wake up after a ‘wait’, then shows another wake up after a ten second wait, where it looks like the piston runs to completion, and then shortly after that is triggered again by changes to the value of a global variable which only requires a brief execution of the piston.