"""Add storage_uri to musehub_commits and musehub_snapshots. Phase 1 of the object-store invariant fix (issue #63): every commit and snapshot must be written to S3 in muse binary format alongside the DB row. storage_uri tracks the canonical S3 location, mirroring MusehubObject. NULL on existing rows — backfill handled in Phase 5. Revision ID: 0068 Revises: 0067 """ from __future__ import annotations import sqlalchemy as sa from alembic import op revision: str = "0068" down_revision: str = "0067" branch_labels = None depends_on = None def upgrade() -> None: op.add_column( "musehub_commits", sa.Column("storage_uri", sa.String(length=2048), nullable=True), ) op.add_column( "musehub_snapshots", sa.Column("storage_uri", sa.String(length=2048), nullable=True), ) def downgrade() -> None: op.drop_column("musehub_snapshots", "storage_uri") op.drop_column("musehub_commits", "storage_uri")