This is the first in a series of MRs related to !10000 and #22736 . Instead of merging that MR first we decided to split the DSL, isolate the binary and outputable instances (so the codegen) to a new IR that does not have the concept of Saturation. This is all in an effort implement the GHCJS optimizer in a safer maintainable way. See #22736 for the rest of the roadmap.