"""M8 frozen reranking pools and retrieval pipeline evidence. Revision ID: 20260825_0012 Revises: 20260825_0011 """ from collections.abc import Sequence import sqlalchemy as sa from alembic import op revision: str = "20260825_0012" down_revision: str | None = "20260825_0011" branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None def upgrade() -> None: op.alter_column("capability_deployments", "embedding_space_id", nullable=True) op.create_table( "retrieval_candidate_pools", sa.Column("project_id", sa.Uuid(), nullable=False), sa.Column("suite_revision_id", sa.Uuid(), nullable=False), sa.Column("evaluation_case_id", sa.Uuid(), nullable=False), sa.Column("source_embedding_space", sa.String(length=255), nullable=False), sa.Column("source_index_ref", sa.Text(), nullable=False), sa.Column("corpus_revision", sa.String(length=128), nullable=False), sa.Column("retrieval_config_digest", sa.String(length=64), nullable=False), sa.Column("candidate_count", sa.Integer(), nullable=False), sa.Column("ordered_candidates", sa.JSON(), nullable=False), sa.Column("fingerprint", sa.String(length=64), nullable=False), sa.Column("id", sa.Uuid(), nullable=False), sa.Column( "created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False ), sa.Column( "immutable_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False ), sa.CheckConstraint( "candidate_count > 0 AND candidate_count <= 40", name="ck_candidate_pool_count" ), sa.ForeignKeyConstraint(["project_id"], ["projects.id"], ondelete="RESTRICT"), sa.ForeignKeyConstraint( ["suite_revision_id"], ["evaluation_suite_revisions.id"], ondelete="RESTRICT" ), sa.ForeignKeyConstraint( ["evaluation_case_id"], ["evaluation_cases.id"], ondelete="RESTRICT" ), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint( "evaluation_case_id", "source_index_ref", "fingerprint", name="uq_candidate_pool_case_source_fingerprint", ), sa.UniqueConstraint("fingerprint"), ) op.create_index("ix_candidate_pools_project_id", "retrieval_candidate_pools", ["project_id"]) op.create_index( "ix_candidate_pools_suite_revision_id", "retrieval_candidate_pools", ["suite_revision_id"] ) op.create_index( "ix_candidate_pools_evaluation_case_id", "retrieval_candidate_pools", ["evaluation_case_id"] ) op.create_table( "retrieval_pipeline_identities", sa.Column("project_id", sa.Uuid(), nullable=False), sa.Column("embedding_space_ref", sa.String(length=255), nullable=False), sa.Column("sparse_config_digest", sa.String(length=64), nullable=False), sa.Column("fusion_config_digest", sa.String(length=64), nullable=False), sa.Column("reranker_deployment_id", sa.Uuid(), nullable=True), sa.Column("reranker_config_digest", sa.String(length=64), nullable=True), sa.Column("candidate_k", sa.Integer(), nullable=False), sa.Column("output_k", sa.Integer(), nullable=False), sa.Column("identity_digest", sa.String(length=64), nullable=False), sa.Column("configuration", sa.JSON(), nullable=False), sa.Column("migration_class", sa.String(length=32), nullable=False), sa.Column("id", sa.Uuid(), nullable=False), sa.Column( "created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False ), sa.Column( "immutable_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False ), sa.CheckConstraint("candidate_k > 0 AND candidate_k <= 40", name="ck_pipeline_candidate_k"), sa.CheckConstraint("output_k > 0 AND output_k <= candidate_k", name="ck_pipeline_output_k"), sa.ForeignKeyConstraint(["project_id"], ["projects.id"], ondelete="RESTRICT"), sa.ForeignKeyConstraint( ["reranker_deployment_id"], ["capability_deployments.id"], ondelete="RESTRICT" ), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("identity_digest"), ) op.create_index( "ix_pipeline_identities_project_id", "retrieval_pipeline_identities", ["project_id"] ) op.create_index( "ix_pipeline_identities_reranker_deployment_id", "retrieval_pipeline_identities", ["reranker_deployment_id"], ) op.create_table( "reranking_evaluation_runs", sa.Column("project_id", sa.Uuid(), nullable=False), sa.Column("suite_revision_id", sa.Uuid(), nullable=False), sa.Column("pipeline_identity_id", sa.Uuid(), nullable=False), sa.Column("control_pipeline_identity_id", sa.Uuid(), nullable=False), sa.Column("reranker_deployment_id", sa.Uuid(), nullable=True), sa.Column("status", sa.String(length=32), nullable=False), sa.Column("corpus_revision", sa.String(length=128), nullable=False), sa.Column("candidate_pool_set_fingerprint", sa.String(length=64), nullable=False), sa.Column("environment_fingerprint", sa.JSON(), nullable=False), sa.Column("environment_digest", sa.String(length=64), nullable=False), sa.Column("expected_cases", sa.Integer(), nullable=False), sa.Column("completed_cases", sa.Integer(), nullable=False), sa.Column("error_count", sa.Integer(), nullable=False), sa.Column("aggregate_metrics", sa.JSON(), nullable=False), sa.Column("latency_metrics", sa.JSON(), nullable=False), sa.Column("started_at", sa.DateTime(timezone=True), nullable=True), sa.Column("completed_at", sa.DateTime(timezone=True), nullable=True), sa.Column("id", sa.Uuid(), nullable=False), sa.Column( "created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False ), sa.ForeignKeyConstraint(["project_id"], ["projects.id"], ondelete="RESTRICT"), sa.ForeignKeyConstraint( ["suite_revision_id"], ["evaluation_suite_revisions.id"], ondelete="RESTRICT" ), sa.ForeignKeyConstraint( ["pipeline_identity_id"], ["retrieval_pipeline_identities.id"], ondelete="RESTRICT" ), sa.ForeignKeyConstraint( ["control_pipeline_identity_id"], ["retrieval_pipeline_identities.id"], ondelete="RESTRICT", ), sa.ForeignKeyConstraint( ["reranker_deployment_id"], ["capability_deployments.id"], ondelete="RESTRICT" ), sa.PrimaryKeyConstraint("id"), ) op.create_index("ix_reranking_runs_project_id", "reranking_evaluation_runs", ["project_id"]) op.create_index( "ix_reranking_runs_suite_revision_id", "reranking_evaluation_runs", ["suite_revision_id"] ) op.create_index( "ix_reranking_runs_pipeline_identity_id", "reranking_evaluation_runs", ["pipeline_identity_id"], ) op.create_index("ix_reranking_runs_status", "reranking_evaluation_runs", ["status"]) op.create_table( "reranking_case_results", sa.Column("run_id", sa.Uuid(), nullable=False), sa.Column("case_id", sa.Uuid(), nullable=False), sa.Column("candidate_pool_id", sa.Uuid(), nullable=False), sa.Column("ranked_results", sa.JSON(), nullable=False), sa.Column("relevant_results", sa.JSON(), nullable=False), sa.Column("first_relevant_rank", sa.Integer(), nullable=True), sa.Column("metrics", sa.JSON(), nullable=False), sa.Column("retrieval_latency_ms", sa.Float(), nullable=False), sa.Column("rerank_latency_ms", sa.Float(), nullable=False), sa.Column("total_latency_ms", sa.Float(), nullable=False), sa.Column("error_code", sa.String(length=64), nullable=True), sa.Column("id", sa.Uuid(), nullable=False), sa.Column( "created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False ), sa.ForeignKeyConstraint(["run_id"], ["reranking_evaluation_runs.id"], ondelete="RESTRICT"), sa.ForeignKeyConstraint(["case_id"], ["evaluation_cases.id"], ondelete="RESTRICT"), sa.ForeignKeyConstraint( ["candidate_pool_id"], ["retrieval_candidate_pools.id"], ondelete="RESTRICT" ), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("run_id", "case_id", name="uq_reranking_case_result"), ) op.create_index("ix_reranking_case_results_run_id", "reranking_case_results", ["run_id"]) op.create_index("ix_reranking_case_results_case_id", "reranking_case_results", ["case_id"]) op.create_index( "ix_reranking_case_results_pool_id", "reranking_case_results", ["candidate_pool_id"] ) op.create_table( "discovery_candidate_assessments", sa.Column("model_id", sa.Uuid(), nullable=True), sa.Column("upstream_snapshot_id", sa.Uuid(), nullable=False), sa.Column("candidate_key", sa.String(length=128), nullable=False), sa.Column("repository_id", sa.String(length=255), nullable=False), sa.Column("resolved_commit_sha", sa.String(length=64), nullable=False), sa.Column("artifact_evidence", sa.JSON(), nullable=False), sa.Column("security_state", sa.JSON(), nullable=False), sa.Column("license_state", sa.JSON(), nullable=False), sa.Column("gpu_fit", sa.JSON(), nullable=False), sa.Column("status", sa.String(length=32), nullable=False), sa.Column("rationale", sa.Text(), nullable=False), sa.Column("evidence_fingerprint", sa.String(length=64), nullable=False), sa.Column("id", sa.Uuid(), nullable=False), sa.Column( "created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False ), sa.Column( "immutable_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False ), sa.ForeignKeyConstraint(["model_id"], ["models.id"], ondelete="RESTRICT"), sa.ForeignKeyConstraint( ["upstream_snapshot_id"], ["upstream_snapshots.id"], ondelete="RESTRICT" ), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("evidence_fingerprint"), ) op.create_index( "ix_discovery_assessments_model_id", "discovery_candidate_assessments", ["model_id"] ) op.create_index( "ix_discovery_assessments_snapshot_id", "discovery_candidate_assessments", ["upstream_snapshot_id"], ) op.create_index( "ix_discovery_assessments_status", "discovery_candidate_assessments", ["status"] ) op.add_column( "advisor_recommendations", sa.Column( "target_kind", sa.String(length=32), nullable=False, server_default="embedding_deployment", ), ) op.add_column( "advisor_recommendations", sa.Column("current_pipeline_identity_id", sa.Uuid(), nullable=True), ) op.add_column( "advisor_recommendations", sa.Column("candidate_pipeline_identity_id", sa.Uuid(), nullable=True), ) op.create_foreign_key( "fk_advisor_current_pipeline", "advisor_recommendations", "retrieval_pipeline_identities", ["current_pipeline_identity_id"], ["id"], ondelete="RESTRICT", ) op.create_foreign_key( "fk_advisor_candidate_pipeline", "advisor_recommendations", "retrieval_pipeline_identities", ["candidate_pipeline_identity_id"], ["id"], ondelete="RESTRICT", ) def downgrade() -> None: op.drop_constraint( "fk_advisor_candidate_pipeline", "advisor_recommendations", type_="foreignkey" ) op.drop_constraint("fk_advisor_current_pipeline", "advisor_recommendations", type_="foreignkey") op.drop_column("advisor_recommendations", "candidate_pipeline_identity_id") op.drop_column("advisor_recommendations", "current_pipeline_identity_id") op.drop_column("advisor_recommendations", "target_kind") op.drop_table("discovery_candidate_assessments") op.drop_table("reranking_case_results") op.drop_table("reranking_evaluation_runs") op.drop_table("retrieval_pipeline_identities") op.drop_table("retrieval_candidate_pools") op.alter_column("capability_deployments", "embedding_space_id", nullable=False)