But I assume some versioning of the implementation is also required, no? After all, your laptop may claim to implement USB3.0 but has a bug which is particular to this laptop version.
BTW, this form of versioning is common in the Java world where APIs are standardised in the form of JSRs. An application server implements multiple JSRs, so every application server version lists what particular JSR (spec) versions it implements.
So yes, you'll want (a) good tests and (b) patches for e.g. the USB3.0 implementation. (I realize that's not how it works for hardware, so it's an analogy). What you don't want is a new release that may change X things because you hit a bug in one specific contract.
The JSR reference is interesting, I wasn't aware of it. How well does it work, and what are the problems with it? I assume it gets complex in cases.
It works OK. It doesn't get too complicated because spec versions are updated only once every couple of years. So far, the standardized specs (JSRs) approach has worked quite well. Every standard (and there are a lot of them[1]) that is ever complete (many don't) usually has at least three implementations, so often there's plenty of choice.
BTW, this form of versioning is common in the Java world where APIs are standardised in the form of JSRs. An application server implements multiple JSRs, so every application server version lists what particular JSR (spec) versions it implements.