Maybe it would be clearer to drop the comment and newline handling
stuff from the core requirement specifier syntax (declaring that
newlines are simply a syntax error), and assume that there's some
higher-level framing protocol taking care of that stuff?

that sounds right to me.

 
  https://gist.github.com/njsmith/ed74851c0311e858f0f7

(Nice to see Metadata-Version: 2.0 getting some real-world use! I
guess???

the use of 2.0 already is odd
see here for old discussion in the wheel tracker:  https://bitbucket.org/pypa/wheel/issues/96/metadata-version-20