Two CI failures from the Rank 7 chain push (#438):
Go Build & Test — staticcheck ST1021:
internal/service/approval_metrics.go:97 comment for ApprovalDecisionEntry
doesn't start with the type name
internal/service/approval_metrics.go:130 comment for ApprovalPendingAgeSnapshot
doesn't start with the type name
Frontend Build — scripts/ci-guards/openapi-handler-parity.sh:
4 router routes have no OpenAPI operationId:
GET /api/v1/approvals
GET /api/v1/approvals/{id}
POST /api/v1/approvals/{id}/approve
POST /api/v1/approvals/{id}/reject
The Rank 7 commit-3 spec deferred OpenAPI extension to commit 4 with a
'batched alongside the integration changes' note; commit 4 didn't actually
add them. This commit closes that gap.
Fixes:
approval_metrics.go — split the doc comment that was attached to
SnapshotApprovalDecisions (the function) but visually preceded
ApprovalDecisionEntry (the type), so the type appeared to staticcheck
as having a comment that named the function instead of the type.
Same fix on ApprovalPendingAgeSnapshot. Now each exported type has its
own type-name-leading comment per Go convention.
api/openapi.yaml — added 4 new operationIds (listApprovalRequests,
getApprovalRequest, approveApprovalRequest, rejectApprovalRequest)
+ new ApprovalRequest schema component under components/schemas.
Inline 401 response (the Unauthorized component does not exist in
this spec; the canonical pattern in the rest of the file is inline
'description: Authentication required'). The two-person integrity
contract surface is documented in the description of the approve /
reject endpoints so external readers see the RBAC contract from the
spec alone.
Verified locally:
go vet ./internal/service/...: exit 0.
scripts/ci-guards/openapi-handler-parity.sh: clean (140 ops vs 174 routes,
36 documented exceptions).
Third CI failure (image-and-supply-chain) was a transient apt-fetch
'Connection reset by peer' from deb.debian.org while pulling
libasan6_10.2.1-6_amd64.deb. Not a code issue; just re-run the workflow.
No code change needed.