all clear now. randomDensePack returns periodic packing (SpherePack.cellSize is set); that is not right. I fixed the problem in a9db3543, so you can either update (using woo -RR if you installed from git, or wait for the new package to be built), or work around the problem by adding
right before you call spheres.toSimulation(S).
What you see in the images is the periodic cell (in yellow), which is sligtly bigger (it is an internal detail of randomDensePack, the cell larger and then clipped to your predicate). Since your box is (-2,-2,-2),(2,2,2), spheres with negative coordinates wrap around and show on the top, that's the reason for 8 clusters, which are really just one. You can press 'a' in the 3d view to see axes; when you press 't' (to change perspective to orthographic) and then 'g', you will see the coordinate grid, that should make it clear what I meant.