Ingest for logs from the game client, and the policy that tells a client what to send.
Optional auth, deliberately. The entries worth having most are the ones from
before a client has a token — a failed login, a boot that never got as far as
the network — and requiring a bearer token would drop exactly those. A batch
from an authenticated caller is bound to that user; an anonymous one is bound
to its device, and adopted by the user when the same run signs in. See
Gamend.ClientLogs.
Transport
HTTP rather than the user channel the client already holds open, because the interesting failures are the ones where that channel is down. A batch that can only be delivered over a working socket is a batch that cannot explain a broken one.