docs(specs): add monolith/S07 repository CRUD spec
What
Authors the monolith/S07 spec: the write slice for repositories — create,
edit / advanced settings, and delete across the three kinds (hosted, remote,
virtual). This is the UI monolith/S01 deliberately deferred. S07 is the first
slice with mutations, so it introduces the base mutation the slice shares —
composing monolith/S03's error rendering and cached-client acquisition (S03
defines no concrete mutation) — and each mutation calls the monolith/S02 client
write methods and re-authorizes server-side; each write view registers its route
into the S01 repositories SPA shell behind the shared flag.
S07 is the first feature slice out (ahead of S04 list / S05 detail), so it
introduces the minimal concrete ArtifactRegistryRepository type, a
single-repository read for edit prefill, and owns the repository write
affordances (create button, row kebab, delete-toast) so S04/S05 stay read-only.
Why / key decisions (see the spec's Resolutions)
- All three kinds as one CRUD contract, delivered in two phases mirroring S17's phase overview — Phase 1 hosted (implementable now against the frozen S02 client), Phase 2 remote/virtual (gated on a later S17 phase + S02 extension; Dependencies). The planner sequences Phase 1 first.
- Authorization: UI pre-gating and the server-side ability re-check via the
BatchCheck AR
↔️ GLAZ mechanism (design-doc!132, in design), with AR the authoritative authorizer (defense-in-depth). - Visibility: Public/Private only; Internal deferred to post-GA (ADR-021).
- Test-connection is edit-time; remote upstream credentials are write-only.
Status: Approved, Open Questions empty. Merging is the approval signal.
Related to gitlab-org#21055