replace ev_db with DbRequestQueue: route all DB from Evented through pool_io
the Evented pg.Pool (ev_db) approach was broken — io_uring netLookup is
unimplemented upstream, so no DNS and no outbound TCP from Evented fibers.
this replaces ev_db with a DbRequestQueue (MPSC FIFO ring buffer) that
routes general DB traffic through pool_io (Threaded) worker threads:
- add DbRequest + DbRequestQueue to event_log.zig (4096-slot ring,
spinlock push, CAS pop, 2 worker threads)
- convert xrpc/admin handlers to typed DbRequest structs with
@fieldParentPtr callbacks that write JSON into stack buffers
- convert slurper: pullHosts on own std.Thread (parallel with
spawnWorkers), addHost phased (DB via queue, HTTP via temp thread)
- convert broadcaster firstSeq to DbRequest
- convert backfiller/cleaner from Io.Future to std.Thread + direct
persist.db access, with cooperative shutdown checks
- remove all *Ev methods and ev_db infrastructure from DiskPersist
- explicit join paths for backfiller/cleaner/db-workers on shutdown
DbRequest.wait() never returns before done — preserves stack lifetime
of caller-embedded request structs during shutdown drain.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>