what is does is trying to skip articles that would expire anyway and do that in a sort of binary search method, so that the number articles to download is minimised. For a huge group like boneless with a retention of 100 days, downloading would take forever... and if the expire is set to 5 days, most of it would have to be discarded anyway.
the next should yield something like
223 66567098 <part43of235.tnIE5RqOqsAHbnBZpidfirstname.lastname@example.org> Article retrieved; request text separately.
apparently either the ng server is broken cq does not conform to the rfc. It's answer suggests that the ng is empty (which is unlikely in the case of boneless). No next actually sets an internal pointer on the server to the first valid article after the group command. The four minutes is not a good sign either. what does the LAST command give after a GROUP command?
I improved the timeout functions a bit (timeout is 15 secs by default) and made some cleanup in guess...() code which is still a bit messy ... but it should be more resilient to erros.