Excellent questions.
Our idea with the tag format is that it should be human friendly, including allowing you to compose a message by hand or using UNIX filters (
http://en.wikipedia.org/wiki/Filter_(Unix)), at the potential expense of parsing overhead. Unlike FIX Tag/Value, Blink Tag is not an all purpose format. As an implementor, this means you should not spend too much time optimizing the parser. We may have missed out on workflows where there is a need for a higher performant tagged text format, so please challenge our idea of what the format is for. On the other hand, the techniques used in a highly optimized FIX tag parser dealing with free order could be reapplied here.
David will have to answer in more detail, but I would reason that:
1. this is an error, but you are going to want to be able to discard extraneous data. To make the parsing task clean and to avoid having to introduce a relaxed mode like you suggest, the question of discarding extraneous fields could potentially be moved to the schema level. If you want to accept the data, you would then have to add the field as being optional in the schema and then decide on the application level what to do with this data.
2. this is an error or we would have to define default values in Blink, making the distinction between mandatory and optional fuzzy and not making every word tell. There is a better solution - if you really want to accept missing data, let that view be reflected by your schema.