I've recently switched on 3D carpetIOHDF5 output when restarting from a checkpoint which was not a multiple of carpetiohdf5::out_every, which in turn corresponds to a multiple of the coarsest timestep. In the resulting files, all but the finest levels where missing. I realized that instead of Carpetiohdf5::out_criterion = divisor I have used Carpetiohdf5::out3D_criterion = divisor A quick grep in the source code resulted in no match for the latter parameter, it seems completely unused. Thus, Carpet was probably using the default for out_criterion, which is "default", which means use IO:out3D_criterion, which was not set, defaulting to "iteration". Now, according to this closed issue https://trac.einsteintoolkit.org/ticket/1053 that should still work as intended. I suppose the problem here is that the 3d output was not activated in previous restarts, so there was no last output time when restarting, and it outputs every so many iterations after the checkpoint.
This occurred with the Wheeler release, I have not checked the newest release yet.