code: def build_removals(active_jobs, failures, target):
      
      # Determine the number of failures we're going to process
      # A failure is a revision + all of the jobs that were fixed by it
      number_of_failures = int((target / 100) * len(failures))
      low_value_jobs = []
  
      for jobtype in active_jobs:
          # Determine if removing an active job will reduce the number of failures we would catch
          # or stay the same
          remaining_failures = check_removal(failures, [jobtype])
  
          if len(remaining_failures) >= number_of_failures:
              low_value_jobs.append(jobtype)
              failures = remaining_failures
          else:
              failed_revisions = []
              for revision in failures:
                  if revision not in remaining_failures:
                      failed_revisions.append(revision)
  
              logger.info("jobtype: %s is the root failure(s) of these %s revisions",
                          jobtype, failed_revisions)
  
      return low_value_jobs
docs: active_jobs - all possible desktop & android jobs on Treeherder (no PGO)
      failures - list of all failures
      target - percentage of failures we're going to process
  
      Return list of jobs to remove and list of revisions that are regressed