Any reason why we can't just put this logic in `matrix_finished?`.

One thing that might be better, although it has a naming issue as well: move the `finished? || allow_failure?` condition to the job. We could just change `Job::Test#finished?` to this:

``` Ruby
def finished?
  config[:fast_finish] && allow_failure? || FINISHED_STATES.include?(state.to_sym)
end
```

Although, that may break other parts of our code depending on the job actually being finished. So maybe a better thing would be making a new method on `Job::Test` that does `config[:fast_finish] && allow_failure? || finished?`. Maybe `waiting_for_result?`.