While I generally follow what you are talking about, I don't know the specifics as to possibly suggest a better method, but it is easy to obtain with workflow what you are wanting as far as blocking manual runner from opening based on criteria. I will explain the method for that then and you can see if that satisfies your need.
You will need to know the action names for manual runner. There are 3 that will be of impact. First is the ''Run'' button from the execution grid, second is the drop down for Run with Manual Runner, and third is ''Continue Manual Run'' for if a run was started but not finished (has a Not Completed status).
The action names for each of those are as follows:
1. ''Run'' button: *TestSetView.Run*
2. ''Run with Manual Runner'' drop down: *TestSetView.RunManaully*
3. ''Continue Manual Run'' drop down: *TestSetView.ContinueManualRun*
You will want to add your code to the Common script area, under the function ''ActionCanExecute(ActionName)''.
Example below blocks if a field (the 01) has Application Priority as the value, and the second field (02) has no value (nothing selected yet) then the manual runner cannot be executed:
If ActionName = ''TestSetView.RunManually'' then
If TestSetTest_Fields.Field(''TC_USER_02'').Value = '''' and TestSetTest_Fields.Field(''TC_USER_01'').Value = ''Application Priority'' then
msgbox ''Test Application Level requires a value before you can start the run''
ActionCanExecute = False
Can adopt for the other ActionNames, but you will want code in place for each scenario. The continue manual run ActionName might not be needed based on your criteria as it might already have the field value data in place given a run was already started.