Currently, running a MetricTask may either return a Measurement, return None, or raise an exception (preferably MetricComputationError). More details can be found in the documentation.
I think we'll want to take a look at the expected-failure modes for MetricTasks you refer to in #3 as use cases for PipelineTasks in general, and define some rules that would allow them to work with generic activators. We've done a tiny bit of work in that area so far, but have long known that we need more sophistication in classifying and handling failures.
Depending on how much these rules change the existing behavior, we may need to change the implementation of every concrete MetricTask, so story points are hard to estimate.