`absorb_buffered_inputs` is called even if the input buffer is empty. In that case it should no-op, but it was instead replenishing the output buffer because of this line:
self.output_buffer = self.sponge_state[0..SPONGE_RATE].to_vec();
Easiest fix is to skip that code if the input buffer is empty.