ElementConsumer has a capacityKG member that is intended to limit how much of the storage it uses to consume elements. However, this member is never read, so the storage capacity itself can be exceeded by the ElementConsumer.
This comes into play with CO2 scrubbers, which use the default storage capacity of 2000 kg, but have an ElementConsumer for CO2 with capacityKG set to 5kg. Because it never limits its CO2 intake, once it has stored more than 2000 kg of CO2, the ConduitConsumer component respects the storage limitation and stops taking in water, which prevents the scrubber's ElementConverter from converting.
I believe this could be at least approximately fixed in the AddMassInternal method by checking for the current amount of storage used by the consumed element after calling storage.AddLiquid or storage.AddGas; if storage is met or exceeded, EnableConsumption(false) could be called.
There is also a separate bug that contributes to this where the scrubber randomly performs at 2/3rds efficiency periodically for no discernible reason, but I'm still investigating why that occurs.
I've attached my save file, which contains two scrubbers, one of which has already exceeded capacity (currently at 3041.5 kg), and the other of which is relatively close (1666.4 kg).
Steps to Reproduce
Make a CO2 Scrubber (I made one in an enclosed room with an atmo switch limiting it to running when pressure was above 1000g) Pump CO2 into the room via gas vent Let it run for a long time Observe stored CO2 endlessly accumulating Observe conversion cease once stored CO2 exceeds 2000kg
This issue has been fixed in either a future version or updated in a previous version.