Files
roboco/alembic/versions/045_observability_rework.py
T

49 lines
1.4 KiB
Python
Raw Normal View History

2026-06-23 07:26:41 +02:00
"""Observability rework tracking: tasks.revision_count + audit_log query index.
``tasks.revision_count`` makes the per-task rework rate an O(1) column read
instead of an audit_log scan; the composite index on
``audit_log(target_id, event_type, timestamp)`` keeps the cycle-time and rework
reconstruction queries fast. Pure schema change, no backfill — existing rows
default to 0 (the counter is forward-only, matching the design's forward-only
rework attribution).
Revision ID: 045_observability_rework
Revises: 044_convention_findings
Create Date: 2026-06-23
NOTE: revision id is 24 chars — alembic's ``alembic_version.version_num`` is
``VARCHAR(32)`` and a longer id raises at record time.
"""
from __future__ import annotations
import sqlalchemy as sa
from alembic import op
revision = "045_observability_rework"
down_revision = "044_convention_findings"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column(
"tasks",
sa.Column(
"revision_count",
sa.Integer(),
nullable=False,
server_default="0",
),
)
op.create_index(
"ix_audit_log_target_event_ts",
"audit_log",
["target_id", "event_type", "timestamp"],
)
def downgrade() -> None:
op.drop_index("ix_audit_log_target_event_ts", table_name="audit_log")
op.drop_column("tasks", "revision_count")