Basics

A plan is a generator that yields messages:

def plan():
    yield Msg('open_run')
    yield Msg('close_run')