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()
        with create_session() as session:
            ti = TI(task=task, execution_date=datetime.datetime.now())
            ti.state = State.RUNNING
            session.merge(ti)
        
        
        expected_query_count_based_on_db = 13 if session.bind.dialect.name == "mssql" else 12
        with assert_queries_count(expected_query_count_based_on_db):
            ti._run_raw_task()
    def test_operator_field_with_serialization(self, create_dummy_dag):
        _, task = create_dummy_dag()
        assert task.task_type == 'DummyOperator'
        
        ti = TI(task=task, execution_date=datetime.datetime.now())
        assert ti.operator == "DummyOperator"
        serialized_op = SerializedBaseOperator.serialize_operator(task)
        deserialized_op = SerializedBaseOperator.deserialize_operator(serialized_op)
        assert deserialized_op.task_type == 'DummyOperator'
        
        ser_ti = TI(task=deserialized_op, execution_date=datetime.datetime.now())
        assert ser_ti.operator == "DummyOperator"
@pytest.mark.parametrize("mode", ["poke", "reschedule"])
@pytest.mark.parametrize("retries", [0, 1])
def test_sensor_timeout(mode, retries, dag_maker):