### Body

Currently `start_date` is mandatory parameter.
For DAGs with `schedule=None` we can relax this requirement as no scheduling calculation needed so the `start_date` parameter isn't used.

### Committer

- [X] I acknowledge that I am a maintainer/committer of the Apache Airflow project.
DagContext.pop_context_managed_dag()
    
    @staticmethod
    def _upgrade_outdated_dag_access_control(access_control=None):
        """
        Look for outdated dag level actions in DAG access_controls and replace them with updated actions.
        For example, in DAG access_control {'role1': {'can_dag_read'}} 'can_dag_read'
        will be replaced with 'can_read', in {'role2': {'can_dag_read', 'can_dag_edit'}}
        'can_dag_edit' will be replaced with 'can_edit', etc.
        """
        if access_control is None:
            return None
        new_perm_mapping = {
            permissions.DEPRECATED_ACTION_CAN_DAG_READ: permissions.ACTION_CAN_READ,
            permissions.DEPRECATED_ACTION_CAN_DAG_EDIT: permissions.ACTION_CAN_EDIT,
        }
        updated_access_control = {}
        for role, perms in access_control.items():
            updated_access_control[role] = {new_perm_mapping.get(perm, perm) for perm in perms}
        if access_control != updated_access_control:
            warnings.warn(
                "The 'can_dag_read' and 'can_dag_edit' permissions are deprecated. "
                "Please use 'can_read' and 'can_edit', respectively.",
                RemovedInAirflow3Warning,
                stacklevel=3,
            )
        return updated_access_control
    def date_range(