Interesting. I had to study this one for a few minutes to figure it out, but I think I may know what is going on.
Programs, Tasks, and Stages all execute special logic on the scan following their completion. We call this 'termination'. Stage 1 gets the .Done indication and immediately jumps to Stage 2, which then re-arms the task to run. It appears that the termination logic is not running for the task prior to running the task a second time. One of the things that termination logic takes care of is edge states for edge triggered instructions. I reversed the order of stage execution, to execute the bottom stage first and then jump to the prior stage...which gives the termination a chance to run by inserting an extra scan between Stage 2 running the task and Stage 1 running it the second time...and it worked fine.
Truthfully? It sounds like a bug. I gotta scratch my head to see what it will take to fix it, but it may be pretty simple.