Phase 4: GitLab.com HTTPS Token Routing
## Overview
One key requirement of the Cells architecture is the ability to route incoming requests to the correct cell. In Phase 3, we implemented the ability to route requests via their session cookie to the correct cell. In this phase, we will build upon that work in the HTTP Router to route requests that use tokens such as Personal Access Tokens to the correct cell. In order to do this, we must add the ability to create tokens that contain routing information in the application as well as the rule sets needed for the HTTP Router to validate and decode routing information from the tokens.

[source](https://excalidraw.com/#json=rWNPd77fLEhwZpERiUYLA,Tb-v5Hen6NomaopcmE9_mw)
The **order of issue execution** of these issues can be found in https://cells-architecture-overview-gitlab-org-tenant-sc-ff1c641f886923.gitlab.io/phase-1-8/#groups_Phase_1,groups_Phase_2,groups_Phase_3,groups_Phase_4 you should see all the issues in this epic.
## Exit Criteria
- [x] Framework to generate routable tokens in Rails.
- [x] Framework to classify routable tokens in HTTP Router.
- [x] Topology Service being able to classify based on more criteria.
- [x] Route Personal Access Tokens to different Cells using TopologyService::Classify.
- [x] Support PRIVATE-TOKEN: and Authorization: HTTP headers for Personal Access Tokens, create issues for other to be solved in following phases.
- [x] Each routing rule added should be covered with relevant e2e tests.
- [x] Route Job Tokens and Runner Registration to different Cells using TopologyService::Classify.
## Design
- Routable tokens: https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/cells/routable_tokens/
## DRI
@bmarjanovic
### Participants↵
- @sxuereb
- @bmarjanovic
- @daveyleach
- @jjsisson
- @godfat-gitlab
- @splattael
- @a_richter
- @rymai
<!-- STATUS NOTE START -->
## Status 2025-06-09
We're waiting for ~"group::editor extensions" to fully support routable tokens before releasing the `routable_pat` feature flag.
:tada: **achievements**:
- N/A
:issue-blocked: **blockers**:
- CI JWT switch-over is no longer happening in 18.0. https://gitlab.com/gitlab-org/gitlab/-/issues/509578#note_2445709751.
:arrow_forward: **next**:
- Waiting for feedback from https://gitlab.com/gitlab-org/editor-extensions/meta/-/issues/204#note_2522317461, before releasing the `routable_pat` FF on legacy cell.
_Copied from https://gitlab.com/groups/gitlab-org/-/epics/14510#note_2550741147_
<!-- STATUS NOTE END -->
epic