Celso and I discussed this in a recent meeting, but adding a bug so it can be tracked.
Currently the store queues reviews with the idea that if one review fails, then subsequent reviews will also fail, so it queues them such that if one fails, the review on the others is blocked. When a reviewer performs an action on the failed-review revision, then the next one is reviewed. This allows the reviewer to, for example, adjust the snap declaration such that all other reviews pass automated review. This is very helpful when a developer uploads the same package for 6 different architectures but it fails due to a missing snap declaration. The reviewer sees the failed review, issues a snap declaration, approves the snap and then the next arch is reviewed, it passes now because there is a snap declaration, and so on until all are unblocked.
The store process for rejecting revisions does not work in the same way because the store doesn't remember the results of the previous review so in the example of the 6 different archs failing in the same way, the reviewer needs to manually reject each of the 6 revisions. For something that uses LP for automatic uploads to edge, things get out of control fast (eg, https://myapps.developer.ubuntu.com/dev/click-apps/5873/) and 10s of failed revisions might queue up. What makes matters worse is that for large snaps, the reviewer has to wait 30 seconds or more for the review to finish.
Celso and I agreed that the store should store the results of (at least) the last click-review such that if the reviewer rejects a revision, then when the next revision is reviewed by the store, the results are compared. If they are the same, auto-reject this revision and move to the next. If they are different, block for human review again.
Also, I would like to request manually revoke all review request by the packager.