Tracks whether normalized read batches have reached a reported tail and have
been delivered through that point.
Transport clients call observeBatch as soon as they decode a batch
or heartbeat. Delivery is a separate step: the returned boundary is marked
only after all preceding visible records have been consumed. Pending
caughtUp calls survive reconnects, while terminal states settle them.
Tracks whether normalized read batches have reached a reported tail and have been delivered through that point.
Transport clients call observeBatch as soon as they decode a batch or heartbeat. Delivery is a separate step: the returned boundary is marked only after all preceding visible records have been consumed. Pending caughtUp calls survive reconnects, while terminal states settle them.