0053_snapshot_manifest_blob_nullable.py
python
sha256:969ddc5e88776e70af33c016b8777bb721356508ae5f304b3fb46c451494ece7
test(mwp3): Phase 4 — fix adjacent suite regressions, lock …
Sonnet 4.6
22 days ago
| 1 | """Make musehub_snapshots.manifest_blob nullable. |
| 2 | |
| 3 | snapshot_id = sha256(sorted manifest entries) — the ID is the proof. |
| 4 | Snapshots pushed via the delta-mpack path store manifest_blob=NULL; |
| 5 | the manifest can be reconstructed from the delta chain in MinIO. |
| 6 | |
| 7 | Revision ID: 0053 |
| 8 | Revises: 0052 |
| 9 | """ |
| 10 | from __future__ import annotations |
| 11 | |
| 12 | import sqlalchemy as sa |
| 13 | from alembic import op |
| 14 | |
| 15 | |
| 16 | revision: str = "0053" |
| 17 | down_revision: str = "0052" |
| 18 | branch_labels = None |
| 19 | depends_on = None |
| 20 | |
| 21 | |
| 22 | def upgrade() -> None: |
| 23 | op.alter_column( |
| 24 | "musehub_snapshots", |
| 25 | "manifest_blob", |
| 26 | existing_type=sa.LargeBinary(), |
| 27 | nullable=True, |
| 28 | ) |
| 29 | |
| 30 | |
| 31 | def downgrade() -> None: |
| 32 | op.execute( |
| 33 | "UPDATE musehub_snapshots SET manifest_blob = '\\x80' WHERE manifest_blob IS NULL" |
| 34 | ) |
| 35 | op.alter_column( |
| 36 | "musehub_snapshots", |
| 37 | "manifest_blob", |
| 38 | existing_type=sa.LargeBinary(), |
| 39 | nullable=False, |
| 40 | ) |
File History
2 commits
sha256:969ddc5e88776e70af33c016b8777bb721356508ae5f304b3fb46c451494ece7
test(mwp3): Phase 4 — fix adjacent suite regressions, lock …
Sonnet 4.6
22 days ago
sha256:1749b9cc5cd2583c56d3261c4c00a342c27435f3946d4bc3e70f76aa2795458a
docs(mwp-3): TDD implementation plan for job-enqueue idempo…
Opus 4.8
22 days ago