Vulnerability UUID Migration Phase 3: Add NOT NULL constraint to new_uuid
<!--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=587803)
</details>
<!--IssueSummary end-->
## Problem
After Phase 2 backfills `new_uuid` for all existing vulnerabilities, we need to add a NOT NULL constraint to ensure data integrity going forward.
## Implementation
1. Verify BBM from Phase 2 has completed and no NULL values remain
2. Add NOT NULL constraint to `new_uuid` column on `vulnerabilities` table
3. Use appropriate migration strategy for large tables (async constraint validation)
## Acceptance Criteria
- [ ] Verified no NULL values exist in `new_uuid` column
- [ ] NOT NULL constraint added successfully
- [ ] No downtime or performance impact
## Dependencies
- Blocked by Phase 2 (backfill must complete first)
## Related
- Part of Vulnerability UUID migration series
- #587624 - Phase 1: Start populating new_uuid
issue