Currently we use execution-date when generating the command to send via executor in https://github.com/apache/airflow/blob/9c94b72d440b18a9e42123d20d48b951712038f9/airflow/models/taskinstance.py#L420-L436

We should replace the execution_date in their to run_id instead and handle the corresponding changes needs on the executor and worker.
tests/models/test_taskinstance.py
_, task = create_dummy_dag(dag_id='test_check_and_change_state_before_execution')
        ti = TI(task=task, execution_date=DEFAULT_DATE)
        assert ti._try_number == 0
        assert ti.check_and_change_state_before_execution()
        
        assert ti.state == State.RUNNING
        assert ti._try_number == 1
    def test_check_and_change_state_before_execution_dep_not_met(self, create_dummy_dag):
        dag, task = create_dummy_dag(dag_id='test_check_and_change_state_before_execution')
        task2 = DummyOperator(task_id='task2', dag=dag, start_date=DEFAULT_DATE)
        task >> task2
        ti = TI(task=task2, execution_date=timezone.utcnow())
        assert not ti.check_and_change_state_before_execution()
    def test_try_number(self, create_dummy_dag):
        """
        Test the try_number accessor behaves in various running states
        """
        _, task = create_dummy_dag(dag_id='test_check_and_change_state_before_execution')
        ti = TI(task=task, execution_date=timezone.utcnow())
        assert 1 == ti.try_number
        ti.try_number = 2
        ti.state = State.RUNNING
        assert 2 == ti.try_number
        ti.state = State.SUCCESS
        assert 3 == ti.try_number
    def test_get_num_running_task_instances(self, create_dummy_dag):