another approach here would be something like:

```scala
val partialSum: Iterator[Either[E, O]] = oi.grouped(100).flatMap { s =>
  Semigroup.sumOption(s)
}
.map { right =>
  if(mustConvert(right)) Left(convert(right)) else Right(right)
}
```
now recursively do the above until the first item is Left or there is only one item.

Something like this allows us to compose with sumOption, which might be a big deal with underlying optimizations on the Right side.