docs(plans): add the monolith S05 virtual repository detail plan

What

Adds docs/plans/monolith/2026-09-10-repository-detail-virtual.md: the monolith plan for the virtual repository detail page, across all four MVP formats (maven, npm, docker, oci), implementing the virtual scope of monolith/S05. Eight monolith steps, EE-only and dark behind artifact_registry_ui:

  1. Client upstream-list read
  2. Kind gate on the artifact connections
  3. Upstream list field and types
  4. Virtual main region and the upstream table
  5. Virtual sidebar stats
  6. Virtual empty state and the setup entry
  7. Upstream row actions
  8. Connect the virtual detail view to the schema

Steps 1, 2, and 4 open at plan merge; Steps 5 to 7 are sibling-parallel off Step 4; Step 3 runs parallel with the Vue track; Step 8 closes both.

Decisions the plan records (each taken with the engineer)

  • Proceed dark against the contract. AR serves none of the upstream association routes yet (contractPendingOperations in internal/managementapi/contract_routes_test.go) and still refuses kind=virtual on create. Every step merges against WebMock stubs, mock resolvers, or a client double; the live path waits on the S17 Phase 6 plan's steps 36 to 42, and the plan names that gate per step.
  • This plan carries the read half S07 Phase 3 declares (the client read, the upstreamRepositories field, and its types), because no S07 Phase 3 plan exists. The ownership deviation is named.
  • Add repository and Remove repository are not mounted; both mount points are named and asserted empty for the S07 Phase 3 plan.
  • The upstream row's Clear cache follows the tree: the shipped remote eviction affordances issue on selection with no confirmation.

Spec amendment

The same MR amends docs/specs/monolith/S05-repository-detail.md, by engineer decision:

  • The eviction-confirmation rule moves to the tree: an eviction issues on selection, its item's accessible name carries the scope, and the outcome announcement is the feedback. Sites: #### Confirmation and outcome, the upstream row's consequence sentence, the ### Accessibility bullet, two criteria, the gating and mutation clauses, and a new ## Resolutions entry.
  • Two internal disagreements the plan's research surfaced are settled: the upstream summary's field set and why format is selected (the shipped mutation takes name alone), and what an upstream-row eviction refetches (the ### Apollo rule wins over the ### States row and its criterion).
  • A present-tense "render today" clause in ## Resolutions is rewritten in condition-and-event form.

Review

One pr-review-toolkit pass ran on the staged files (general review plus a claims check against the monolith at 2c4aaba42124 and this repository at bbcdafe4d); every finding was folded in or ruled on with the engineer. Step 4 sits past the file ceiling and its seam interrogation is recorded as keep bundled.

Monolith tracking issue for the step MRs: gitlab-org/gitlab#628475 (child of epic &22453).

Related to gitlab-org/gitlab#628475

🤖 Generated with Claude Code

Merge request reports

Loading
Loading