"""milestone-as-plan-container: milestones.body holds the plan/design Revision ID: 0066 Revises: 0065 Create Date: 2026-06-14 T3 of plan #819. The milestone becomes the plan container: its `body` holds the design/intent/purpose (markdown), `description` stays the one-liner, and individual steps live as first-class child tasks (milestone_id) instead of checkboxes crammed into a kind=plan task body. start_planning is reworked to create a milestone instead of a kind=plan task (hard retirement going forward; the 'plan' task_kind enum value stays valid so the historical plan-tasks are left readable in place — no body-shredding backfill). Schema change is just one nullable column; no data migration. """ from alembic import op import sqlalchemy as sa revision = "0066" down_revision = "0065" branch_labels = None depends_on = None def upgrade() -> None: op.add_column("milestones", sa.Column("body", sa.Text(), nullable=True)) def downgrade() -> None: op.drop_column("milestones", "body")