The hard part with these protocols is usually state, not packet formats. Does the spec cover initialization and feature negotiation across different firmware versions, or is that still inferred from one device’s traces?
Everything is inferred from device traces, and compared against known protocol implementations (ex USB - thanks to the openrazer project) - which AFAIK have remained pretty stable over the years.
So far, it's survived a few device firmware updates with no visible breaking changes, but I can't guarantee it always will.