docs(specs): amend monolith/S02 spec and plan for the client gem packaging

What does this MR do and why?

Amends the monolith/S02 spec and plan for the client's gem packaging, following reviewer direction on the Step 1 implementation MR (gitlab-org/gitlab!244245 (merged), packaging thread): the AR Ruby client ships as the self-contained EE path gem gitlab-artifact_registry-client at ee/gems/gitlab-artifact_registry-client/ (module namespace Gitlab::ArtifactRegistry), not as ee/lib/artifact_registry/ code.

Spec (docs/specs/monolith/S02-ar-ruby-client.md)

  • New Packaging section: gem name/path/namespace, the self-containment rule (three runtime dependencies, every deployment-specific input constructor-injected), install_if-gated bundling, the first ee/gems/ gem, and the ADR-014 deviation note.
  • Credential seam (amended 2026-07-27): drops current_user and becomes the slug-keyed token_provider: callable (call(slug:), fail-closed null default; the consumer binds the principal); the interim bootstrap-token provider stays consumer-side wiring owned by monolith/S03 (amended Resolution 3 and criterion 10). Namespace-lifecycle references corrected from S17 Phase 2 to the S33 GitLab API (/api/gitlab/v1, ADR-009).
  • Injection contract for the base URL, user agent, correlation ID, and error callback; amended acceptance criteria 10 and 12 and new criterion 13 (error callback); new Resolution 5 recording the packaging decision; the ADR-014 component-table amendment tracked in Follow-ups (handbook MR).

Plan (docs/plans/monolith/2026-07-02-ar-ruby-client.md)

Follow-up plan-amendment MR per docs/plans/README.md:

  • New research findings: monolith gem conventions, the new ee/gems/ pattern, dual lockfiles and root configuration touches, and the injection-replaces-couplings table.
  • Step 1 re-scoped to the gem extraction (gem tree plus root wiring; the configuration stanza and bounded-contexts entry hand off to S03 with their first reader); Steps 2 and 3 re-pathed into the gem, with the body: request-primitive extension noted in Step 3.
  • Testing strategy moved to the gem's standalone RSpec suite and the gem CI child workflow.
  • New Coordination notes: the S03 plan touch-up (owner @rchanila), the template rename, the ADR-014 handbook follow-up, and the pre-registered organization→namespace provisioning spike (findings destined for gitlab-org/gitlab#603023 (closed)).
  • Seam amendment (2026-07-27): Step 1 described with the token_provider: constructor and NULL_TOKEN_PROVIDER default; the S03 coordination note gains the matching S03 seam amendment; the spike note's /api/internal/v1 paths corrected to /api/gitlab/v1 (S33).

Riders

  • docs/specs/monolith/TEMPLATE.md: client class renamed to Gitlab::ArtifactRegistry::Client.
  • docs/plans/README.md: S02 plan index row rewritten for the gem.

Merging this MR is the plan-amendment gate for pushing the gem extraction to gitlab-org/gitlab!246861 (closed) (which supersedes !244245).

Edited by Fiona McCawley

Merge request reports

Loading
Loading