Today we have a ResultContext which simply has two public variables query and docList. For writing a response, those fields are used to create a DocsStreamer which creates a TransformContext for transformers (which just copies the values like searcher, req, q, etc again).
It seems the all the methods on TransformContext could be simply moved to ResultContext.
Only exception is "iterator" needed by ScoreAugmenter, but we could simply pass down the score in the transform() method as well.
This would result in a ResultContext that could do things like support multiple queries with different return fields, and things like returning a list of docs from another core (think cross-core join).