docs(plans): correct the S30 step 11a entry against the landed tree

Summary

Corrects Step 11a's entry in the S30 plan against the tree the step lands on, and books the files the implementation actually touches.

Four corrections:

  • The budget arm is no longer "unreachable until the foundation enforces the budget." S32's Step 11 has landed: virtual.Resolver arms resolution.resolve_timeout and reports an expiry as remote.ErrResolveBudgetExpired through its own context-end classification, so the arm awaits only the serve path that calls the mapper.
  • Four wiring sentinels, not three. virtual.ErrUnsettledPositionOutcome joins them, as the sibling npm mapping already records.
  • Shared seams are booked, not "none". Step 11a's winner relay carries the upstream's own Retry-After, which takes the field on remote.WinnerFetchFailedError and the one line in fetchWinner that fills it.
  • The acceptance clause is scoped to the rows the mapper answers, and the size forecast moves to the measured diff.

Files booked for Step 11a beyond its original three: internal/remote/errors.go, internal/remote/errors.md, internal/remote/operations.go, internal/virtual/resolve.go, internal/virtual/resolve_errors.md, internal/virtual/resolve_test.go, internal/format/npm/virtual_read_errors.md, internal/format/npm/virtual_operations.md, docs/specs/S30-maven-virtual.md, docs/specs/S15-npm-remote.md, docs/dev/storage.md.

Merge order

This MR is the approval gate for Step 11a's own MR, !2892 (merged), which names this MR as its merge-order prerequisite.

No step MR edits the plan file or its Status table: Step 11a's row is recorded by the standing table MR !2693 (merged), which owns that table.

Tests

Docs-only: no code changes, and no docs/testing/ scenario is added or affected. Each step's tests are specified in the plan and mirror the landed S31 suites.

Size

47 insertions, 19 deletions in one file (docs/plans/2026-09-10-s30-maven-virtual.md), under the 500-line reviewable ceiling.

Edited by Moaz Khalifa

Merge request reports

Loading
Loading