BEGIN; -- Refuse rollback if independent versions now share a name; keep their data intact. DO $$ BEGIN IF EXISTS (SELECT 1 FROM tenant_skill_catalog WHERE deleted_at IS NULL AND instruction_only GROUP BY tenant_id, created_by, name HAVING COUNT(*) > 1) THEN RAISE EXCEPTION 'Skill personal versions share names; resolve names before rolling back'; END IF; END $$; DROP INDEX IF EXISTS uq_tenant_instruction_skill_owner_name; CREATE UNIQUE INDEX uq_tenant_instruction_skill_owner_name ON tenant_skill_catalog(tenant_id, created_by, name) WHERE deleted_at IS NULL AND instruction_only; ALTER TABLE tenant_skill_catalog DROP COLUMN IF EXISTS version_source_id; COMMIT;