This perhaps explains the reluctance to allow unfettered looping. On initial inspection, R3Alpha eventually returns TRUE for parse "" [while []]βit may be the unbreakable nature of Parse loops were already mitigated(?).
Well that has has been recently addressed, so in Ren-C you can break a forever [] (now CYCLE). You'd be able to break an infinite looping PARSE, too.
[] is a match on any input. And I'd like some [] to be an infinite loop.
I mention in my linked post that sometimes decaying to infinite loops is a feature...and here it certainly can be. Consider some [:(...)]. It may be that on one iteration it evaluates to null and hence vaporizes. But on the next pass it might evaluate to a rule which splices.
(Curiously, there's a difference between some [:(...)] and some :(...), because the first evaluates the group on each pass while the second evaluates just once. To understand why, see "When should parse rules notice changes?")
If you mix all that in with the desire to have any [... | end]not be an infinite loop, something has to give somewhere. But I think the "no progress" rule is the wrong answer.