I can’t see a way to do that in the general case with only perspective rules.
There is the ‘Has an active project which has no remaining actions’ rule which has traditionally been used to create a ‘stalled projects’ perspective, but this is in the GTD sense of a project containing only completed tasks and needing at least one ‘next action’ to keep things moving. Projects with remaining but unavailable actions are not matched by this rule.
If you never use action groups, you can get the desired result using an ‘Entire Projects’ perspective with ‘Has a project which is active’, Remaining’, and ‘None(Available)’. Action groups will pollute it since many of them will be unavailable simply because they contain available actions.
If an ‘Is a project’ rule existed (in addition to the current ‘Is not a project or group’), it would solve that problem.