This is intentionally narrower than the generic combinators typeclasses: it handles the domain rule that the first orOutError replaces the initial Unit error channel, while subsequent calls build fallback codecs backed by Scala 3 union derivation from zio.blocks.combinators.Unions.