'Is build completed, without top level failures or failing commands'

@property
def successful(self):

    return (self.done and (self.failure is None) and all((cmd.successful for cmd in self.commands)))
