well if you put in into an `assert` it's not called in production that is the purpose of `assertions`? I think we should call it at the bottom of the constructor and maybe in `iterator()` as well as `shards()`