code: func (p *Pipeline) Explain() string {
  	var explanation string
  
  	// Sort from most failures to least
  
  	sortedByFailures := make([]checklistEntry, len(p.checklist))
  	copy(sortedByFailures, p.checklist)
  	sort.Sort(sort.Reverse(checklistByFailures(sortedByFailures)))
  
  	for _, entry := range sortedByFailures {
  		if entry.failureCount > 0 {
  			if len(explanation) > 0 {
  				explanation += "; "
  			}
  			explanation += entry.f.Explain(entry.failureCount)
  		}
  	}
  
  	return explanation
  }
docs: // Explain returns a string explaining why a task could not be scheduled.