My assertion is that LoadReferenceObjects has no natural dominant entry point. It offers multiple region shapes that you can load, with the potential to add more if wanted. To make code readable it is important that the shape being loaded be explicitly specified, rather than using a vague term like run and forcing readers (and writers) of the code to look up what shape that happens to load.
Again...most of the time a task will have one dominant entry point and calling it run is fine. I just think there are natural exceptions that we should allow. Especially since Task is a very generally useful class.
In addition, I feel we lose some readability by mandating run for the primary method I prefer a more descriptive verb, if there is one.
I want our code to be as readable as possible. Readability trumps writability because code that is hard to read is hard to understand and hard to maintain. In addition, a coder has to read the task docs in order to call a task. Finding the desired method should never take more than a few seconds (we have a standard doc section describing how to call a task); the hard part is understanding the arguments.
Note that I am in full agreement with using runDataRef as a required method name for CmdLineTask. By definition command-line tasks must have a method that is called when the task is run from the command line, and it should have a standard name for many reasons.
I'm not sure how a run method with a Task-specific list of arguments is "uniform", but I generally agree with the thinking behind this. It seems based on a quick sample that most plain Task s are OK; CmdLineTask s may need to change from run/other name to runDataRef/run, and pipe.base.TaskRunner needs to change as you mention (along with the documentation).