In reply to Rocketfingers:
For the fail:
(start, set_started(1)) |=> (stop[->1] or done[->1])
and ( !start[*0:$])
The use of the “always” instead of the function would work in this case.
The use of the function and sequence match item calls the function only the attempted assertions; thus it is linked to that one attempt only. In most cases that is important.