**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/www/views.py
"""Returns formatted dag_runs for Tree View"""
        dates = sorted(dag_runs.keys())
        min_date = min(dag_runs, default=None)
        task_instances = {
            (ti.task_id, ti.execution_date): ti
            for ti in dag.get_task_instances(start_date=min_date, end_date=base_date)
        }
        expanded = set()
        
        
        
        node_count = 0
        node_limit = 5000 / max(1, len(dag.leaves))
        def encode_ti(task_instance: Optional[models.TaskInstance]) -> Optional[List]: