Loading
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 firstee/gems/gem, and the ADR-014 deviation note. - Credential seam (amended 2026-07-27): drops
current_userand becomes the slug-keyedtoken_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 andNULL_TOKEN_PROVIDERdefault; the S03 coordination note gains the matching S03 seam amendment; the spike note's/api/internal/v1paths corrected to/api/gitlab/v1(S33).
Riders
docs/specs/monolith/TEMPLATE.md: client class renamed toGitlab::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