What's new
- Added database CHECK constraints for clean high-risk phone/email fields on channels, website widget visitors, workspace invites, and broadcast outbox rows.
Security and operations
- The migration uses
NOT VALIDfollowed byVALIDATE CONSTRAINTso invalid historical data fails clearly during rollout. - A live aggregate-only preflight found historical dirty rows in
contacts.phone_e164andcontacts.email; those contact fields are intentionally deferred until a separate cleanup decision is approved. - No phone numbers or email addresses are stored in the committed preflight artifact.