### Apache Airflow version

2.6.1

### What happened

I have a short circuit task which is in a task group that is expanded. The task work correctly when it returns true but the task fails when it returns false with the following error:
```
sqlalchemy.exc.IntegrityError: (psycopg2.errors.ForeignKeyViolation) insert or update on table "xcom" violates foreign key constraint "xcom_task_instance_fkey"
DETAIL:  Key (dag_id, task_id, run_id, map_index)=(pipeline_output_to_s3, transfer_output_file.already_in_manifest_short_circuit, manual__2023-05-24T20:21:35.420606+00:00, -1) is not present in table "task_instance".
```

It looks like it sets the map-index to -1 when false is returned which is causing the issue. 
If one task fails this way in the the task group, all other mapped tasks fail as well, even if the short circuit returns true.
When this error occurs, all subsequent DAG runs will be stuck indefinitely in the running state unless the DAG is deleted.

### What you think should happen instead

Returning false from the short circuit operator should skip downstream tasks without affecting other task groups / map indexes or subsequent DAG runs. 

### How to reproduce

include a short circuit operator in a mapped task group and have it return false.

### Operating System

Red Hat Enterprise Linux 7

### Versions of Apache Airflow Providers

_No response_

### Deployment

Official Apache Airflow Helm Chart

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

try:
            result = subprocess.check_output([self.python, "--version"], text=True)
            return result.strip().split(" ")[-1].split(".")
        except Exception as e:
            raise ValueError(f"Error while executing {self.python}: {e}")
    def _iter_serializable_context_keys(self):
        yield from self.BASE_SERIALIZABLE_CONTEXT_KEYS
        if self._get_airflow_version_from_target_env():
            yield from self.AIRFLOW_SERIALIZABLE_CONTEXT_KEYS
            yield from self.PENDULUM_SERIALIZABLE_CONTEXT_KEYS
        elif self._is_pendulum_installed_in_target_env():
            yield from self.PENDULUM_SERIALIZABLE_CONTEXT_KEYS
    def _is_pendulum_installed_in_target_env(self) -> bool:
        try:
            subprocess.check_call([self.python, "-c", "import pendulum"])
            return True
        except Exception as e:
            if self.expect_pendulum:
                self.log.warning("When checking for Pendulum installed in venv got %s", e)
                self.log.warning(
                    "Pendulum is not properly installed in the virtualenv "
                    "Pendulum context keys will not be available. "
                    "Please Install Pendulum or Airflow in your venv to access them."
                )
            return False
    def _get_airflow_version_from_target_env(self) -> str | None: