Go's database/sql contract requires callers to check rows.Err() after a
for rows.Next() loop — a mid-stream error (e.g. dropped connection
mid-result-set) is not surfaced by rows.Next() returning false.
Covered handlers:
- delegation.go: ListDelegations
- approvals.go: ListPendingApprovals, List
- instructions.go: List handler, scanInstructions helper (interface extended)
- secrets.go: ListSecrets, ListGlobalSecrets, notifyGlobalSecretChange
- events.go: List, ListByWorkspace
- discovery.go: queryPeerMaps
All checks log the error (non-fatal) so callers continue to receive the
partial result set rather than silently truncating.
Refs #862 (extending scope beyond delegation.go)