e6bb220979
For each user with NULL default_workspace_id, generate a base slug from the email, walk past collisions/blacklist via next_available_slug, create the workspace + owner membership, and set default_workspace_id. Idempotent: candidates list is filtered by IS NULL, so re-running on a populated DB is a no-op. 3 new unit tests (creation, idempotence, blacklist-walker behaviour). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>