Part of #339
Parent
#339 — table checks (named multi-column CHECK), auto-migrated
What to build
An orphaned ferro-owned ck_* (live, gone from the model — table check removed, or db_check=True cleared) drops only under migrate_destructive. Under migrate_updates it stays and Ferro warns with the live name. User-created CHECKs (any other name) are never touched.
Alembic autogenerate always proposes DROP CONSTRAINT for an orphaned ferro ck_* — the destructive gate is connect-time safety only.
Acceptance criteria
Blocked by
#344 — rebuild a table check when the check predicate drifts
Part of #339
Parent
#339 — table checks (named multi-column CHECK), auto-migrated
What to build
An orphaned ferro-owned
ck_*(live, gone from the model — table check removed, ordb_check=Truecleared) drops only undermigrate_destructive. Undermigrate_updatesit stays and Ferro warns with the live name. User-created CHECKs (any other name) are never touched.Alembic autogenerate always proposes
DROP CONSTRAINTfor an orphaned ferrock_*— the destructive gate is connect-time safety only.Acceptance criteria
Check(...)from the model;migrate_updates=Trueleaves the live constraint and warns naming it.migrate_destructive=Truedrops it on Postgres.db_check=Truefollows the same warn / destructive-drop rule.ck_survives both flags.DROP CONSTRAINTfor the orphaned ferro name even when auto-migrate would not drop yet.Blocked by
#344 — rebuild a table check when the check predicate drifts