docs(specs): split format slices into separate remote and virtual specs
What
Splits each planned per-format slice into a remote spec and a virtual spec:
| Before | After |
|---|---|
| S14 Maven remote/virtual | S14 Maven remote, S30 Maven virtual |
| S15 npm remote/virtual | S15 npm remote, S31 npm virtual |
| S16 Container remote/virtual | S16 Container remote, S32 Container virtual |
S13 stays as the shared foundation for both kinds.
Why
A standalone remote repository (proxy + cache) is shippable on its own, while virtual resolution depends on it: a virtual repository's interesting upstreams are remotes, and resolution probes and fetches through them. Bundled specs would hold the remote work hostage while the virtual merge semantics (packument merge, maven-metadata.xml merging, tag-list aggregation) are still under review. Splitting makes the sequencing explicit and gives each capability its own plan MR and acceptance criteria.
Changes
docs/specs/README.md: redefine S14/S15/S16 as the remote slices; add S30/S31/S32 for the virtual slices.docs/specs/S13-virtual-remote-foundation.md: point each consumer reference at the slice that owns it (remote operations, health-check path, and header injection to S14-S16; virtual error mapping and resolution surfaces to S30-S32) and split migration ownership (remote + cache tables to remote slices; virtual, junction, and rules tables to virtual slices).docs/roadmap/closed-beta.md: split the Build-scope rows, relabel the Gantt bars and workstream assignments (same DRIs and windows as the previous combined rows), and add the remote-to-virtual edges to the dependency graph.docs/specs/S10-maven-hosted.md,S11-npm-hosted.md,S01-http-server-and-routing.md: update forward-looking ownership pointers so the S30/S31 implementers are not misdirected.- Go code comments in
internal/that named the old combined numbers for virtual-kind ownership.
Bookkeeping found along the way
- S01 and S11 are fully implemented but still said
Approved: flip their spec headers, index rows, and the closed-beta S11 entries, and fill the three S11 plan rows that were missing MR links (Step 12 !712 (merged)-!716 (merged), Step 22 !849 (merged)/!850 (merged)/!860 (merged), Step 26 !835 (merged)/!836 (merged)). - S11's conformance gate differs from S12's: OCI runs the upstream distribution-spec suite in CI, while npm has only the interim real-npm-CLI e2e harness. The S11 roadmap row names the gap and links #278, the follow-up to integrate the registry-conformance npm runner as the target-state gate.
S12 needs no changes: it has no remote/virtual or slice-spec references. Merged plan files keep their stale step/spec mentions per the point-in-time convention. ADR-007's "Maven Virtual spec (S14)" reference is fixed at the source in the handbook (synced back by the daily sync:adrs job): gitlab-com/content-sites/handbook!20397 (merged)