277 lines
12 KiB
Python
277 lines
12 KiB
Python
"""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)
|