diff --git a/src/langbot/pkg/persistence/alembic/versions/0018_repair_local_workspace_owner.py b/src/langbot/pkg/persistence/alembic/versions/0017_repair_local_workspace_owner.py similarity index 95% rename from src/langbot/pkg/persistence/alembic/versions/0018_repair_local_workspace_owner.py rename to src/langbot/pkg/persistence/alembic/versions/0017_repair_local_workspace_owner.py index 59c33a8dc..c6d5ed36c 100644 --- a/src/langbot/pkg/persistence/alembic/versions/0018_repair_local_workspace_owner.py +++ b/src/langbot/pkg/persistence/alembic/versions/0017_repair_local_workspace_owner.py @@ -1,7 +1,7 @@ """repair an ownerless local Workspace after tenancy migration -Revision ID: 0018_local_owner_repair -Revises: 0016_agent_workspace, 0017_oss_workspace_identity +Revision ID: 0017_local_owner_repair +Revises: 0016_agent_workspace Create Date: 2026-07-31 """ @@ -14,8 +14,8 @@ import sqlalchemy as sa from alembic import op -revision = '0018_local_owner_repair' -down_revision = ('0016_agent_workspace', '0017_oss_workspace_identity') +revision = '0017_local_owner_repair' +down_revision = '0016_agent_workspace' branch_labels = None depends_on = None diff --git a/src/langbot/pkg/persistence/alembic/versions/0018_merge_workspace_heads.py b/src/langbot/pkg/persistence/alembic/versions/0018_merge_workspace_heads.py new file mode 100644 index 000000000..6cce7329b --- /dev/null +++ b/src/langbot/pkg/persistence/alembic/versions/0018_merge_workspace_heads.py @@ -0,0 +1,19 @@ +"""merge AgentRunner and OSS Workspace migration heads + +Revision ID: 0018_merge_workspace_heads +Revises: 0017_local_owner_repair, 0017_oss_workspace_identity +Create Date: 2026-08-01 +""" + +revision = '0018_merge_workspace_heads' +down_revision = ('0017_local_owner_repair', '0017_oss_workspace_identity') +branch_labels = None +depends_on = None + + +def upgrade() -> None: + pass + + +def downgrade() -> None: + pass diff --git a/tests/integration/persistence/test_workspace_migration.py b/tests/integration/persistence/test_workspace_migration.py index 22b0f28e1..9959be9b3 100644 --- a/tests/integration/persistence/test_workspace_migration.py +++ b/tests/integration/persistence/test_workspace_migration.py @@ -180,6 +180,18 @@ async def test_workspace_upgrade_repairs_ownerless_existing_local_workspace(lega assert membership['status'] == 'active' +async def test_published_owner_repair_revision_upgrades_to_merged_head(legacy_engine): + await run_alembic_upgrade(legacy_engine, '0017_local_owner_repair') + assert await get_alembic_current(legacy_engine) == '0017_local_owner_repair' + + await run_alembic_upgrade(legacy_engine, 'head') + + assert await get_alembic_current(legacy_engine) == get_alembic_head() + async with legacy_engine.connect() as conn: + workspace_uuid = await conn.scalar(sa.text("SELECT uuid FROM workspaces WHERE source = 'local'")) + assert workspace_uuid == workspace_uuid_from_instance_id('instance_migration_test') + + async def test_existing_oss_workspace_is_rekeyed_to_instance_identity(tmp_path): engine = create_async_engine(f'sqlite+aiosqlite:///{tmp_path / "workspace-rekey.db"}') instance_id = 'instance_a711d9e4-0953-443f-a0e9-7dd50193a79f'