It's important for reseq to be able to process its input correctly, even if that output came from a different version of teseq than reseq is familiar with. So, it's important that reseq should refuse to continue processing input if it encounters a line that it doesn't recognize, but which might contain important semantic information that effects the output reseq should produce.
At the same time, it'd be a shame for reseq to refuse to process a line it doesn't understand, if that line contains non-critical information. For example, consider delay lines (beginning with ‘@’. The delay line holds semantic information, to be sure; but not information that would affect reseq's normal operation (it only has meaning when one of the --timings or --replay options has been specified). So, if an older version of reseq had existed that did not recognize them, it would have been a shame if its introduction in the newer release had caused the older version to refuse to process it.
To address both of these concerns, reseq has taken the approach of reserving certain prefixes for use as “semantically significant” line prefixes, and others for use in lines that reseq can safely ignore. A line that begins with any of the following characters, will cause reseq to halt processing and exit with an error.
The idea is that these prefixes are reserved for future use in lines that reseq must understand in order to produce correct results.
This leaves all remaining characters free for use in specifying future teseq output lines that do not affect processing for older reseqs. Note that they are still reserved for teseq, and are not intended for users to insert commentary or such. However, teseq will never use a line beginning with the space character; and reseq will always ignore such lines, so the space character may be used to indicate user comments.