"""Add parent_snapshot_id and delta_blob to musehub_snapshots. Enables tip-to-tip object diffing in wire_fetch_mpack (new_oids = want_tip - have_tip in O(files) rather than O(commits × files)) and delta-compressed snapshot wire format (send only the delta, not the full manifest, per commit). """ from __future__ import annotations import sqlalchemy as sa from alembic import op revision = "0066" down_revision = "0065" branch_labels = None depends_on = None def upgrade() -> None: op.add_column( "musehub_snapshots", sa.Column("parent_snapshot_id", sa.String(128), nullable=True), ) op.add_column( "musehub_snapshots", sa.Column("delta_blob", sa.LargeBinary, nullable=True), ) def downgrade() -> None: op.drop_column("musehub_snapshots", "delta_blob") op.drop_column("musehub_snapshots", "parent_snapshot_id")