anchor.diff:                  job = Job#pushy_job{job_nodes = undefined},
                   job_nodes = JobNodes
               },
  -            % If there are no nodes, the job finishes immediately.
  -            case dict:size(JobNodes) of
  -                0 ->
  -                    {next_state, complete, State2} = finish_job(complete, State),
  -                    {ok, complete, State2};
  -                _ ->
  -                    listen_for_down_nodes(dict:fetch_keys(JobNodes)),
  -                    start_voting(State)
  -            end;
  +            listen_for_down_nodes(dict:fetch_keys(JobNodes)),
  +
  +            % Start voting--if there are no nodes, the job finishes immediately.
  +            start_voting(State);
           false ->
               {stop, shutdown, undefined}
       end.
  
positive.code:     end, JobNodes),
      State#state{job_nodes = JobNodes2}.
  
  maybe_finished_running(State) ->
      case count_nodes_in_state([ready, running], State) of
          0 -> finish_job(complete, State);
  
negative.code:             new -> OldNodeState#pushy_job_node{status = faulty};
              ready -> OldNodeState#pushy_job_node{status = faulty};
              running -> OldNodeState#pushy_job_node{status = aborted}; % TODO better status?
              % Once a node has reached a terminal state, we don't change its status
              _ -> OldNodeState
          end
      end, JobNodes),
  