Update Vulnerability UUID calculation to exclude location fingerprint for definition model
<!--IssueSummary start--> <details> <summary> Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards. </summary> - [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=587624) </details> <!--IssueSummary end--> ## Problem The Vulnerability model is transitioning to a definition model that represents vulnerability types across all contexts (branches/tags), while Vulnerabilities::Finding represents specific instances of that vulnerability in a particular context. Currently, Vulnerability UUID generation includes the location fingerprint, which is inappropriate for a definition model that should be location-agnostic. ## Background **UUID composition for Vulnerability (definition - location-agnostic):** - Report type - Primary identifier fingerprint - Project ID **NOT included** (unlike Finding UUID): - Location fingerprint - Security_project_tracked_context_id This aligns the Vulnerability model with its role as a definition/type rather than a context-specific instance. Multiple Findings (across different branches/locations) can reference the same Vulnerability definition. ## Implementation This issue covers **Phase 1: Start populating new UUID** 1. Add `new_uuid` column to `vulnerabilities` table (if not present) 2. Update `Security::VulnerabilityUUID` to support definition-level UUID generation (without location fingerprint) 3. Modify Vulnerability creation logic to populate `new_uuid` with definition-level UUID 4. Ensure backward compatibility - existing `uuid` column unchanged ## Migration Phases | Phase | Issue | Description | |-------|-------|-------------| | 1 | This issue | Start populating `new_uuid` for new vulnerabilities | | 2 | #587802 | Backfill `new_uuid` for existing vulnerabilities | | 3 | #587803 | Add NOT NULL constraint to `new_uuid` | | 4 | #587804 | Transition GitLab to use `new_uuid` | | 5 | #587805 | Drop old `uuid` column and rename `new_uuid` | ## Acceptance Criteria - [ ] `Security::VulnerabilityUUID` supports definition-level UUID generation (without location) - [ ] New Vulnerabilities have `new_uuid` populated with definition-level UUID - [ ] Vulnerabilities for the same type/identifier across different locations have the same `new_uuid` - [ ] Existing `uuid` column behavior is unchanged (backward compatible) ## Related - Related to #587625 (Finding UUID - context-aware)
issue