Task cancellation policy is normally used for things that take a long time to execute that you don’t want interrupted. A good example would be:
IF
Switch X or Switch Y changes to ON
THEN
Turn light Y ON
Wait 10 seconds
Turn light Y OFF
The above example would subscribe to changes to Switches X and Y, meaning the piston would execute in full every time Switch X or Y reports a change in their switch position. If either changed to OFF, even though the condition states ON, the piston would still run in its entirety. The only difference when compared to one of the switches turn on would be your IF condition would evaluate false… and that’s the key to your TCP question, because there was just a change in condition.
Be default, tasks are cancelled if there is a change in condition. In the example above, if the piston ran because Switch X turned on, it would turn on Light Y and then set itself to wake up in 10 seconds to turn the light off. If Switch Y turned off during that 10 second wait, it would cause the piston to run, the condition would evaluate false now, and the piston would therefore cancel your pending task wake up and to turn the light off 10 seconds after it was turned on.
In your example, since you’re dealing with very short on durations, unless you’re sensitive to the .1s delay I would set the piston to trigger on “changes to off”. Since ‘off’ is the steady state, when it changes to off you have confidence it still be off when the piston runs and your condition will evaluate true reliably.