Replace User-Agent sniffing for Congregate detection with a dedicated header

What

Gitlab::Import::RequestChannel.congregate? (in lib/gitlab/import/request_channel.rb) detects Congregate by checking if a request's User-Agent starts with "GitLabApiClient". That string is the default User-Agent of gitlab_ps_utils' GitLabApi client — a shared Python library, not something unique to Congregate.

Why it's a problem

Any other script or tool built on that same shared library would send the same default User-Agent and get misattributed to Congregate. This means the request_channel property introduced in !256773 (merged) can report false positives for :congregate.

What this task covers

  • Coordinate with the team that owns Congregate (GitLab Professional Services / Migrations) to have Congregate send a dedicated, unambiguous header on its requests (e.g. a custom header like X-Gitlab-Migration-Tool: congregate).
  • Update Gitlab::Import::RequestChannel.congregate? to check that header instead of (or alongside, during a transition period) the User-Agent heuristic.

References