**Description**

For a DAG that looks like this:

```
A >> B
```

If A fails, B goes into "upstream_failed" state. If a user then marks A "success", B will remain in "upstream_failed" state. It will not automatically start running. This scenario often happens if the failure of A is dealt with outside of Airflow and the user does not want Airflow to run A again. But he usually expect Airflow to run B after A is marked "success".

**Use case / motivation**

After A is marked "success", its downstream tasks B should be cleared automatically and get ready to be scheduled. To avoid changing this behaviour completely, there can be a toggle button next to "Success" that lets the user decide if he wants Airflow to automatically clear downstream tasks that are in "upstream_failed" state.
airflow/models/dag.py
self._concurrency = value
    @property
    def access_control(self):
        return self._access_control
    @access_control.setter
    def access_control(self, value):
        self._access_control = DAG._upgrade_outdated_dag_access_control(value)
    @property
    def description(self) -> Optional[str]:
        return self._description
    @property
    def default_view(self) -> str:
        return self._default_view
    @property
    def pickle_id(self) -> Optional[int]:
        return self._pickle_id
    @pickle_id.setter
    def pickle_id(self, value: int) -> None:
        self._pickle_id = value
    def param(self, name: str, default=None) -> DagParam:
        """
        Return a DagParam object for current dag.
        :param name: dag parameter name.
        :param default: fallback value for dag parameter.
        :return: DagParam instance for specified name and current dag.
        """
        return DagParam(current_dag=self, name=name, default=default)
    @property
    def tasks(self) -> List[BaseOperator]: