Ensure resumed CI jobs return to the correct runner
What does this MR do and why?
When a CI job is suspended (via the suspendable environments feature), the runner preserves the cloud VM state and emits a resume key encoding which runner holds the environment. When the next job is dispatched to resume that environment, any runner matching the job's tags can pick it up — but only the original runner's taskscaler knows about the suspended acquisition. A wrong runner receiving the resume job fails immediately with an unknown acquisition key.
This MR adds an application-level filter to RegisterJobService#runner_matched? that enforces the coupling: a resumed job must return to exactly the runner that suspended it.
Related issue: #596841
Part of epic: gitlab-org#21159
MR acceptance checklist
- This MR does not require a CHANGELOG entry (internal implementation, no user-facing change)
- Tests added for new code
- Documentation updated if needed
Edited by Ashvin Sharma