"""ui_settings: the 9th identity color — grid_line (phase 92, task 01) Revision ID: 0015 Revises: 0014 Create Date: 2026-09-09 Phase 92 (the theme controls drive the ENTIRE site — the owner's defect report: "the background grid never changes color"): the background grid texture becomes the 9th tab-controlled IDENTITY variable, so it flows through the resolver, the pre-paint tag, the CSP hash, and the admin API exactly like the existing 8 (all of those are ``COLOR_FIELDS``-driven — zero logic changes): * ``ui_settings.grid_line`` — VARCHAR(7) NULL ``#rrggbb`` (NULL = the built-in ``#4a2626`` — today's hardcoded grid color, exact). ONE additive, fully reversible column on the single-row table (A13). """ from __future__ import annotations import sqlalchemy as sa from alembic import op revision = "0015" down_revision = "0014" branch_labels = None depends_on = None def upgrade() -> None: op.add_column( "ui_settings", sa.Column("grid_line", sa.String(length=7), nullable=True) ) def downgrade() -> None: # Safe order: the column is the only 0015 artefact — dropping it # leaves 0014's schema byte-identical (A13, fully reversible). op.drop_column("ui_settings", "grid_line")