Draft: Draft: Add read GraphQL surface for Artifact Registry

What does this MR do and why?

This adds the read half of the GraphQL surface for GitLab Artifact Registry: a new GraphQL type and a field on the organization type that lets clients read an organization's Artifact Registry state.

  • Adds Types::ArtifactRegistry::RegistryType (graphql_name ArtifactRegistry) exposing exactly three fields, all non-null and all marked experiment: handle (String), status (String), and createdAt (Time). status is deliberately a plain String, not an enum, so an unrecognized Artifact Registry status value reaches the response instead of raising. The type authorizes read_artifact_registry.
  • Adds Resolvers::ArtifactRegistry::RegistryResolver, which extends the existing S03 BaseResolver. It returns null when the organization has no namespace-mapping row and authorizes read_artifact_registry against the organization (the organization type declares no authorization of its own). Step 3's NamespaceMapping#registry does not raise on client failure; it returns a truthy ResolutionFailure marker naming the exception class. The resolver re-raises the named client exception so the shared error-mapping concern turns an authorization failure into a null field and an unavailability failure into a service-unavailable GraphQL error.
  • Mounts an artifactRegistry field on the organization GraphQL type (null: true, experiment) behind the existing artifact_registry_ui feature flag. With the flag off, the field stays in the schema, resolves null, and makes no client call.
  • Regenerates the GraphQL reference docs and the introspection JSON.

Which plan step this implements

This implements Step 4 of the S10 "activation and deactivation" plan for GitLab Artifact Registry. It covers only Step 4 of Steps 4-6.

Work item: #608392 (closed)

Feature flag

This is behind the existing artifact_registry_ui feature flag (dark, disabled by default). Because the flag is dark, there is no changelog, and the schema text requires no i18n.

MR target

This MR targets nkannan/ar-s10-step3-resolution, not master, because Step 4 depends on the unmerged Step 3 (MR !250657 (merged)).

How to validate locally

Run the specs:

bundle exec rspec ee/spec/graphql/types/artifact_registry/registry_type_spec.rb ee/spec/graphql/resolvers/artifact_registry/registry_resolver_spec.rb ee/spec/requests/api/graphql/organizations/artifact_registry_spec.rb

Then enable the artifact_registry_ui flag for an activated organization and run:

organization { artifactRegistry { handle status createdAt } }

Merge request reports

Loading
Loading