docs(specs): S16's operation domain gains the probe value
upstream_responses_total declares operation ∈ {fetch} and explains the absence of probe by pointing at S32: "the container Probe operation is deferred to S32", and "the label itself stays on the metric so S32 can add probe alongside the Probe operation without changing the metric's shape". The oci_remote_proxy wide event drops the value "for the same reason".
S32 supplies that Probe, so the value stops being deferred on both.
Changes in docs/specs/S16-container-remote.md:
- The metric table's
operationdomain gainsprobe. - The wide event's
operationdiscriminator gainsprobebeside it. S32 states that a Probe leg emits the same per-upstream event a Fetch leg does, and the S32 plan books both extensions in the same step, so the two label sets move together rather than splitting onto separate reasons. - The deferral paragraph is rewritten. The emitter is the virtual resolver's per-position
HEAD, not the operation dispatch, which still wires Lookup and Fetch only. It books one observation per wire leg, so a401on a cached token books two. A refusal this service raises instead of sending books nothing.
A follow-up sentence describing the tag-list transform gap cited the old operation ∈ {fetch} scoping to make its point. It now says what it meant — that the counter carries no tag-list operation — so the point survives the domain change.
docs/specs/S32-container-virtual.md states the same fact the old way — "S16 left probe off both" — and moves with it. The merged docs/plans/2026-07-30-container-remote.md carries the phrase too, and stays as it is: it records what was true when it was written.
Merge order. This must merge before S32's Step 9 (!2744 (merged)), which books probe on oci_remote_upstream_responses_total and widens internal/metrics/cardinality.go's closed set to match. Until this lands, that branch claims a label value S16 does not declare. The oci_remote_proxy half of the value belongs to Step 17, which adds it to remote_wideevent.go; Step 9 does not touch that file, so this amendment precedes both but the binding gate is Step 9.
Nothing enforces the order: TestRemoteLabelDomains_AreTheSpecClosedSets pins the code domain to a hardcoded literal rather than reading the spec, and no CI job parses docs/specs. The gate is a review-time convention.
No implementation follows this amendment; Step 9 carries the counter and Step 17 the wide event.
Related to #291 (closed) step 9