As the question indicates. Should this not be default false? I think this is a bit nefarious to someone launching their application into production without testing it extensively around failure modes. I can see a scenario where a consumer polls for events, processes them, produces to output topic, and commits the offsets. Say it takes 30 seconds for a batch. If it fails halfway through, upon restarting it will skip everything that was unprocessed/unpublished up to the committed offset.
Is there a historic reason why it's set to default true? Is it because to change it to default false it could affect the upgrade path of previous implementations? Adam