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
True if the tasks roles meet the legion's constraints,
        False otherwise.