Replay required every restored record to carry a string `type`, and
stored records do not have one: an AIS entry holds mmsi, lat, lon,
crc_ok and its decoder's own fields, nothing more. The filter therefore
discarded all of them, and did it silently — the fetch returned its full
payload, the worker decoded it, and no error was logged, so the history
simply never appeared.
That field identifies live SSE frames, which do carry it, which is why
only replay was affected. History arrives already grouped and the
group's kind is delivered alongside the messages, so `type` was never
needed to route them. Require only that a record is an object.
Confirmed against a live server: the first restored group is AIS, and
its records expose their decoder fields with `type` undefined.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GdyUjuXejCEfiub675z6cz
Signed-off-by: Stan Grams <sjg@haxx.space>