Hi all, While working on the implementation of metrics API in Spark runner the question of committed vs. attempted results has come up, sparking (no pun intended) an interesting conversation. (See API: MetricResult <https://github.com/apache/beam/blob/master/sdks/java/core/src/main/java/org/apache/beam/sdk/metrics/MetricResult.java> and discussion: PR #1750 <https://github.com/apache/beam/pull/1750>)
The separation of `attempted` and `committed` metric results seems a bit unclear. Seeing that current implementations of aggregators in the different runners do not guarantee correctness, one could assume that the metrics API implementations will also follow the same guarantees. If this is correct, then you could assume that only `attempted()` metrics results can be fulfilled. Would it then be better to just have a single method such as `get()` in the API, and have the guarantees of each runner explained in the capability matrix / documentation?