Backport the 2026-10-26 Orbit changes to 19.5
What does this MR do and why?
Daily backport of the GitLab Orbit changes that merged to master and are not on 19-5-stable-ee yet. Each MR is one git cherry-pick -m 1 -x with the same added and removed lines as the original MR. Adaptations (review closely: generated files): !264917 (merged) conflicted in doc/api/openapi/openapi_v3.yaml; the stable file has no x-gitlab-tier on the two schema routes (their route_setting :tier is absent there), so only x-gitlab-lifecycle: beta became experiment. !264923 (merged) conflicted in the generated GraphQL docs; they were regenerated with rake gitlab:graphql:compile_docs (19.5 also gitlab:graphql:docs:compile) in a separate Regenerate GraphQL docs commit that is squashed into the single commit. On 19.5 the experimental docs were stale on the stable base, so the regeneration also adds the Orbit entries they were missing, and refreshes a few stale non-Orbit AI entries (for example AiGovernanceToolCall, AiFoundationalChatAgent) that match the 19.5 code. CI checks only _index.md, not experimental/ (the introspection schema check passes). The branch is squashed into one commit.
| # | MR | Change | Author | Merged | Type |
|---|---|---|---|---|---|
| 1 | Mark non-essential Orbit endpoints as experimental (!264917 - merged) | Mark non-essential Orbit endpoints as experimental | dgruzd |
2026-10-25 17:15 UTC | typemaintenance |
| 2 | Set charset on Orbit grep llm response (!264873 - merged) | Set charset on Orbit grep llm response | dgruzd |
2026-10-25 17:17 UTC | typebug |
| 3 | Send the credential type to Orbit in the query JWT (!264924 - merged) | Send the credential type to Orbit in the query JWT | jgdoyon1 |
2026-10-25 19:09 UTC | typefeature |
| 4 | Mark Orbit as introduced in 19.4 and move UI st... (!264923 - merged) | Mark Orbit as introduced in 19.4 and move UI status calls to GraphQL | jgdoyon1 |
2026-10-25 19:55 UTC | typefeature |
| 5 | Enable Orbit GQL queries by default (!265010 - merged) | Enable Orbit GQL queries by default | dgruzd |
2026-10-26 14:40 UTC | typefeature |
How the MRs were selected
- Sweep of all
into 'master'merges since 2026-10-24 18:00 UTC: labelgroup::context-systems, Orbit authors, and files or diff lines that matchorbit|knowledge_graph. - Kept: Orbit code, and shared code that Orbit cannot work without.
- Already on
19-5-stable-ee: none of these originals. - Single backport MRs (on request): none.
- Not needed:
- !260591 (merged) (documentation translation)
- !264946 (merged), !264870 (merged) (not Orbit: author match only)
- !263819 (merged) (shared ClickHouse migration lock; Orbit works without it)
Verification
git patch-id --stableof each pick is the same as the one of the original merge commit, except for the adaptations above.- Local, on the
19-5-stable-eedependencies: RSpec, Jest, ESLint, and RuboCop on the changed files (results in a comment). - MR pipeline at
pipeline::tier-3.
Points for reviewers:
- The types are mixed. The MR has
type::maintenancefor thestable_branch.rbDanger rule, as the GA backports had. It needs a release manager exception (ask in#releases). - Endpoint changes (
ee/lib/api/orbit/data.rb, the query JWT inknowledge_graph) are in the daily MR as usual: review them closely. - !265010 (merged) moves the
orbit_gql_queriesflag file fromgitlab_com_derisk/tobeta/, changes itstypetobeta, and setsdefault_enabled: true. The flag file exists on both branches. - Behaviour change for the release manager: after this patch, Orbit queries on Self-Managed and Dedicated switch from JSON to GQL by default. Admins can switch back with
Feature.disable(:orbit_gql_queries). A client that sends JSON DSL toPOST /api/v4/orbit/querygets GQL parse errors until the flag is off.
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
- This MR is backporting a bug fix, documentation update, or spec fix, previously merged in the default branch. (Release manager exception requested.)
- The MR that fixed the bug on the default branch has been deployed to GitLab.com (not applicable for documentation or spec changes).
- The MR title is descriptive (e.g. "Backport of 'title of default branch MR'"). This is important, since the title will be copied to the patch blog post.
- Required labels have been applied to this merge request
- severity label and bug subtype labels (if applicable)
- If this MR fixes a bug that affects customers, the customer label has been applied.
- This MR has been approved by a maintainer (only one approval is required).
- Ensure the
E2E Omnibus GitLab EEpipeline (triggered by thee2e:test-on-omnibus-eejob) has succeeded. If it has failed (or shows warnings), investigate the failures. If you determine the failures are unrelated, you may proceed. If you need assistance investigating, request help in the #s_developer_experience Slack channel to confirm the failures are unrelated to the merge request.
Note to the merge request author and maintainer
If you have questions about the patch release process, please:
- Refer to the patch release runbook for engineers and maintainers for guidance.
- Ask questions on the
#releasesSlack channel (internal only). - Once the backport has been merged, the commit changes will be automatically deployed to a release environment that can be used for manual validation. See after merging runbook for details.