As I understand it, the current tracing integration allows one to provide a function to get header data from input/output types, and these are added as attributes, following req.header.{Header-Name} or resp.header.{Header-Name}.
I'm not sure of the right way to do this, but it would be nice for it to be possible to attribute arbitrary information from input and output parameters.
The simplest thing that could possibly work might be two new parameters:
I => Seq[(String, AttributeValue)]
O => Seq[(String, AttributeValue)]
Does this then reduce the need for the header extractors? It is nice that they provide a standard format for header naming, but they duplicate this ability to some extent.