@jeffkaufman 
I have been thinking about your questions & scenarios:

It seems we are up for potential trouble/confusion in three places:
- 1) From your A scenario: We need to figure out how we should handle headers that are unset by modules running before us, when PSOL wants to set it.
- 2) From your B scenario: Header filters running after us can't act upon headers we will emit, because we do that too late.
- 3) From your B scenario: Header filters running after us can update/append/delete headers which won't be visible to PSOL

A few thoughts:

- On 1): Perhaps we should make our behaviour for 1) configurable? So users can choose wether PSOL will enforce its computed headers, or skip setting headers that where unset before they were sent into pagespeed. Would it make sense if we could forward the fact that a header is unset into PSOL (make `ResponseHeaders` aware of that?)?  I don't think ATS/IIS have this concept of headers being "unset", does Apache?
- On 2): I think we can minimize this by emitting preliminary response headers earlier. Are there other filters then convert_meta_tags that will change headers late in the process? 
- On 3): Configuration again? I'm not sure if there is a right thing to do here. 

What do you think?