docs(plans): S32 Step 4 files, its metric budget, and Step 10b logging
Corrections to the S32 plan. A step branch may not edit the plan file, so they
land here. The branch is rebased on c7a28c0d6. !2760 (merged) merged in the meantime
and landed this plan's credential-column correction, so the section this
description once carried for it is gone.
Step 4's Files entry omits a suite its own Tests entry mandates
The Tests entry asks for an *_explain_integration_test.go suite in full,
and says why a statement count cannot replace it. The Files entry never
named the file. It now names
internal/datastore/container_virtual_resolution_explain_integration_test.go.
Step 4 owes no labelName raise
The Files entry and the Shared seams: bullet both said Step 4 raises
labelName in internal/metrics/cardinality.go to a value covering Steps 4,
5 and 6 together. No raise is owed. labelName is 600, and the two catalogs
it covers hold 567 names at c7a28c0d6. The Modify row goes, and the bullet
records the measurement instead of the obligation.
Two other places asserted the raise. ### Query-name budget said labelName
is 500 and that one step owns the hand-raise for the wave; it now points at
Step 4's bullet rather than repeating a figure. Step 17's seam bullet called
Step 4 the file's "only other writer"; Step 17 is the only writer.
Step 10b owns the two identifiers Step 4's reads drop
Both error wraps in internal/datastore/container_virtual_resolution.go name
the operation and the table and carry no identifier.
docs/dev/database-query-patterns.md moves the dropped identifiers to the
call site as structured fields, with a test pinning them, and states that
dropping one without logging it deletes the tenant record rather than moving
it. Step 10b is the first caller, so its Acceptance now records the
obligation. The npm sibling meets it for the rules read alone, because its
list wrap still carries the pair.
Step 4's Depends on line names its spec MR
The line named Step 3 alone. !2741 (merged) records the two read bounds and has to merge before Step 4's code, or the merged spec contradicts it. The line now names that MR and the window it closes.
Step 10b records why neither read logs at the store
The logging obligation covered both reads without saying why the store logs nothing itself. The npm sibling does log at its list read, because that read clips and returns success, so nothing downstream records the degradation. Both container reads refuse and return an error the caller logs. A reader who takes npm for the pattern re-adds a summary that would group one refusal under two records.
The suite count goes rather than gets corrected
Three Tests entries said internal/datastore carries 14
*_explain_integration_test.go suites. It carries 17, and no sentence named
the commit it was measured at. The count carries no argument in any of the
three: the suite that says why a statement count cannot see an Append does
that work. The sentences now say the suites exist and drop the number.
Merge order
Merge order stays !2741 (merged), then !2743 (merged), then !2756 (merged). No pipeline checks it.
Related to https://gitlab.com/gitlab-org/artifact-registry/-/issues/291