"""add attempts to intelligent eval task queue ADR-0011: stale-assigned requeue gets an attempt cap (3) so a deterministically failing task no longer requeues forever; the counter lives on the task row. Revision ID: e1a2b3c4d5f6 Revises: c8f3e9a2b4d1 Create Date: 2026-08-19 """ from typing import Sequence, Union import sqlalchemy as sa from alembic import op revision: str = "e1a2b3c4d5f6" down_revision: Union[str, Sequence[str], None] = "c8f3e9a2b4d1" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: inspector = sa.inspect(op.get_bind()) columns = {column["name"] for column in inspector.get_columns("intelligent_eval_task_queue")} if "attempts" not in columns: op.add_column( "intelligent_eval_task_queue", sa.Column("attempts", sa.Integer(), nullable=False, server_default="0"), ) def downgrade() -> None: inspector = sa.inspect(op.get_bind()) columns = {column["name"] for column in inspector.get_columns("intelligent_eval_task_queue")} if "attempts" in columns: with op.batch_alter_table("intelligent_eval_task_queue") as batch_op: batch_op.drop_column("attempts")