Big +1 from me.
Adding enough comments to the .proto files for them to basically become the spec in and of itself has been on my todo list for a while; I'm a big fan of putting docs as close to the relevant sources as possible, to minimize cross references and to promote actually updating the docs when something is changed. The more of the *actual* docs aka website that can be built from that, the better.
The same thing could be done with YAML, using a golden extension file that has a bit of everything as well as copious amounts of comments. That file could then be schema-validated as part of CI. I'd suggest using the schema file instead of an example, but I don't find jsonschema wrapped in YAML all that self-explanatory...
For the type expression grammar I've rabbit-holed my way into making a tool that converts as basic, formal, and descriptive as possible EBNF into ANTLR, something using nom (the de-facto standard for parsing in Rust), and maybe flex/bison for the hell of it, because otherwise I'm kind of stuck for validating those things. It and its docstrings could then be used similarly. (If I actually finish this it'll probably be a spinoff project like jdot aka jsom. If it's too ridiculous a sufficiently commented ANTLR grammar would suffice, too)
I think those things plus an explanation of the type system and a general overview could more or less cover the whole spec.