### 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.
self.log.debug("Adding Streamhandler to taskinstance %s", ti.task_id)
                ti.log.addHandler(handler)
        exit_stack = ExitStack()
        if conn_file_path or variable_file_path:
            local_secrets = LocalFilesystemBackend(
                variables_file_path=variable_file_path, connections_file_path=conn_file_path
            )
            secrets_backend_list.insert(0, local_secrets)
            exit_stack.callback(lambda: secrets_backend_list.pop(0))
        with exit_stack:
            execution_date = execution_date or timezone.utcnow()
            self.validate()
            self.log.debug("Clearing existing task instances for execution date %s", execution_date)
            self.clear(
                start_date=execution_date,
                end_date=execution_date,
                dag_run_state=False,  
                session=session,
            )
            self.log.debug("Getting dagrun for dag %s", self.dag_id)
            logical_date = timezone.coerce_datetime(execution_date)
            data_interval = self.timetable.infer_manual_data_interval(run_after=logical_date)
            dr: DagRun = _get_or_create_dagrun(
                dag=self,
                start_date=execution_date,
                execution_date=execution_date,
                run_id=DagRun.generate_run_id(DagRunType.MANUAL, execution_date),
                session=session,
                conf=run_conf,
                data_interval=data_interval,