Scope workspace name uniqueness constraint to project_id
## Summary As part of the [Organizations Feature Parity self-assessment](https://gitlab.com/gitlab-com/gl-infra/tenant-scale/organizations/organizations-feature-parity/-/work_items/13) (Q1.3), `index_workspaces_on_name` enforces workspace name uniqueness globally with no `project_id` or `organization_id` scope. In a Cells environment, organizations on the same cell are prevented from reusing workspace names across org boundaries. ## What needs to change - Replace `index_workspaces_on_name` with one scoped to `project_id` (the table's sharding key) - Update `WorkspaceNameGenerator` so its collision check is also scoped to `project_id` — currently it checks `RemoteDevelopment::Workspace.by_names(workspace_name).exists?` globally rather than per-project. See `ee/lib/remote_development/workspace_operations/create/workspace_name_generator.rb#L25` ## References - Self-assessment: https://gitlab.com/gitlab-com/gl-infra/tenant-scale/organizations/organizations-feature-parity/-/work_items/13+
issue