CI & Build / Python lint (push) Successful in 4s
CI & Build / Plugin hooks (push) Successful in 8s
CI & Build / integration (push) Failing after 25s
CI & Build / TypeScript typecheck (push) Canceled after 30s
CI & Build / Python tests (push) Canceled after 30s
CI & Build / Build & push image (push) Canceled after 0s
Project 2 is bound to main, so every consolidation of the 2026-08 audit was
invisible to the ledger until the dev→main merge; the operator works on dev
(rule 1). repo_bindings.ref (migration 0082, nullable) is the branch the
coverage refresh reads; NULL keeps the forge default branch. set_binding takes
ref (name sets, "" clears, None leaves standing); bindings_for_project feeds
the refresh; bind_repo exposes ref ("-" clears). to_dict carries it.
Operator decision on #2873 (2026-08-21): per-binding ref, chosen at bind time,
default the repo default branch.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
27 lines
730 B
Python
27 lines
730 B
Python
"""Per-binding ref — the branch a project's ledger follows (#2873, milestone 294)
|
|
|
|
Revision ID: 0082
|
|
Revises: 0081
|
|
Create Date: 2026-08-21
|
|
|
|
A repo binding used to imply the repo's default branch; the shape ledger
|
|
therefore only saw work after a merge to main, while the operator's work
|
|
lands on dev (rule 1). `ref` names the branch the coverage refresh reads —
|
|
NULL keeps today's behaviour (the forge's default branch).
|
|
"""
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
revision = "0082"
|
|
down_revision = "0081"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.add_column("repo_bindings", sa.Column("ref", sa.Text(), nullable=True))
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_column("repo_bindings", "ref")
|