Although we can mix boolean and status logic I think that, for an introductory tutorial, this is perhaps too much.
Relatedly the role of guard conditions in writing robust tasks should be emphasized, and this ought to be explained in P.2
Since P.2 looks too long, perhaps extend, then break it down.