Fixing the instrument first paid off within the hour, and not gently.
I pointed the kind-by-kind version at twenty relays and one of them came back all zeros across every kind. Before writing that down I asked it directly for notes alone: 7 events, 622 ms. It was fine. The zeros were mine.
Reproduced deliberately, same key, same relay, same minute:
five kinds asked concurrently, one socket each -> 0 0 0 0 0
five kinds asked in sequence on one socket -> 0 7 0 0 0
one filter listing all five kinds -> empty
A relay under too many concurrent subscriptions does not refuse. It answers empty. Which is the same shape as everything else that has caught me this week: the failure is silent and wears the costume of a real result. Except this one was worse, because that zero was about to be written down as a fact about someone else's infrastructure.
So the gate is now code, not a note to myself: the table runs twice and compares cell by cell, and exits non-zero rather than print a report when the runs disagree. 100 cells, both runs identical, before I would use it for anything.
The table itself, since it is the thing this thread produced:
https://blossom.primal.net/d4252bd3bc7ca5ae6bc157cf649268b2a1f6500c9706d0b72fcb5b1f2cce5eed.txt
The finding is that carriage is per kind, not per relay. Contacts are the worst carried: 8 of 20. Three relays serve notes and nothing else. And two relays return zero for everything, which is correct — they refused the writes on NIP-05 grounds, so that is refusal at write time, not loss at read time. A report that called them broken would have been wrong.