compute

Runs providers against graph, assembling each provider's raw contribution into a CustomMetric. Providers are processed in order; a blank id, an id already emitted, or a provider that throws is recorded in CustomMetricReport.providerFailures and skipped.