| Index: recipe_engine/autoroll_impl/candidate_algorithm.py
 | 
| diff --git a/recipe_engine/autoroll_impl/candidate_algorithm.py b/recipe_engine/autoroll_impl/candidate_algorithm.py
 | 
| index a6aead4bf056486b503c92b1d9f64baded3008b5..847f950826cc3f7d8a54e173f6b6ed95c1b9e9fd 100644
 | 
| --- a/recipe_engine/autoroll_impl/candidate_algorithm.py
 | 
| +++ b/recipe_engine/autoroll_impl/candidate_algorithm.py
 | 
| @@ -31,8 +31,13 @@ def get_commitlists(deps):
 | 
|  def find_best_rev(repos):
 | 
|    """Returns the project_id of the best repo to roll.
 | 
|  
 | 
| -  "Best" is determined by "moves the least amount of commits, globally". There
 | 
| -  are two ways that rolling a repo can move commits:
 | 
| +  "Best" is determined by "is an interesting commit and moves the least amount
 | 
| +  of commits, globally".
 | 
| +
 | 
| +  "Interesting" means "the commit modifies one or more recipe related files",
 | 
| +  and is defined by CommitMetadata.roll_candidate.
 | 
| +
 | 
| +  There are two ways that rolling a repo can move commits:
 | 
|  
 | 
|      1) As dependencies. Rolling repo A that depends on (B, C) will take
 | 
|         a penalty for each commit that B and C need to move in order to be
 | 
| @@ -77,13 +82,12 @@ def find_best_rev(repos):
 | 
|  
 | 
|    for project_id, clist in repos.iteritems():
 | 
|      assert isinstance(clist, CommitList)
 | 
| -    candidate = clist.next
 | 
| +    candidate, movement_score = clist.next_roll_candidate
 | 
|      if not candidate:
 | 
|        continue
 | 
|  
 | 
|      unaccounted_repos = set(repo_set)
 | 
|  
 | 
| -    movement_score = 0
 | 
|      # first, determine if rolling this repo will force other repos to move.
 | 
|      for d_pid, dep in candidate.spec.deps.iteritems():
 | 
|        unaccounted_repos.discard(d_pid)
 | 
| @@ -204,4 +208,5 @@ def get_roll_candidates(context, package_spec):
 | 
|  
 | 
|    print('found %d/%d good/bad candidates in %0.2f seconds' % (
 | 
|      len(ret_good), len(ret_bad), time.time()-start))
 | 
| +  sys.stdout.flush()
 | 
|    return ret_good, ret_bad, repos
 | 
| 
 |