"""add soft_insertion_count to thread_state (Спринт 6b, блок D) Revision ID: f2d50c8b91a7 Revises: e1a4f7c83b29 Create Date: 2026-04-25 13:30:00.000000 Счётчик «боковых вопросов» подряд внутри одной sm-ветки (мягкая вставка vs. жёсткое переключение, v2 §4.2). Растёт, когда модель отвечает на побочный вопрос без смены шага (отметка `soft_insertion: true` в STATE_JSON). Сбрасывается на продвижении по шагам или при смене ветки. """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa revision: str = 'f2d50c8b91a7' down_revision: Union[str, None] = 'e1a4f7c83b29' branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: with op.batch_alter_table('thread_state', recreate='always') as batch: batch.add_column(sa.Column('soft_insertion_count', sa.Integer(), nullable=False, server_default='0')) def downgrade() -> None: with op.batch_alter_table('thread_state', recreate='always') as batch: batch.drop_column('soft_insertion_count')