But the code doesn't (and cant) account for any possible inaccurate readings from the water level sensor itself.
the Salinity probe seems stable enough from your graph, and is very clearly reacting to an abrupt change in salinity at each 12hr mark, and then holding there with the new reading until the next event.
At this point, based on all evidence you have provided, the Water level probe seem to be the possible weak link, since that one sensor dictates when and how much fresh waster to add.
I say this, because I run 4 nano tanks here at the office; a 5-gallon, a 10-galloon , 15-gallon and a 12 gallon shallow tank, that each have their own ATO controller, but share the same fresh water reservoir. Its incurably hard to get the salinity on these to move even a point. I have had the ATO run dry over night and walked into the office with them all blowing bubble - check salinity, its maybe deviated less than 0.025 from where it should be.
This here may also be hiding this potential issue. if you are making the RODI water as its being added to the tank, you have no way of knowing exactly how much as been added. If for instance you stored your RODI in a reservoir, you could easily see how much water was added in any given period