"""stricter auto-apply defaults (milestone 139) — cut auto-apply misfires

head_auto_apply_min_positives 30→50 and ccip_auto_apply_threshold 0.92→0.95
(operator-asked 2026-07-06). The head graduation precision bar stays 0.97 — the
operator confirmed the general-tag confidence was already well tuned; only the
support floor + the CCIP match confidence are raised. The model defaults change
for fresh installs; here we bump the existing singleton row IFF it is still at
the previous default, so a deliberate operator change is NOT clobbered.

Revision ID: 0081
Revises: 0080
Create Date: 2026-07-06
"""
from typing import Sequence, Union

from alembic import op

revision: str = "0081"
down_revision: Union[str, None] = "0080"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    op.execute(
        "UPDATE ml_settings SET head_auto_apply_min_positives = 50 "
        "WHERE head_auto_apply_min_positives = 30"
    )
    op.execute(
        "UPDATE ml_settings SET ccip_auto_apply_threshold = 0.95 "
        "WHERE ccip_auto_apply_threshold = 0.92"
    )


def downgrade() -> None:
    op.execute(
        "UPDATE ml_settings SET head_auto_apply_min_positives = 30 "
        "WHERE head_auto_apply_min_positives = 50"
    )
    op.execute(
        "UPDATE ml_settings SET ccip_auto_apply_threshold = 0.92 "
        "WHERE ccip_auto_apply_threshold = 0.95"
    )
