docs: def participant(self):
          """
          True if the tasks roles meet the legion's constraints,
          False otherwise.
      """
          log = self._params.get('log', self._discard)
          context = self._context_build(pending=True)
          conf = self._config_pending
  
          if conf.get('control') == 'off':
              log.debug("Excluding task '%s' -- control is off", self._name)
              return False
  
          #  If role-set is None (but not the empty set)
          #  then role processing is inhibited.
          #
          active_roles = self._legion.get_roles()
          if active_roles is None:
              log.debug("Including task '%s' -- role processing is inhibited", self._name)
              return True
  
          #  If roles are present, at least one has to match the role-set.
          #  If none are present, the task is always included.
          #
          roles = self._get_list(conf.get('roles'), context=context)
  
          #  If a task has no roles listed, then it particpates
          #  in all roles:
          #
          if not roles:
              log.debug("Including task '%s' -- no explicit roles", self._name)
              return True
  
          for role in roles:
              if role in active_roles:
                  log.debug("Including task '%s' -- has role '%s'", self._name, role)
                  return True
          log.debug("Excluding task %r -- no role matches %s", self._name, active_roles)
          return False