Implement Placeholder Reassignment Expiration Worker
<!--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=569770) </details> <!--IssueSummary end--> ## Background As part of the data retention policy for user contribution mapping tables https://gitlab.com/groups/gitlab-org/-/epics/17248, group owners have a 1-year window to perform user reassignments. After this period expires, contributions will remain assigned to placeholder users if no action is taken. ## Objective Implement a cronjob that automatically updates the status of expired import source users to "keep as placeholder user". ## Technical Details The worker should: - Run every 6 hours (cron: `0 */6 * * *`) - Query `import_source_users` table for records where: - `reassignment_expires_at <= NOW()` - Status is "pending reassignment" - Update these records to "keep as placeholder" status - Process records in batches using loop-based batching - Use a batch size of 1,000 records ## Implementation Notes - Follow [loop-based batching](https://docs.gitlab.com/development/database/batching_best_practices/#loop-based-batching) best practices
issue