code: func (mtask *managedTask) handleDesiredStatusChange(desiredStatus apitaskstatus.TaskStatus, seqnum int64) {
  	// Handle acs message changes this task's desired status to whatever
  	// acs says it should be if it is compatible
  	seelog.Debugf("Managed task [%s]: new acs transition to: %s; sequence number: %d; task stop sequence number: %d",
  		mtask.Arn, desiredStatus.String(), seqnum, mtask.StopSequenceNumber)
  	if desiredStatus <= mtask.GetDesiredStatus() {
  		seelog.Debugf("Managed task [%s]: redundant task transition from [%s] to [%s], ignoring",
  			mtask.Arn, mtask.GetDesiredStatus().String(), desiredStatus.String())
  		return
  	}
  	if desiredStatus == apitaskstatus.TaskStopped && seqnum != 0 && mtask.GetStopSequenceNumber() == 0 {
  		seelog.Debugf("Managed task [%s]: task moving to stopped, adding to stopgroup with sequence number: %d",
  			mtask.Arn, seqnum)
  		mtask.SetStopSequenceNumber(seqnum)
  		mtask.taskStopWG.Add(seqnum, 1)
  	}
  	mtask.SetDesiredStatus(desiredStatus)
  	mtask.UpdateDesiredStatus()
  }
docs: // handleDesiredStatusChange updates the desired status on the task. Updates
  // only occur if the new desired status is "compatible" (farther along than the
  // current desired state); "redundant" (less-than or equal desired states) are
  // ignored and dropped.