## Bug description

async migrations celery task id will always be "" through the migration

## Expected behavior

It will be set

## How to reproduce

1. Start a migration

## Environment

- [x] PostHog Cloud
- [ ] self-hosted PostHog (ClickHouse-based), version/commit: _please provide_
- [ ] self-hosted PostHog (Postgres-based, legacy), version/commit: _please provide_

## Additional context

The cause is a bad state machine: We set it in #trigger_migration but #mark_async_migration_as_running later in the chain always resets it.

cc @tiina303 and @yakkomajuri for prioritization

#### *Thank you* for your bug report – we love squashing them!

posthog/async_migrations/utils.py
update_async_migration(
        migration_instance=migration_instance,
        last_error="",
        current_query_id="",
        celery_task_id="",
        progress=0,
        current_operation_index=0,
        status=MigrationStatus.Running,
        started_at=datetime.now(),
        finished_at=None,
    )
def update_async_migration(
    migration_instance: AsyncMigration,
    last_error: Optional[str] = None,
    current_query_id: Optional[str] = None,
    celery_task_id: Optional[str] = None,
    progress: Optional[int] = None,
    current_operation_index: Optional[int] = None,
    status: Optional[int] = None,
    started_at: Optional[datetime] = None,
    finished_at: Optional[datetime] = None,
    lock_row: bool = True,
):
    def execute_update():