| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- """Add a stable, correlation-scoped catalog for runner artifacts."""
- from alembic import op
- revision = "20260723_140"
- down_revision = "20260723_130"
- branch_labels = None
- depends_on = None
- def upgrade() -> None:
- op.execute(
- """
- CREATE TABLE public.rule_run_artifacts (
- id UUID PRIMARY KEY,
- correlation_id UUID NOT NULL,
- binding_id UUID NOT NULL
- REFERENCES public.dataflow_dataset_bindings(id)
- ON DELETE RESTRICT,
- artifact_ref VARCHAR(1000) NOT NULL,
- artifact_digest CHAR(64) NOT NULL,
- row_count BIGINT NOT NULL CHECK (row_count >= 0),
- schema_hash CHAR(64) NOT NULL,
- schema_fields JSONB NOT NULL,
- artifact_kind VARCHAR(20) NOT NULL
- CHECK (artifact_kind IN ('input','lookup','output')),
- expires_at TIMESTAMPTZ NOT NULL,
- created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
- UNIQUE (correlation_id, binding_id, artifact_digest)
- );
- CREATE INDEX idx_rule_run_artifacts_resolve
- ON public.rule_run_artifacts
- (correlation_id, binding_id, created_at DESC);
- """
- )
- def downgrade() -> None:
- # Runtime handoff evidence is immutable and intentionally retained.
- pass
|