The division of responsibility between adaptor and agent for managing offsets, datatypes, and such has gotten quite squirrely. And the comments don't match the code.
For instance, the adaptors track last offset. This means that checkpoint files include the last byte enqueued to be SENT, rather than the last byte ACKNOWLEDGED. This violates both the spec and the comments.
I propose that we make the agent responsible for recording offsets and possibly also datatypes. Are there cases where an Adaptor decides on its own what the Datatype is for the chunks it outputs? Or outputs chunks of different Types?