fix batch delivery semantics and update smoke tests
ingester: retain failed buffers for retry instead of dropping them.
cursor only advances after both ingest and delete batches succeed.
backlog overflow cap (5000 events) prevents unbounded memory growth
when D1 is persistently unavailable.
cursor fetch retries 3 times with backoff (1s, 3s, 10s) before
falling back to live.
smoke tests: empty query now expects 400 (not 200), added test for
limit>100 returning 400.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>