## 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
instance = migration_instance
        if lock_row:
            instance = AsyncMigration.objects.select_for_update().get(pk=migration_instance.pk)
        else:
            instance.refresh_from_db()
        if last_error is not None:
            instance.last_error = last_error
        if current_query_id is not None:
            instance.current_query_id = current_query_id
        if celery_task_id is not None:
            instance.celery_task_id = celery_task_id
        if progress is not None:
            instance.progress = progress
        if current_operation_index is not None:
            instance.current_operation_index = current_operation_index
        if status is not None:
            instance.status = status
        if started_at is not None:
            instance.started_at = started_at
        if finished_at is not None:
            instance.finished_at = finished_at
        instance.save()
    if lock_row:
        with transaction.atomic():
            execute_update()
    else:
        execute_update()