docs(plans): record step 4's MR and reconcile its entry

What

Records step 4 of the npm remote observability plan as !2204 (merged) in the plan's Status table, and reconciles step 4's own entry with the MR that row now names.

Filled from a dedicated branch rather than from the step MR itself, because the table takes a single writer while a workstream has steps in flight. With this row the table is complete: 1a as !2075 (merged), 1b as !2076 (merged), 2 as !2187 (merged), 3 as !2071 (merged), 4 as !2204 (merged).

The step's entry described an approach !2204 (merged) rejected

Four passages derived a probe's record outcome from its HTTP status.

## Research Findings concluded that remoteProxyEvent.outcome() already reads a probe correctly, because it books a zero httpStatus as a failure. That holds for a probe that got no response and fails for one answered 401, 403 or 404, which S13's taxonomy rules reachable (docs/specs/S15-npm-remote.md, ### Health probe) and which is exactly what an auth-gated base URL answers a bare HEAD. A status-derived record would book a failure on every sweep of such a remote while last_health_status read healthy throughout.

So the counter's outcome comes from the status and the record's from the monitor's pass verdict. The correction sits in ## Research Findings at the finding it corrects, rather than replacing that finding silently, and the Files, Acceptance and Tests entries now say which signal reads which. It points at the inference that finding left unstated, not at the clause it follows, whose two halves both hold.

Four files the lists did not name

  • internal/format/npm/remote_observe.go: the new non-rendered probePassed field, the outcome() branch that consults it, and the doc-comment relocation that leaves metrics.md as the contract's only home.
  • internal/format/npm/remote_metrics.go: the observeRemoteUpstreamResponse doc, which named its one caller until this step added the second.
  • cmd/artifact-registry/wire_remote_test.go: the test pinning npm's two monitors as the only two of the six carrying an observer.
  • internal/format/npm/remote_observe_test.go: the probe-shaped fixture in TestRemoteProxyEvent_OmitsAFieldNotInScope, which stops being producible once outcome() consults the verdict. The list carries a "no edit" entry for remote_metrics_test.go, so silence about a sibling read as the same claim.

Shared seams now names the two production files against the steps that share them, all of which merge before step 4.

The wire_remote.go and docs/dev/observability.md entries also grew a site each: the observer goes to both npm monitors rather than one, and the catalog takes three edits rather than two. The catalog's rows are named by their metric and event names now instead of by line, since every earlier step moves them.

A second S15 ruling rides !2204 (merged)

## Dependencies named one spec amendment as a prerequisite, and it merged as docs(specs): S15 supplies an npm-scoped probe observer. It rules only that npm emits. Which signal the record's outcome reports is a further spec change, and !2204 (merged) carries it inline: a ruling added to ### Health probe, the S13 dependency row rewritten a second time, and the "Every settled probe is observed" acceptance criterion rewritten to require the pass verdict.

The section now records that and says the spec-MR guardrail reaches it, so a reviewer who checks the named prerequisite, finds it merged, and reads the step MR as implementing a settled spec is corrected before they approve. Step 4's Depends on line says the prerequisite covers the first ruling only.

This MR merges before !2204 (merged)

!2204 (merged) carried a hunk dropping the #emitter-coverage anchor from this plan's ## Spec Reference. Step MRs do not edit the plan file and this MR is the file's single writer for step 4, so the hunk moves here.

That also fixes the merge order rather than risking one. A reference removed ahead of its target cannot dangle; one removed after it leaves main pointing at a section that is gone for the window between the two merges. ## Dependencies states the order and the reason, and step 4's Depends on line names it where a reviewer of !2204 (merged) will look.

!2204 (merged) still needs that hunk removed from its own diff, or the two collide once this branch merges.

This follows the precedent one commit older on this file: d3123f342, "docs(plans): record step 2's MR and widen its Files list".

Row 4's Step cell also picks up the space that aligns it with its siblings.

No behavior change, so no related issue line and no e2e scenario.

Edited by Dzmitry (Dima) Meshcharakou

Merge request reports

Loading
Loading