Pipeline.reduce implementations are expected to maintain a few columns through the reduce operation (e.g., the geometryColumn of type jts.Geometry, the keyColumn of type Array[SpatialKey]), but we don't check if that is the case. We can catch these types of errors early in the pipeline and deliver more meaningful error messages to aid pipeline debugging.